Fix a MinGW warning in libiberty/strerror.c

Message ID 831tndbgg8.fsf@gnu.org
State New, archived
Headers

Commit Message

Eli Zaretskii Jan. 2, 2015, 10:54 a.m. UTC
  When compiling GDB 7.8.1, I get this warning in libiberty:

     gcc -c -DHAVE_CONFIG_H -O0 -g3 -D__USE_MINGW_ACCESS  -I. -I./../include  -W -Wall -Wwrite-strings -Wc++-compat -Wstrict-prototypes -pedantic  ./strerror.c -o strerror.o
     ./strerror.c:472:12: warning: '_sys_nerr' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
     ./strerror.c:473:14: warning: '_sys_errlist' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]

This happens because the MinGW system headers have some special magic
for these variables, which are imported from a system shared library.

The solution I propose is to refrain from declaring variables that are
actually macros, because this should be a sign that something tricky
is going on:


OK to commit this (with a suitable ChangeLog entry)?
  

Comments

Eli Zaretskii Jan. 16, 2015, 11:18 a.m. UTC | #1
Ping!

> Date: Fri, 02 Jan 2015 12:54:47 +0200
> From: Eli Zaretskii <eliz@gnu.org>
> 
> When compiling GDB 7.8.1, I get this warning in libiberty:
> 
>      gcc -c -DHAVE_CONFIG_H -O0 -g3 -D__USE_MINGW_ACCESS  -I. -I./../include  -W -Wall -Wwrite-strings -Wc++-compat -Wstrict-prototypes -pedantic  ./strerror.c -o strerror.o
>      ./strerror.c:472:12: warning: '_sys_nerr' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
>      ./strerror.c:473:14: warning: '_sys_errlist' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
> 
> This happens because the MinGW system headers have some special magic
> for these variables, which are imported from a system shared library.
> 
> The solution I propose is to refrain from declaring variables that are
> actually macros, because this should be a sign that something tricky
> is going on:
> 
> --- libiberty/strerror.c~0	2014-06-11 18:34:41 +0300
> +++ libiberty/strerror.c	2014-12-30 08:12:00 +0200
> @@ -469,8 +469,13 @@
>  
>  #else
>  
> +
> +#ifndef sys_nerr
>  extern int sys_nerr;
> +#endif
> +#ifndef sys_errlist
>  extern char *sys_errlist[];
> +#endif
>  
>  #endif
>  
> 
> OK to commit this (with a suitable ChangeLog entry)?
>
  
Kai Tietz Jan. 16, 2015, 11:34 a.m. UTC | #2
Hi Eli,

patch is reasonable and ok for me.

Thanks
Kai

2015-01-16 12:18 GMT+01:00 Eli Zaretskii <eliz@gnu.org>:
> Ping!
>
>> Date: Fri, 02 Jan 2015 12:54:47 +0200
>> From: Eli Zaretskii <eliz@gnu.org>
>>
>> When compiling GDB 7.8.1, I get this warning in libiberty:
>>
>>      gcc -c -DHAVE_CONFIG_H -O0 -g3 -D__USE_MINGW_ACCESS  -I. -I./../include  -W -Wall -Wwrite-strings -Wc++-compat -Wstrict-prototypes -pedantic  ./strerror.c -o strerror.o
>>      ./strerror.c:472:12: warning: '_sys_nerr' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
>>      ./strerror.c:473:14: warning: '_sys_errlist' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
>>
>> This happens because the MinGW system headers have some special magic
>> for these variables, which are imported from a system shared library.
>>
>> The solution I propose is to refrain from declaring variables that are
>> actually macros, because this should be a sign that something tricky
>> is going on:
>>
>> --- libiberty/strerror.c~0    2014-06-11 18:34:41 +0300
>> +++ libiberty/strerror.c      2014-12-30 08:12:00 +0200
>> @@ -469,8 +469,13 @@
>>
>>  #else
>>
>> +
>> +#ifndef sys_nerr
>>  extern int sys_nerr;
>> +#endif
>> +#ifndef sys_errlist
>>  extern char *sys_errlist[];
>> +#endif
>>
>>  #endif
>>
>>
>> OK to commit this (with a suitable ChangeLog entry)?
>>
  
Eli Zaretskii Jan. 16, 2015, 11:50 a.m. UTC | #3
> Date: Fri, 16 Jan 2015 12:34:25 +0100
> From: Kai Tietz <ktietz70@googlemail.com>
> Cc: GCC Patches <gcc-patches@gcc.gnu.org>, 
> 	"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
> 
> Hi Eli,
> 
> patch is reasonable and ok for me.

Thanks.  Do I need to hear from someone else approving this, or can I
go ahead and commit?
  
Kai Tietz Jan. 16, 2015, 11:56 a.m. UTC | #4
2015-01-16 12:50 GMT+01:00 Eli Zaretskii <eliz@gnu.org>:
>> Date: Fri, 16 Jan 2015 12:34:25 +0100
>> From: Kai Tietz <ktietz70@googlemail.com>
>> Cc: GCC Patches <gcc-patches@gcc.gnu.org>,
>>       "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
>>
>> Hi Eli,
>>
>> patch is reasonable and ok for me.
>
> Thanks.  Do I need to hear from someone else approving this, or can I
> go ahead and commit?

Well, from POV of the Windows-maintainer in gcc, the patch is ok.  As
libiberty is shared with other ventures, you might want to get an ok
by other ventures, too.

I would say, as long as there are no objections - and there weren't
any now for some time this patch waiting for comments - I would go
ahead and say patch is ok.

Regards,
Kai
  
DJ Delorie Jan. 16, 2015, 9:39 p.m. UTC | #5
> Thanks.  Do I need to hear from someone else approving this, or can I
> go ahead and commit?

Go ahead and commit.
  
Eli Zaretskii Jan. 17, 2015, 9:44 a.m. UTC | #6
> Date: Fri, 16 Jan 2015 16:39:20 -0500
> From: DJ Delorie <dj@redhat.com>
> CC: ktietz70@googlemail.com, gcc-patches@gcc.gnu.org,
>         gdb-patches@sourceware.org
> 
> 
> > Thanks.  Do I need to hear from someone else approving this, or can I
> > go ahead and commit?
> 
> Go ahead and commit.

Thanks.

Last-minute thought, in case I'm confused: you mean commit to the
sourceware Git repo, right?  If not, where?
  

Patch

--- libiberty/strerror.c~0	2014-06-11 18:34:41 +0300
+++ libiberty/strerror.c	2014-12-30 08:12:00 +0200
@@ -469,8 +469,13 @@ 
 
 #else
 
+
+#ifndef sys_nerr
 extern int sys_nerr;
+#endif
+#ifndef sys_errlist
 extern char *sys_errlist[];
+#endif
 
 #endif