Don't assume __secure_getenv is available
authorJanne Blomqvist <jb@gcc.gnu.org>
Thu, 11 May 2017 20:04:53 +0000 (23:04 +0300)
committerJanne Blomqvist <jb@gcc.gnu.org>
Thu, 11 May 2017 20:04:53 +0000 (23:04 +0300)
commitd86e68e2078bb59e4f4c2c73cd111f8fd509bea4
treecb9fc3d50011847480cbd27facb04872dc66048d
parentea594612f0478c4307b09704e902da89370a1482
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
libgfortran/ChangeLog
libgfortran/libgfortran.h
libgfortran/runtime/environ.c