I get this compiling the latest pretest of GDB 7.6 with MinGW: gcc -c -DHAVE_CONFIG_H -O2 -gdwarf-2 -g3 -D__USE_MINGW_ACCESS -I. -I./../include -W -Wall -Wwrite-strings -Wc++-compat -Wstrict-prototypes -pedantic ./setenv.c -o setenv.o ./setenv.c:66:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]
This happens because MinGW's stdlib.h has this: #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 and setenv.c does this: #ifndef HAVE_ENVIRON_DECL extern char **environ; #endif Solution: Add a guard: --- libiberty/setenv.c~ 2011-02-03 09:23:59.000000000 +0200 +++ libiberty/setenv.c 2013-03-13 13:22:49.085187200 +0200 @@ -63,8 +63,10 @@ #define __environ environ #ifndef HAVE_ENVIRON_DECL +#ifndef environ extern char **environ; #endif +#endif OK to commit (with a suitable ChangeLog entry)?