From: Eli Zaretskii <eliz@gnu.org>
To: gcc-patches@gcc.gnu.org
Cc: gdb-patches@sourceware.org
Subject: MinGW compilation warnings in libiberty's include/environ.h
Date: Mon, 08 May 2017 15:25:00 -0000 [thread overview]
Message-ID: <83k25rcqw2.fsf@gnu.org> (raw)
When compiling libiberty (as part of GDB) with MinGW on MS-Windows, I
see the following warning:
gcc -c -DHAVE_CONFIG_H -O2 -gdwarf-4 -g3 -D__USE_MINGW_ACCESS -I. -I./../include -W -Wall -Wwrite-strings -Wc++-compat -Wstrict-prototypes -pedantic -D_GNU_SOURCE ./setenv.c -o setenv.o
In file included from ./setenv.c:64:0:
./../include/environ.h:30:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]
extern char **environ;
^
This was already reported 4 years ago, here:
https://gcc.gnu.org/ml/gcc-patches/2013-03/msg00471.html
and was solved back then. But it looks like the offending code was
copied to include/environ.h without the fix, and the warning is thus
back.
The problem is with this code in environ.h:
#ifndef HAVE_ENVIRON_DECL
# ifdef __APPLE__
# include <crt_externs.h>
# define environ (*_NSGetEnviron ())
# else
extern char **environ;
# endif
# define HAVE_ENVIRON_DECL
#endif
which causes the MinGW compiler to see the declaration of environ,
whereas MinGW's stdlib.h has this:
#ifdef __MSVCRT__
# define _environ (*__p__environ())
extern _CRTIMP __cdecl __MINGW_NOTHROW char ***__p__environ(void);
# define _wenviron (*__p__wenviron())
extern _CRTIMP __cdecl __MINGW_NOTHROW wchar_t ***__p__wenviron(void);
#else /* ! __MSVCRT__ */
# ifndef __DECLSPEC_SUPPORTED
# define _environ (*_imp___environ_dll)
extern char ***_imp___environ_dll;
# else /* __DECLSPEC_SUPPORTED */
# define _environ _environ_dll
__MINGW_IMPORT char ** _environ_dll;
# endif /* __DECLSPEC_SUPPORTED */
#endif /* ! __MSVCRT__ */
#define environ _environ
Can this be fixed again, please? The solution, as back then, is this:
#ifndef HAVE_ENVIRON_DECL
# ifdef __APPLE__
# include <crt_externs.h>
# define environ (*_NSGetEnviron ())
# else
# ifndef environ
extern char **environ;
# endif
# endif
# define HAVE_ENVIRON_DECL
#endif
Thanks.
next reply other threads:[~2017-05-08 15:25 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-08 15:25 Eli Zaretskii [this message]
2017-05-19 15:51 ` Pedro Alves
2017-05-19 17:31 ` Eli Zaretskii
2017-05-20 1:27 ` DJ Delorie
2017-05-22 17:45 ` Pedro Alves
2017-05-20 1:25 ` DJ Delorie
2017-05-20 6:13 ` Eli Zaretskii
2017-05-20 6:16 ` DJ Delorie
2017-05-20 7:49 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=83k25rcqw2.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=gcc-patches@gcc.gnu.org \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox