This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.26-494-g3d1870f


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  3d1870fa3301c5cd00d5fdab0014c4e22b71fef2 (commit)
      from  38722448c64682628244d285c1e30c8887a8c801 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=3d1870fa3301c5cd00d5fdab0014c4e22b71fef2

commit 3d1870fa3301c5cd00d5fdab0014c4e22b71fef2
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Tue Oct 3 01:26:58 2017 +0200

    Introduce NO_RTLD_HIDDEN, make hurd use it instead of NO_HIDDEN
    
    On the Hurd, the rtld needs to see its own dumb versions of a few functions
    (defined in sysdeps/mach/hurd/dl-sysdep.c) overridden by libc's versions once
    loaded. rtld should thus not have hidden attribute for these.  To achieve this,
    the Hurd port used to just define NO_HIDDEN, which disables it completely. For
    now, this changes that to disabling it for all rtld functions, for simplicity.
    
    See Roland's comment on https://sourceware.org/bugzilla/show_bug.cgi?id=15605#c5
    
    The ld.so numbers remain at
    
      8 .rel.plt      000000c8  00000c24  00000c24  00000c24  2**2
                      CONTENTS, ALLOC, LOAD, READONLY, DATA
      9 .plt          000001a0  00000cf0  00000cf0  00000cf0  2**4
                      CONTENTS, ALLOC, LOAD, READONLY, CODE
     10 .plt.got      00000010  00000e90  00000e90  00000e90  2**3
                      CONTENTS, ALLOC, LOAD, READONLY, CODE
     18 .got.plt      00000070  0002d000  0002d000  0002c000  2**2
                      CONTENTS, ALLOC, LOAD, DATA
    
    which is about 3 times as much as on Linux.
    
    The libc.so numbers get divided by 3 (the remainings are mostly RPC stub calls)
    
    	* 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.

diff --git a/ChangeLog b/ChangeLog
index a435693..9cbff97 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 014fb4e..0d38476 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 c0f7e1a..61cc8aa 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 6fcc2f3..caaeb0b 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 7403c24..69cd781 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 10fd206..e0d4dc3 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 e45328b..c234287 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 7cbe64b..293258a 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 c0fcb95..5974fb3 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 968d6fe..bb4922c 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 eb44754..b82d452 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 14f4247..9ed5fa2 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 a065ecb..6998c08 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 163b5c7..66cc0ce 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 5539a8c..774ffc8 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

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                      |   32 ++++++++++++++++++++++++++++++++
 config.h.in                    |    4 ++++
 include/assert.h               |    2 +-
 include/dirent.h               |    2 +-
 include/libc-internal.h        |    2 +-
 include/libc-symbols.h         |    2 +-
 include/setjmp.h               |    2 +-
 include/signal.h               |    2 +-
 include/stdlib.h               |    2 +-
 include/string.h               |    2 +-
 include/sys/stat.h             |    4 ++--
 include/sys/utsname.h          |    2 +-
 sysdeps/generic/_itoa.h        |    2 +-
 sysdeps/mach/hurd/configure    |    2 +-
 sysdeps/mach/hurd/configure.ac |    2 +-
 15 files changed, 50 insertions(+), 14 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]