about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog32
-rw-r--r--config.h.in4
-rw-r--r--include/assert.h2
-rw-r--r--include/dirent.h2
-rw-r--r--include/libc-internal.h2
-rw-r--r--include/libc-symbols.h2
-rw-r--r--include/setjmp.h2
-rw-r--r--include/signal.h2
-rw-r--r--include/stdlib.h2
-rw-r--r--include/string.h2
-rw-r--r--include/sys/stat.h4
-rw-r--r--include/sys/utsname.h2
-rw-r--r--sysdeps/generic/_itoa.h2
-rw-r--r--sysdeps/mach/hurd/configure2
-rw-r--r--sysdeps/mach/hurd/configure.ac2
15 files changed, 50 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index a43569336d..9cbff977ed 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,35 @@
+2017-10-03  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+	* include/libc-symbols.h [NO_RTLD_HIDDEN] (rtld_hidden_proto,
+	rtld_hidden_tls_proto, rtld_hidden_def, rtld_hidden_weak,
+	rtld_hidden_rtld_hidden_ver, data_def, rtld_hidden_data_weak,
+	rtld_hidden_data_ver): Define to empty.
+	* include/assert.h [IS_IN(rtld) && NO_RTLD_HIDDEN] (__assert_fail,
+	__assert_perror_fail): Likewise.
+	* include/dirent.h [IS_IN(rtld) && NO_RTLD_HIDDEN]
+	(__rewinddir): Likewise.
+	* include/libc-internal.h [IS_IN(rtld) && NO_RTLD_HIDDEN]
+	(__profile_frequency): Likewise.
+	* include/setjmp.h (__sigsetjmp): Likewise.
+	* include/signal.h [IS_IN(rtld) && NO_RTLD_HIDDEN] (__sigaction,
+	__libc_sigaction): Likewise.
+	* include/stdlib.h [NO_RTLD_HIDDEN] (unsetenv, __strtoul_internal): Do
+	not set hidden attribute.
+	* include/string.h [IS_IN(rtld) && NO_RTLD_HIDDEN] (__stpcpy, __strdup,
+	__strerror_t, __strsep_g, memchr, memcmp, memcpy, memmove, memset,
+	rawmemchr, stpcpy, strchr, strcmp, strlen, strnlen, strsep): Likewise.
+	* include/sys/stat.h [IS_IN(rtld) && NO_RTLD_HIDDEN] (__fxstat,
+	__fxstat64, __lxstat, __lxstat64, __xstat, __xstat64,
+	__fxstatat64): Likewise.
+	* include/sys/utsname.h [IS_IN(rtld) && NO_RTLD_HIDDEN]
+	(__uname): Likewise.
+	* include/sysdeps/generic/_itoa.h [IS_IN(rtld) && NO_RTLD_HIDDEN]
+	(_itoa_upper_digits, _itoa_lower_digits): Likewise.
+	* sysdeps/mach/hurd/configure.ac (NO_HIDDEN): Do not set.
+	(NO_RTLD_HIDDEN): Set.
+	* sysdeps/mach/hurd/configure: Refresh.
+	* config.h.in: Refresh.
+
 2017-10-02  Joseph Myers  <joseph@codesourcery.com>
 
 	* sysdeps/ieee754/dbl-64/s_atan.c: Include <libm-alias-double.h>.
diff --git a/config.h.in b/config.h.in
index 014fb4ea0e..0d38476fa4 100644
--- a/config.h.in
+++ b/config.h.in
@@ -89,6 +89,10 @@
    include/libc-symbols.h that avoid PLT slots in the shared objects.  */
 #undef	NO_HIDDEN
 
+/* Define this to disable in rtld the 'hidden_proto' et al macros in
+   include/libc-symbols.h that avoid PLT slots in the shared objects.  */
+#undef	NO_RTLD_HIDDEN
+
 /* Define this to disable lazy relocations in DSOs.  */
 #undef	BIND_NOW
 
diff --git a/include/assert.h b/include/assert.h
index c0f7e1a91c..61cc8aa22f 100644
--- a/include/assert.h
+++ b/include/assert.h
@@ -20,7 +20,7 @@ extern void __assert_fail_base (const char *fmt, const char *assertion,
 				const char *function)
      __THROW  __attribute__ ((__noreturn__)) attribute_hidden;
 
