From 0c70edcbc655bcd740b10ae9ddaa552491c930b1 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Mon, 4 Oct 2004 20:59:53 +0000 Subject: [PATCH] * include/errno.h [RTLD_PRIVATE_ERRNO] (errno): Rename the real symbol to rtld_errno. * sysdeps/generic/errno.c [RTLD_PRIVATE_ERRNO] (rtld_errno): Define it, and don't define any other errno names. * sysdeps/unix/alpha/sysdep.h [RTLD_PRIVATE_ERRNO]: Use rtld_errno in place of errno. * sysdeps/unix/i386/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/ia64/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise. * sysdeps/unix/x86_64/sysdep.S: Likewise. * sysdeps/generic/errno.c [! USE___THREAD] (errno): Use `nocommon' attribute instead of `section'. are handled by one thread which then hands off the descriptors for the --- ChangeLog | 26 +++++++++++++++++++++++++- sysdeps/generic/errno.c | 16 ++++++++++++---- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6255358..cd2e0ca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,27 @@ +2004-10-04 Roland McGrath + + * include/errno.h [RTLD_PRIVATE_ERRNO] (errno): Rename the real symbol + to rtld_errno. + * sysdeps/generic/errno.c [RTLD_PRIVATE_ERRNO] (rtld_errno): Define it, + and don't define any other errno names. + * sysdeps/unix/alpha/sysdep.h [RTLD_PRIVATE_ERRNO]: Use rtld_errno in + place of errno. + * sysdeps/unix/i386/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise. + * sysdeps/unix/x86_64/sysdep.S: Likewise. + + * sysdeps/generic/errno.c [! USE___THREAD] (errno): Use `nocommon' + attribute instead of `section'. + 2004-10-04 Ulrich Drepper * sysdeps/unix/sysv/linux/ia64/sysconf.c: New file. @@ -76,7 +100,7 @@ don't replace old content. * nscd/connections.c: Rewrite handling of incoming connections. All - are handled by one thread which then hands of the descriptors for the + are handled by one thread which then hands off the descriptors for the real work to the worker threads. * nscd/Makefile: Link nscd with librt. diff --git a/sysdeps/generic/errno.c b/sysdeps/generic/errno.c index 10dbabe7..03d661b 100644 --- a/sysdeps/generic/errno.c +++ b/sysdeps/generic/errno.c @@ -22,24 +22,32 @@ #include #undef errno -#if USE___THREAD +#if RTLD_PRIVATE_ERRNO + +/* Code compiled for rtld refers only to this name. */ +int rtld_errno attribute_hidden; + +#elif USE___THREAD + __thread int errno; extern __thread int __libc_errno __attribute__ ((alias ("errno"))) attribute_hidden; + #else + /* This differs from plain `int errno;' in that it doesn't create a common definition, but a plain symbol that resides in .bss, which can have an alias. */ -int errno __attribute__ ((section (".bss"))); +int errno __attribute__ ((nocommon)); strong_alias (errno, _errno) /* We declare these with compat_symbol so that they are not visible at link time. Programs must use the accessor functions. RTLD is special, since it's not exported from there at any time. */ -# if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING \ - && !RTLD_PRIVATE_ERRNO +# if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING # include compat_symbol (libc, errno, errno, GLIBC_2_0); compat_symbol (libc, _errno, _errno, GLIBC_2_0); # endif + #endif -- 2.7.4