> Date: Wed, 13 Mar 2013 11:52:48 -0700
> From: Ian Lance Taylor <i...@google.com>
> Cc: gdb-patc...@sourceware.org, d...@redhat.com, gcc-patches@gcc.gnu.org
> 
> On 3/13/13, Eli Zaretskii <e...@gnu.org> wrote:
> >
> >      #ifdef __MSVCRT__
> >        extern _CRTIMP char *** __cdecl __MINGW_NOTHROW __p__environ(void);
> >        extern _CRTIMP wchar_t *** __cdecl __MINGW_NOTHROW
> > __p__wenviron(void);
> >      # define _environ (*__p__environ())
> >      # define _wenviron (*__p__wenviron())
> >      #else /* ! __MSVCRT__ */
> >      #endif /* ! __MSVCRT__ */
> >
> >      #define environ _environ
> 
> Cool.
> 
> >    and setenv.c does this:
> >
> >      #ifndef HAVE_ENVIRON_DECL
> >      extern char **environ;
> >      #endif
> >
> >    Solution: Add a guard:
> 
> This is OK with a ChangeLog entry.

Thanks, committed thusly:

2013-03-17  Eli Zaretskii  <e...@gnu.org>

        * setenv.c [!HAVE_ENVIRON_DECL]: Avoid declaring environ if it is
        a macro, as this causes compiler warnings with MinGW.

Index: libiberty/setenv.c
===================================================================
RCS file: /cvs/src/src/libiberty/setenv.c,v
retrieving revision 1.10
diff -u -r1.10 setenv.c
--- libiberty/setenv.c  3 Feb 2011 07:23:59 -0000       1.10
+++ libiberty/setenv.c  17 Mar 2013 19:03:07 -0000
@@ -63,8 +63,11 @@
 
 #define __environ      environ
 #ifndef HAVE_ENVIRON_DECL
+/* MinGW defines environ to call a function.  */
+#ifndef environ
 extern char **environ;
 #endif
+#endif
 
 #undef setenv
 #undef unsetenv

Reply via email to