* 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
This commit is contained in:
Roland McGrath 2004-10-04 20:59:53 +00:00
parent 96c82b3fee
commit 0c70edcbc6
2 changed files with 37 additions and 5 deletions

View File

@ -1,3 +1,27 @@
2004-10-04 Roland McGrath <roland@redhat.com>
* 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 <drepper@redhat.com> 2004-10-04 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/ia64/sysconf.c: New file. * sysdeps/unix/sysv/linux/ia64/sysconf.c: New file.
@ -76,7 +100,7 @@
don't replace old content. don't replace old content.
* nscd/connections.c: Rewrite handling of incoming connections. All * 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. real work to the worker threads.
* nscd/Makefile: Link nscd with librt. * nscd/Makefile: Link nscd with librt.

View File

@ -22,24 +22,32 @@
#include <dl-sysdep.h> #include <dl-sysdep.h>
#undef errno #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; __thread int errno;
extern __thread int __libc_errno __attribute__ ((alias ("errno"))) extern __thread int __libc_errno __attribute__ ((alias ("errno")))
attribute_hidden; attribute_hidden;
#else #else
/* This differs from plain `int errno;' in that it doesn't create /* This differs from plain `int errno;' in that it doesn't create
a common definition, but a plain symbol that resides in .bss, a common definition, but a plain symbol that resides in .bss,
which can have an alias. */ which can have an alias. */
int errno __attribute__ ((section (".bss"))); int errno __attribute__ ((nocommon));
strong_alias (errno, _errno) strong_alias (errno, _errno)
/* We declare these with compat_symbol so that they are not visible at /* We declare these with compat_symbol so that they are not visible at
link time. Programs must use the accessor functions. RTLD is special, link time. Programs must use the accessor functions. RTLD is special,
since it's not exported from there at any time. */ since it's not exported from there at any time. */
# if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING \ # if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING
&& !RTLD_PRIVATE_ERRNO
# include <shlib-compat.h> # include <shlib-compat.h>
compat_symbol (libc, errno, errno, GLIBC_2_0); compat_symbol (libc, errno, errno, GLIBC_2_0);
compat_symbol (libc, _errno, _errno, GLIBC_2_0); compat_symbol (libc, _errno, _errno, GLIBC_2_0);
# endif # endif
#endif #endif