diff options
author | Janne Blomqvist <jb@gcc.gnu.org> | 2017-05-11 23:04:53 +0300 |
---|---|---|
committer | Janne Blomqvist <jb@gcc.gnu.org> | 2017-05-11 23:04:53 +0300 |
commit | d86e68e2078bb59e4f4c2c73cd111f8fd509bea4 (patch) | |
tree | cb9fc3d50011847480cbd27facb04872dc66048d /libgfortran/libgfortran.h | |
parent | ea594612f0478c4307b09704e902da89370a1482 (diff) | |
download | gcc-d86e68e2078bb59e4f4c2c73cd111f8fd509bea4.zip gcc-d86e68e2078bb59e4f4c2c73cd111f8fd509bea4.tar.gz gcc-d86e68e2078bb59e4f4c2c73cd111f8fd509bea4.tar.bz2 |
Don't assume __secure_getenv is available
Glibc 2.17 made __secure_getenv an officially supported function, and
renamed it secure_getenv. The libgfortran configure has checked for
both of these, per
https://sourceware.org/glibc/wiki/Tips_and_Tricks/secure_getenv.
Unfortunately, while the dynamical library (libc.so) retains the
__secure_getenv symbol for backwards compatibility, the static library
(libc.a) does not. This means that a libgfortran.a compiled against an
older glibc will not work if one tries to link against a newer
libc.a. This creates problems for providing gfortran binary
distributions that work on as many target systems as possible.
Thus, retain the support for __secure_getenv but call it only via a
weak reference.
Regtested on x86_64-pc-linux-gnu.
2017-05-11 Janne Blomqvist <jb@gcc.gnu.org>
* libgfortran.h: HAVE_SECURE_GETENV: Don't check
HAVE___SECURE_GETENV.
* environ/runtime.c (secure_getenv): Use __secure_getenv via a
weak reference.
From-SVN: r247927
Diffstat (limited to 'libgfortran/libgfortran.h')
-rw-r--r-- | libgfortran/libgfortran.h | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/libgfortran/libgfortran.h b/libgfortran/libgfortran.h index cfa4fcf..9d9d117 100644 --- a/libgfortran/libgfortran.h +++ b/libgfortran/libgfortran.h @@ -808,9 +808,7 @@ internal_proto(get_unformatted_convert); /* Secure getenv() which returns NULL if running as SUID/SGID. */ #ifndef HAVE_SECURE_GETENV -#ifdef HAVE___SECURE_GETENV -#define secure_getenv __secure_getenv -#elif defined(HAVE_GETUID) && defined(HAVE_GETEUID) \ +#if defined(HAVE_GETUID) && defined(HAVE_GETEUID) \ && defined(HAVE_GETGID) && defined(HAVE_GETEGID) #define FALLBACK_SECURE_GETENV extern char *secure_getenv (const char *); |