-# if IS_IN (libc) || IS_IN (rtld)
+# if IS_IN (libc) || (IS_IN (rtld) && !defined NO_RTLD_HIDDEN)
 hidden_proto (__assert_fail)
 hidden_proto (__assert_perror_fail)
 # endif
diff --git a/include/dirent.h b/include/dirent.h
index 6fcc2f391b..caaeb0be85 100644
--- a/include/dirent.h
+++ b/include/dirent.h
@@ -77,7 +77,7 @@ extern __typeof (scandirat) __scandirat;
 libc_hidden_proto (__scandirat)
 libc_hidden_proto (scandirat64)
 
-#  if IS_IN (rtld)
+#  if IS_IN (rtld) && !defined NO_RTLD_HIDDEN
 extern __typeof (__rewinddir) __rewinddir attribute_hidden;
 #  endif
 # endif
diff --git a/include/libc-internal.h b/include/libc-internal.h
index 7403c24e25..69cd781aee 100644
--- a/include/libc-internal.h
+++ b/include/libc-internal.h
@@ -49,7 +49,7 @@ extern void __libc_thread_freeres (void);
 /* Define and initialize `__progname' et. al.  */
 extern void __init_misc (int, char **, char **) attribute_hidden;
 
-# if IS_IN (rtld)
+# if IS_IN (rtld) && !defined NO_RTLD_HIDDEN
 extern __typeof (__profile_frequency) __profile_frequency attribute_hidden;
 # endif
 
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index 10fd2063b0..e0d4dc3170 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -558,7 +558,7 @@ for linking")
 # define libc_hidden_data_ver(local, name)
 #endif
 
-#if IS_IN (rtld)
+#if IS_IN (rtld) && !defined NO_RTLD_HIDDEN
 # define rtld_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
 # define rtld_hidden_tls_proto(name, attrs...) hidden_tls_proto (name, ##attrs)
 # define rtld_hidden_def(name) hidden_def (name)
diff --git a/include/setjmp.h b/include/setjmp.h
index e45328b18a..c234287515 100644
--- a/include/setjmp.h
+++ b/include/setjmp.h
@@ -28,7 +28,7 @@ libc_hidden_proto (__libc_longjmp)
 libc_hidden_proto (_setjmp)
 libc_hidden_proto (__sigsetjmp)
 
-# if IS_IN (rtld)
+# if IS_IN (rtld) && !defined NO_RTLD_HIDDEN
 extern __typeof (__sigsetjmp) __sigsetjmp attribute_hidden;
 # endif
 #endif
diff --git a/include/signal.h b/include/signal.h
index 7cbe64b8ad..293258ad65 100644
--- a/include/signal.h
+++ b/include/signal.h
@@ -54,7 +54,7 @@ extern int __xpg_sigpause (int sig);
 /* Allocate real-time signal with highest/lowest available priority.  */
 extern int __libc_allocate_rtsig (int __high);
 
-#  if IS_IN (rtld)
+#  if IS_IN (rtld) && !defined NO_RTLD_HIDDEN
 extern __typeof (__sigaction) __sigaction attribute_hidden;
 extern __typeof (__libc_sigaction) __libc_sigaction attribute_hidden;
 #  endif
diff --git a/include/stdlib.h b/include/stdlib.h
index c0fcb95777..5974fb3d24 100644
--- a/include/stdlib.h
+++ b/include/stdlib.h
@@ -294,7 +294,7 @@ struct abort_msg_s
 extern struct abort_msg_s *__abort_msg;
 libc_hidden_proto (__abort_msg)
 
-# if IS_IN (rtld)
+# if IS_IN (rtld) && !defined NO_RTLD_HIDDEN
 extern __typeof (unsetenv) unsetenv attribute_hidden;
 extern __typeof (__strtoul_internal) __strtoul_internal attribute_hidden;
 # endif
diff --git a/include/string.h b/include/string.h
index 968d6fea05..bb4922cbbe 100644
--- a/include/string.h
+++ b/include/string.h
@@ -143,7 +143,7 @@ libc_hidden_builtin_proto (strspn)
 libc_hidden_builtin_proto (strstr)
 libc_hidden_builtin_proto (ffs)
 
-#if IS_IN (rtld)
+#if IS_IN (rtld) && !defined NO_RTLD_HIDDEN
 extern __typeof (__stpcpy) __stpcpy attribute_hidden;
 extern __typeof (__strdup) __strdup attribute_hidden;
 extern __typeof (__strerror_r) __strerror_r attribute_hidden;
diff --git a/include/sys/stat.h b/include/sys/stat.h
index eb44754185..b82d452780 100644
--- a/include/sys/stat.h
+++ b/include/sys/stat.h
@@ -14,7 +14,7 @@ extern int __mkdir (const char *__path, __mode_t __mode);
 libc_hidden_proto (__mkdir)
 extern int __mknod (const char *__path,
 		    __mode_t __mode, __dev_t __dev);
-#if IS_IN (libc) || IS_IN (rtld)
+#if IS_IN (libc) || (IS_IN (rtld) && !defined NO_RTLD_HIDDEN)
 hidden_proto (__fxstat)
 hidden_proto (__fxstat64)
 hidden_proto (__lxstat)
@@ -37,7 +37,7 @@ libc_hidden_proto (__xmknodat)
 libc_hidden_proto (__fxstatat)
 libc_hidden_proto (__fxstatat64)
 
-# if IS_IN (rtld)
+# if IS_IN (rtld) && !defined NO_RTLD_HIDDEN
 extern __typeof (__fxstatat64) __fxstatat64 attribute_hidden;
 # endif
 
diff --git a/include/sys/utsname.h b/include/sys/utsname.h
index 14f4247dd4..9ed5fa2565 100644
--- a/include/sys/utsname.h
+++ b/include/sys/utsname.h
@@ -7,7 +7,7 @@ extern int __uname (struct utsname *__name);
 libc_hidden_proto (uname)
 libc_hidden_proto (__uname)
 
-# if IS_IN (rtld)
+# if IS_IN (rtld) && !defined NO_RTLD_HIDDEN
 extern __typeof (__uname) __uname attribute_hidden;
 # endif
 #endif
diff --git a/sysdeps/generic/_itoa.h b/sysdeps/generic/_itoa.h
index a065ecb890..6998c0859f 100644
--- a/sysdeps/generic/_itoa.h
+++ b/sysdeps/generic/_itoa.h
@@ -46,7 +46,7 @@ extern char *_itoa (unsigned long long int value, char *buflim,
 
 extern const char _itoa_upper_digits[];
 extern const char _itoa_lower_digits[];
-#if IS_IN (libc) || IS_IN (rtld)
+#if IS_IN (libc) || (IS_IN (rtld) && !defined NO_RTLD_HIDDEN)
 hidden_proto (_itoa_upper_digits)
 hidden_proto (_itoa_lower_digits)
 #endif
diff --git a/sysdeps/mach/hurd/configure b/sysdeps/mach/hurd/configure
index 163b5c7730..66cc0ce3a5 100644
--- a/sysdeps/mach/hurd/configure
+++ b/sysdeps/mach/hurd/configure
@@ -1,6 +1,6 @@
 # This file is generated from configure.ac by Autoconf.  DO NOT EDIT!
 
-$as_echo "#define NO_HIDDEN 1" >>confdefs.h
+$as_echo "#define NO_RTLD_HIDDEN 1" >>confdefs.h
 
 
 if test -n "$sysheaders"; then
diff --git a/sysdeps/mach/hurd/configure.ac b/sysdeps/mach/hurd/configure.ac
index 5539a8c8af..774ffc80a9 100644
--- a/sysdeps/mach/hurd/configure.ac
+++ b/sysdeps/mach/hurd/configure.ac
@@ -3,7 +3,7 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 dnl We need this setting because of the need for PLT calls in ld.so.
 dnl See Roland's comment in
 dnl https://sourceware.org/bugzilla/show_bug.cgi?id=15605
-AC_DEFINE([NO_HIDDEN])
+AC_DEFINE([NO_RTLD_HIDDEN])
 
 if test -n "$sysheaders"; then
   OLD_CPPFLAGS=$CPPFLAGS