]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Updated to fedora-glibc-20061029T2155 cvs/fedora-glibc-2_5_90-3
authorJakub Jelinek <jakub@redhat.com>
Sun, 29 Oct 2006 22:03:29 +0000 (22:03 +0000)
committerJakub Jelinek <jakub@redhat.com>
Sun, 29 Oct 2006 22:03:29 +0000 (22:03 +0000)
147 files changed:
ChangeLog
Makeconfig
Makerules
config.h.in
config.make.in
configure
configure.in
csu/Versions
csu/libc-start.c
csu/libc-tls.c
csu/version.c
dlfcn/Makefile
dlfcn/dlinfo.c
elf/Makefile
elf/dl-addr.c
elf/dl-cache.c
elf/dl-close.c
elf/dl-iteratephdr.c
elf/dl-load.c
elf/dl-lookup.c
elf/dl-object.c
elf/dl-open.c
elf/dl-reloc.c
elf/dl-runtime.c
elf/dl-support.c
elf/dl-sym.c
elf/dl-sysdep.c
elf/dl-tls.c
elf/ldconfig.c
elf/rtld.c
elf/tst-thrlock.c [new file with mode: 0644]
elf/tst-tls-dlinfo.c
elf/tst-tls1.c
elf/tst-tls10.h
elf/tst-tls14.c
elf/tst-tls2.c
elf/tst-tls3.c
elf/tst-tls4.c
elf/tst-tls5.c
elf/tst-tls6.c
elf/tst-tls7.c
elf/tst-tls8.c
elf/tst-tls9.c
elf/tst-tlsmod1.c
elf/tst-tlsmod13.c
elf/tst-tlsmod13a.c
elf/tst-tlsmod14a.c
elf/tst-tlsmod2.c
elf/tst-tlsmod3.c
elf/tst-tlsmod4.c
elf/tst-tlsmod5.c
elf/tst-tlsmod6.c
fedora/branch.mk
fedora/glibc.spec.in
include/dlfcn.h
include/errno.h
include/libc-symbols.h
include/link.h
include/stdio.h
include/tls.h
io/Makefile
io/fstat.c
io/fstat64.c
io/fstatat.c
io/fstatat64.c
io/lstat.c
io/lstat64.c
io/mknod.c
io/mknodat.c
io/stat.c
io/stat64.c
libio/stdio.c
locale/global-locale.c
locale/localeinfo.h
malloc/arena.c
malloc/hooks.c
malloc/malloc.c
nptl/ChangeLog
nptl/init.c
nptl/pthread_barrier_wait.c [moved from nptl/sysdeps/pthread/pthread_barrier_wait.c with 100% similarity]
nptl/pthread_cond_broadcast.c [moved from nptl/sysdeps/pthread/pthread_cond_broadcast.c with 100% similarity]
nptl/pthread_cond_signal.c [moved from nptl/sysdeps/pthread/pthread_cond_signal.c with 100% similarity]
nptl/pthread_cond_timedwait.c [moved from nptl/sysdeps/pthread/pthread_cond_timedwait.c with 100% similarity]
nptl/pthread_cond_wait.c [moved from nptl/sysdeps/pthread/pthread_cond_wait.c with 100% similarity]
nptl/pthread_getcpuclockid.c [moved from nptl/sysdeps/pthread/pthread_getcpuclockid.c with 100% similarity]
nptl/pthread_once.c [moved from nptl/sysdeps/pthread/pthread_once.c with 100% similarity]
nptl/pthread_rwlock_rdlock.c [moved from nptl/sysdeps/pthread/pthread_rwlock_rdlock.c with 100% similarity]
nptl/pthread_rwlock_timedrdlock.c [moved from nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c with 100% similarity]
nptl/pthread_rwlock_timedwrlock.c [moved from nptl/sysdeps/pthread/pthread_rwlock_timedwrlock.c with 100% similarity]
nptl/pthread_rwlock_unlock.c [moved from nptl/sysdeps/pthread/pthread_rwlock_unlock.c with 100% similarity]
nptl/pthread_rwlock_wrlock.c [moved from nptl/sysdeps/pthread/pthread_rwlock_wrlock.c with 100% similarity]
nptl/pthread_spin_destroy.c [moved from nptl/sysdeps/pthread/pthread_spin_destroy.c with 100% similarity]
nptl/pthread_spin_init.c [moved from nptl/sysdeps/pthread/pthread_spin_init.c with 100% similarity]
nptl/pthread_spin_unlock.c [moved from nptl/sysdeps/pthread/pthread_spin_unlock.c with 100% similarity]
nptl/sysdeps/alpha/tls.h
nptl/sysdeps/i386/tls.h
nptl/sysdeps/ia64/tls.h
nptl/sysdeps/powerpc/tls.h
nptl/sysdeps/s390/tls.h
nptl/sysdeps/sh/tls.h
nptl/sysdeps/sparc/tls.h
nptl/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
nptl/sysdeps/x86_64/tls.h
nptl/tst-tls5.h
nptl_db/ChangeLog
nptl_db/structs.def
nscd/Makefile
po/sv.po
resolv/Versions
stdlib/Makefile
stdlib/atexit.c
sysdeps/alpha/dl-machine.h
sysdeps/alpha/libc-tls.c
sysdeps/generic/ldsodefs.h
sysdeps/generic/sysdep-cancel.h
sysdeps/generic/tls.h
sysdeps/i386/dl-machine.h
sysdeps/i386/i686/memcmp.S
sysdeps/i386/sysdep.h
sysdeps/ia64/dl-machine.h
sysdeps/ia64/libc-tls.c
sysdeps/mach/hurd/fork.c
sysdeps/mach/hurd/i386/tls.h
sysdeps/powerpc/powerpc32/dl-machine.c
sysdeps/powerpc/powerpc32/dl-machine.h
sysdeps/powerpc/powerpc32/sysdep.h
sysdeps/powerpc/powerpc64/dl-machine.h
sysdeps/s390/libc-tls.c
sysdeps/s390/s390-32/dl-machine.h
sysdeps/s390/s390-64/dl-machine.h
sysdeps/sh/dl-machine.h
sysdeps/sparc/sparc32/dl-machine.h
sysdeps/sparc/sparc64/dl-machine.h
sysdeps/unix/sysv/linux/i386/sigaction.c
sysdeps/unix/sysv/linux/x86_64/sigaction.c
sysdeps/x86_64/dl-machine.h
tls.make.c

index c8e8438505b038199074118db2c2b59f89f3f99f..5964c015272deab3b12a5c677730c5236fe9916a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2006-10-29  Ulrich Drepper  <drepper@redhat.com>
+
+       * po/sv.po: Update from translation team.
+
+2006-10-29  Jakub Jelinek  <jakub@redhat.com>
+
+       * elf/dl-sym.c (do_sym): Use RTLD_SINGLE_THREAD_P.
+       * elf/dl-runtime.c (_dl_fixup, _dl_profile_fixup): Likewise.
+       * elf/dl-close.c (_dl_close_worker): Likewise.
+       * elf/dl-open.c (_dl_open_worker): Likewise.
+       * sysdeps/generic/sysdep-cancel.h (RTLD_SINGLE_THREAD_P): Define.
+
 2006-10-27  Ulrich Drepper  <drepper@redhat.com>
 
+       * configure.in: Require assembler support for visibility, compiler
+       support for visibility and aliases, linker support for various -z
+       options.
+       * Makeconfig: Remove conditional code which now is unnecessary.
+       * config.h.in: Likewise.
+       * config.make.in: Likewise.
+       * dlfcn/Makefile: Likewise.
+       * elf/Makefile: Likewise.
+       * elf/dl-load.c: Likewise.
+       * elf/rtld.c: Likewise.
+       * include/libc-symbols.h: Likewise.
+       * include/stdio.h: Likewise.
+       * io/Makefile: Likewise.
+       * io/fstat.c: Likewise.
+       * io/fstat64.c: Likewise.
+       * io/fstatat.c: Likewise.
+       * io/fstatat64.c: Likewise.
+       * io/lstat.c: Likewise.
+       * io/lstat64.c: Likewise.
+       * io/mknod.c: Likewise.
+       * io/mknodat.c: Likewise.
+       * io/stat.c: Likewise.
+       * io/stat64.c: Likewise.
+       * libio/stdio.c: Likewise.
+       * nscd/Makefile: Likewise.
+       * stdlib/Makefile: Likewise.
+       * stdlib/atexit.c: Likewise.
+       * sysdeps/generic/ldsodefs.h: Likewise.
+       * sysdeps/i386/dl-machine.h: Likewise.
+       * sysdeps/i386/sysdep.h: Likewise.
+       * sysdeps/i386/i686/memcmp.S: Likewise.
+       * sysdeps/powerpc/powerpc32/sysdep.h: Likewise.
+       * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise.
+       * sysdeps/unix/sysv/linux/x86_64/sigaction.c: Likewise.
+
+       * Makerules: USE_TLS support is now default.
+       * tls.make.c: Likewise.
+       * csu/Versions: Likewise.
+       * csu/libc-start.c: Likewise.
+       * csu/libc-tls.c: Likewise.
+       * csu/version.c: Likewise.
+       * dlfcn/dlinfo.c: Likewise.
+       * elf/dl-addr.c: Likewise.
+       * elf/dl-cache.c: Likewise.
+       * elf/dl-close.c: Likewise.
+       * elf/dl-iteratephdr.c: Likewise.
+       * elf/dl-load.c: Likewise.
+       * elf/dl-lookup.c: Likewise.
+       * elf/dl-object.c: Likewise.
+       * elf/dl-open.c: Likewise.
+       * elf/dl-reloc.c: Likewise.
+       * elf/dl-support.c: Likewise.
+       * elf/dl-sym.c: Likewise.
+       * elf/dl-sysdep.c: Likewise.
+       * elf/dl-tls.c: Likewise.
+       * elf/ldconfig.c: Likewise.
+       * elf/rtld.c: Likewise.
+       * elf/tst-tls-dlinfo.c: Likewise.
+       * elf/tst-tls1.c: Likewise.
+       * elf/tst-tls10.h: Likewise.
+       * elf/tst-tls14.c: Likewise.
+       * elf/tst-tls2.c: Likewise.
+       * elf/tst-tls3.c: Likewise.
+       * elf/tst-tls4.c: Likewise.
+       * elf/tst-tls5.c: Likewise.
+       * elf/tst-tls6.c: Likewise.
+       * elf/tst-tls7.c: Likewise.
+       * elf/tst-tls8.c: Likewise.
+       * elf/tst-tls9.c: Likewise.
+       * elf/tst-tlsmod1.c: Likewise.
+       * elf/tst-tlsmod13.c: Likewise.
+       * elf/tst-tlsmod13a.c: Likewise.
+       * elf/tst-tlsmod14a.c: Likewise.
+       * elf/tst-tlsmod2.c: Likewise.
+       * elf/tst-tlsmod3.c: Likewise.
+       * elf/tst-tlsmod4.c: Likewise.
+       * elf/tst-tlsmod5.c: Likewise.
+       * elf/tst-tlsmod6.c: Likewise.
+       * include/errno.h: Likewise.
+       * include/link.h: Likewise.
+       * include/tls.h: Likewise.
+       * locale/global-locale.c: Likewise.
+       * locale/localeinfo.h: Likewise.
+       * malloc/arena.c: Likewise.
+       * malloc/hooks.c: Likewise.
+       * malloc/malloc.c: Likewise.
+       * resolv/Versions: Likewise.
+       * sysdeps/alpha/dl-machine.h: Likewise.
+       * sysdeps/alpha/libc-tls.c: Likewise.
+       * sysdeps/generic/ldsodefs.h: Likewise.
+       * sysdeps/generic/tls.h: Likewise.
+       * sysdeps/i386/dl-machine.h: Likewise.
+       * sysdeps/ia64/dl-machine.h: Likewise.
+       * sysdeps/ia64/libc-tls.c: Likewise.
+       * sysdeps/mach/hurd/fork.c: Likewise.
+       * sysdeps/mach/hurd/i386/tls.h: Likewise.
+       * sysdeps/powerpc/powerpc32/dl-machine.c: Likwise.
+       * sysdeps/powerpc/powerpc32/dl-machine.h: Likewise.
+       * sysdeps/powerpc/powerpc64/dl-machine.h: Likewise.
+       * sysdeps/s390/libc-tls.c: Likewise.
+       * sysdeps/s390/s390-32/dl-machine.h: Likewise.
+       * sysdeps/s390/s390-64/dl-machine.h: Likewise.
+       * sysdeps/sh/dl-machine.h: Likewise.
+       * sysdeps/sparc/sparc32/dl-machine.h: Likewise.
+       * sysdeps/sparc/sparc64/dl-machine.h: Likewise.
+       * sysdeps/x86_64/dl-machine.h: Likewise.
+
+       * elf/dl-close.c (_dl_close_worker): Renamed from _dl_close and
+       split out locking and parameter checking.
+       (_dl_close): Call _dl_close_worker after locking and checking.
+       * elf/dl-open.c (_dl_open): Call _dl_close_worker instead of
+       _dl_close.
+       * elf/Makefile: Add rules to build and run tst-thrlock.
+       * elf/tst-thrlock.c:  New file.
+
        [BZ #3426]
        * stdlib/stdlib.h: Adjust comment for canonicalize_file_name to
        reality.
 
        [BZ #3429]
        * elf/dl-open.c (dl_open_worker): Keep holding dl_load_lock until
-       we are sure we do not need it anymore for _dl_close.  ALso move
+       we are sure we do not need it anymore for _dl_close.  Also move
        the asserts inside the lock region.
        Patch mostly by Suzuki <suzuki@in.ibm.com>.
 
 2006-10-27  Jakub Jelinek  <jakub@redhat.com>
 
-       * elf/dl-lookup.c (_dl_debug_bindings): Remove unised symbol_scope
+       * elf/dl-lookup.c (_dl_debug_bindings): Remove unused symbol_scope
        argument.
        (_dl_lookup_symbol_x): Adjust caller.
 
index 5a1aebccffaa3dbadea92e6ab92c9a3d33c0bf99..349f94d9ac043f09a31c4b298f6bf78a3e7ea196 100644 (file)
@@ -407,11 +407,9 @@ LDFLAGS.so += $(combreloc-LDFLAGS)
 LDFLAGS-rtld += $(combreloc-LDFLAGS)
 endif
 
-ifeq (yes,$(have-z-relro))
 relro-LDFLAGS = -Wl,-z,relro
 LDFLAGS.so += $(relro-LDFLAGS)
 LDFLAGS-rtld += $(relro-LDFLAGS)
-endif
 
 ifeq (yes,$(have-hash-style))
 # For the time being we unconditionally use 'both'.  At some time we
index b0be86b368320413f67486dba3860848fa58d20a..200f8d7eea4974800d9d563b671feb054a32ea3d 100644 (file)
--- a/Makerules
+++ b/Makerules
@@ -1233,10 +1233,7 @@ endif
 
 ifeq ($(firstword $(sysd-sorted-done) f)$(firstword $(generating) f),tf)
 -include $(common-objpfx)tls.make
-config-tls := notls
-ifeq ($(use-tls),yes)
 config-tls := tls
-endif
 ifeq ($(use-thread),yes)
 config-tls := thread
 endif
index da973f6a5d897fd7ee4814cee0493e8a213979ae..a46e405269b168f57b3d6f41b6cfa8550bc99407 100644 (file)
 /* Define if the linker supports the -z combreloc option.  */
 #undef HAVE_Z_COMBRELOC
 
-/* Define if the assembler supported .protected.  */
-#undef HAVE_PROTECTED
-
-/* Define if the assembler supported .hidden.  */
-#undef HAVE_HIDDEN
-
-/* Define if the compiler supports __attribute__ ((visibility (...))).  */
-#undef HAVE_VISIBILITY_ATTRIBUTE
-
-/* Define if the compiler doesn't support __attribute__ ((visibility (...)))
-   together with __asm__ redirection properly.  */
-#undef HAVE_BROKEN_VISIBILITY_ATTRIBUTE
-
-/* Define if the compiler doesn't support __attribute__ ((alias (...)))
-   together with __asm__ redirection properly.  */
-#undef HAVE_BROKEN_ALIAS_ATTRIBUTE
-
 /* Define if _rtld_local structure should be forced into .sdata section.  */
 #undef HAVE_SDATA_SECTION
 
 /* Defined if forced unwind support is available.  */
 #undef HAVE_FORCED_UNWIND
 
-/* Defined if the linker supports the -z relro option.  */
-#undef HAVE_Z_RELRO
-
 /* Defined of libidn is available.  */
 #undef HAVE_LIBIDN
 
index 677da3a891764d73f3c86dd7ea060faf9e5b7740..7aa9c1c12dadd8c17b0d5d0988d671ede3e3aee8 100644 (file)
@@ -38,14 +38,9 @@ c++-sysincludes = @CXX_SYSINCLUDES@
 all-warnings = @all_warnings@
 
 elf = @elf@
-have-protected = @libc_cv_asm_protected_directive@
-have-z-nodelete = @libc_cv_z_nodelete@
-have-z-nodlopen = @libc_cv_z_nodlopen@
-have-z-initfirst = @libc_cv_z_initfirst@
 have-z-combreloc = @libc_cv_z_combreloc@
 have-z-execstack = @libc_cv_z_execstack@
 have-initfini = @libc_cv_have_initfini@
-have-z-relro = @libc_cv_z_relro@
 have-Bgroup = @libc_cv_Bgroup@
 have-as-needed = @libc_cv_as_needed@
 libgcc_s_suffix = @libc_cv_libgcc_s_suffix@
index 8bd2144a8bf60b2e7f2f66d893ed907a0f480982..b04bf8b71d765e493ce9726132eb554e968ab65f 100755 (executable)
--- a/configure
+++ b/configure
@@ -313,7 +313,7 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_check_abi oldest_abi bindnow force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os subdirs add_ons add_on_subdirs base_machine submachine sysnames sysdeps_add_ons INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF SYSINCLUDES CXX_SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_cc_with_libunwind libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_z_relro libc_cv_Bgroup libc_cv_libgcc_s_suffix libc_cv_as_needed ASFLAGS_config libc_cv_z_combreloc libc_cv_z_execstack libc_cv_fpie libc_cv_hashstyle fno_unit_at_a_time libc_cv_ssp libc_cv_have_initfini no_whole_archive exceptions LIBGD have_libaudit have_libcap have_selinux EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir libc_cv_forced_unwind use_ldconfig ldd_rewrite_script elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_check_abi oldest_abi bindnow force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os subdirs add_ons add_on_subdirs base_machine submachine sysnames sysdeps_add_ons INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF SYSINCLUDES CXX_SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO BISON VERSIONING libc_cv_cc_with_libunwind libc_cv_Bgroup libc_cv_libgcc_s_suffix libc_cv_as_needed ASFLAGS_config libc_cv_z_combreloc libc_cv_z_execstack libc_cv_fpie libc_cv_hashstyle fno_unit_at_a_time libc_cv_ssp libc_cv_have_initfini no_whole_archive exceptions LIBGD have_libaudit have_libcap have_selinux EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir libc_cv_forced_unwind use_ldconfig ldd_rewrite_script elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS'
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -5339,22 +5339,15 @@ EOF
   (exit $ac_status); }; }; then
     libc_cv_asm_protected_directive=yes
   else
-    libc_cv_asm_protected_directive=no
+    { { echo "$as_me:$LINENO: error: assembler support for symbol visibility is required" >&5
+echo "$as_me: error: assembler support for symbol visibility is required" >&2;}
+   { (exit 1); exit 1; }; }
   fi
   rm -f conftest*
 fi
 echo "$as_me:$LINENO: result: $libc_cv_asm_protected_directive" >&5
 echo "${ECHO_T}$libc_cv_asm_protected_directive" >&6
 
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_PROTECTED 1
-_ACEOF
-
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_HIDDEN 1
-_ACEOF
-
-
   if test $libc_cv_asm_protected_directive = yes; then
     echo "$as_me:$LINENO: checking whether __attribute__((visibility())) is supported" >&5
 echo $ECHO_N "checking whether __attribute__((visibility())) is supported... $ECHO_C" >&6
@@ -5383,11 +5376,10 @@ EOF
 fi
 echo "$as_me:$LINENO: result: $libc_cv_visibility_attribute" >&5
 echo "${ECHO_T}$libc_cv_visibility_attribute" >&6
-    if test $libc_cv_visibility_attribute = yes; then
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_VISIBILITY_ATTRIBUTE 1
-_ACEOF
-
+    if test $libc_cv_visibility_attribute != yes; then
+      { { echo "$as_me:$LINENO: error: compiler support for visibility attribute is required" >&5
+echo "$as_me: error: compiler support for visibility attribute is required" >&2;}
+   { (exit 1); exit 1; }; }
     fi
   fi
 
@@ -5419,10 +5411,9 @@ fi
 echo "$as_me:$LINENO: result: $libc_cv_broken_visibility_attribute" >&5
 echo "${ECHO_T}$libc_cv_broken_visibility_attribute" >&6
     if test $libc_cv_broken_visibility_attribute = yes; then
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_BROKEN_VISIBILITY_ATTRIBUTE 1
-_ACEOF
-
+      { { echo "$as_me:$LINENO: error: working compiler support for visibility attribute is required" >&5
+echo "$as_me: error: working compiler support for visibility attribute is required" >&2;}
+   { (exit 1); exit 1; }; }
     fi
   fi
 
@@ -5457,10 +5448,9 @@ fi
 echo "$as_me:$LINENO: result: $libc_cv_broken_alias_attribute" >&5
 echo "${ECHO_T}$libc_cv_broken_alias_attribute" >&6
   if test $libc_cv_broken_alias_attribute = yes; then
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_BROKEN_ALIAS_ATTRIBUTE 1
-_ACEOF
-
+    { { echo "$as_me:$LINENO: error: working alias attribute support required" >&5
+echo "$as_me: error: working alias attribute support required" >&2;}
+   { (exit 1); exit 1; }; }
   fi
 
   if test $libc_cv_visibility_attribute = yes; then
@@ -5572,14 +5562,15 @@ EOF
   then
     libc_cv_z_nodelete=yes
   else
-    libc_cv_z_nodelete=no
+    { { echo "$as_me:$LINENO: error: linker with -z nodelete support required" >&5
+echo "$as_me: error: linker with -z nodelete support required" >&2;}
+   { (exit 1); exit 1; }; }
   fi
   rm -f conftest*
 fi
 echo "$as_me:$LINENO: result: $libc_cv_z_nodelete" >&5
 echo "${ECHO_T}$libc_cv_z_nodelete" >&6
 
-
   echo "$as_me:$LINENO: checking for -z nodlopen option" >&5
 echo $ECHO_N "checking for -z nodlopen option... $ECHO_C" >&6
 if test "${libc_cv_z_nodlopen+set}" = set; then
@@ -5600,14 +5591,15 @@ EOF
   then
     libc_cv_z_nodlopen=yes
   else
-    libc_cv_z_nodlopen=no
+    { { echo "$as_me:$LINENO: error: linker with -z nodlopen support required" >&5
+echo "$as_me: error: linker with -z nodlopen support required" >&2;}
+   { (exit 1); exit 1; }; }
   fi
   rm -f conftest*
 fi
 echo "$as_me:$LINENO: result: $libc_cv_z_nodlopen" >&5
 echo "${ECHO_T}$libc_cv_z_nodlopen" >&6
 
-
   echo "$as_me:$LINENO: checking for -z initfirst option" >&5
 echo $ECHO_N "checking for -z initfirst option... $ECHO_C" >&6
 if test "${libc_cv_z_initfirst+set}" = set; then
@@ -5628,14 +5620,15 @@ EOF
   then
     libc_cv_z_initfirst=yes
   else
-    libc_cv_z_initfirst=no
+    { { echo "$as_me:$LINENO: error: linker with -z initfirst support required" >&5
+echo "$as_me: error: linker with -z initfirst support required" >&2;}
+   { (exit 1); exit 1; }; }
   fi
   rm -f conftest*
 fi
 echo "$as_me:$LINENO: result: $libc_cv_z_initfirst" >&5
 echo "${ECHO_T}$libc_cv_z_initfirst" >&6
 
-
   echo "$as_me:$LINENO: checking for -z relro option" >&5
 echo $ECHO_N "checking for -z relro option... $ECHO_C" >&6
 if test "${libc_cv_z_relro+set}" = set; then
@@ -5662,12 +5655,10 @@ else
 fi
 echo "$as_me:$LINENO: result: $libc_cv_z_relro" >&5
 echo "${ECHO_T}$libc_cv_z_relro" >&6
-
-  if test $libc_cv_z_relro = yes; then
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_Z_RELRO 1
-_ACEOF
-
+  if test $libc_cv_z_relro != yes; then
+    { { echo "$as_me:$LINENO: error: linker with -z relro support required" >&5
+echo "$as_me: error: linker with -z relro support required" >&2;}
+   { (exit 1); exit 1; }; }
   fi
 
   echo "$as_me:$LINENO: checking for -Bgroup option" >&5
@@ -8510,12 +8501,7 @@ s,@PERL@,$PERL,;t t
 s,@INSTALL_INFO@,$INSTALL_INFO,;t t
 s,@BISON@,$BISON,;t t
 s,@VERSIONING@,$VERSIONING,;t t
-s,@libc_cv_asm_protected_directive@,$libc_cv_asm_protected_directive,;t t
 s,@libc_cv_cc_with_libunwind@,$libc_cv_cc_with_libunwind,;t t
-s,@libc_cv_z_nodelete@,$libc_cv_z_nodelete,;t t
-s,@libc_cv_z_nodlopen@,$libc_cv_z_nodlopen,;t t
-s,@libc_cv_z_initfirst@,$libc_cv_z_initfirst,;t t
-s,@libc_cv_z_relro@,$libc_cv_z_relro,;t t
 s,@libc_cv_Bgroup@,$libc_cv_Bgroup,;t t
 s,@libc_cv_libgcc_s_suffix@,$libc_cv_libgcc_s_suffix,;t t
 s,@libc_cv_as_needed@,$libc_cv_as_needed,;t t
index 6a7e51d853ae81c76c1375f26ccca8b55e2237e5..fb43804b1f6f3519da2e31a70bac7e060fbfc79e 100644 (file)
@@ -1259,12 +1259,9 @@ EOF
   if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
     libc_cv_asm_protected_directive=yes
   else
-    libc_cv_asm_protected_directive=no
+    AC_MSG_ERROR(assembler support for symbol visibility is required)
   fi
   rm -f conftest*])
-  AC_SUBST(libc_cv_asm_protected_directive)
-  AC_DEFINE(HAVE_PROTECTED)
-  AC_DEFINE(HAVE_HIDDEN)
 
   if test $libc_cv_asm_protected_directive = yes; then
     AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
@@ -1283,8 +1280,8 @@ EOF
                  fi
                  rm -f conftest.[cs]
                 ])
-    if test $libc_cv_visibility_attribute = yes; then
-      AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
+    if test $libc_cv_visibility_attribute != yes; then
+      AC_MSG_ERROR(compiler support for visibility attribute is required)
     fi
   fi
 
@@ -1307,7 +1304,7 @@ changequote([,])dnl
                  rm -f conftest.c conftest.s
                 ])
     if test $libc_cv_broken_visibility_attribute = yes; then
-      AC_DEFINE(HAVE_BROKEN_VISIBILITY_ATTRIBUTE)
+      AC_MSG_ERROR(working compiler support for visibility attribute is required)
     fi
   fi
 
@@ -1331,7 +1328,7 @@ EOF
                  rm -f conftest.c conftest.s
                 ])
   if test $libc_cv_broken_alias_attribute = yes; then
-    AC_DEFINE(HAVE_BROKEN_ALIAS_ATTRIBUTE)
+    AC_MSG_ERROR(working alias attribute support required)
   fi
 
   if test $libc_cv_visibility_attribute = yes; then
@@ -1403,10 +1400,9 @@ EOF
   then
     libc_cv_z_nodelete=yes
   else
-    libc_cv_z_nodelete=no
+    AC_MSG_ERROR(linker with -z nodelete support required)
   fi
   rm -f conftest*])
-  AC_SUBST(libc_cv_z_nodelete)
 
   AC_CACHE_CHECK(for -z nodlopen option,
                 libc_cv_z_nodlopen, [dnl
@@ -1420,10 +1416,9 @@ EOF
   then
     libc_cv_z_nodlopen=yes
   else
-    libc_cv_z_nodlopen=no
+    AC_MSG_ERROR(linker with -z nodlopen support required)
   fi
   rm -f conftest*])
-  AC_SUBST(libc_cv_z_nodlopen)
 
   AC_CACHE_CHECK(for -z initfirst option,
                 libc_cv_z_initfirst, [dnl
@@ -1437,10 +1432,9 @@ EOF
   then
     libc_cv_z_initfirst=yes
   else
-    libc_cv_z_initfirst=no
+    AC_MSG_ERROR(linker with -z initfirst support required)
   fi
   rm -f conftest*])
-  AC_SUBST(libc_cv_z_initfirst)
 
   AC_CACHE_CHECK(for -z relro option,
                 libc_cv_z_relro, [dnl
@@ -1452,9 +1446,8 @@ EOF
       libc_cv_z_relro=yes
     fi
   fi])
-  AC_SUBST(libc_cv_z_relro)
-  if test $libc_cv_z_relro = yes; then
-    AC_DEFINE(HAVE_Z_RELRO)
+  if test $libc_cv_z_relro != yes; then
+    AC_MSG_ERROR(linker with -z relro support required)
   fi
 
   AC_CACHE_CHECK(for -Bgroup option,
index a1321a9df8e849613477f1ae2e5222569bd1a7c2..f0b4f00549ac999fe1ee9609c5ceac96f14221f2 100644 (file)
@@ -5,7 +5,7 @@ libc {
     # helper functions
     __libc_init_first; __libc_start_main;
 
-%if !(USE_TLS && HAVE___THREAD)
+%if !HAVE___THREAD
     # global variables
     _errno;
 
@@ -18,7 +18,7 @@ libc {
     gnu_get_libc_release; gnu_get_libc_version;
   }
   GLIBC_PRIVATE {
-%if USE_TLS && HAVE___THREAD
+%if HAVE___THREAD
     # This version is for the TLS symbol, GLIBC_2.0 is the old object symbol.
     errno;
 %endif
index 194db6b1ec5239430185a013e1bcf492763783a2..634844759da33c859bb2119daad8165a6e99e7b7 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2003, 2004, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2003, 2004, 2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -30,11 +30,7 @@ extern int __libc_multiple_libcs;
 #include <tls.h>
 #ifndef SHARED
 # include <dl-osinfo.h>
-extern void __pthread_initialize_minimal (void)
-# if !(USE_TLS - 0) && !defined NONTLS_INIT_TP
-     __attribute__ ((weak))
-# endif
-     ;
+extern void __pthread_initialize_minimal (void);
 # ifndef THREAD_SET_STACK_GUARD
 /* Only exported for architectures that don't store the stack guard canary
    in thread local area.  */
@@ -140,13 +136,8 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
 
   /* Initialize the thread library at least a bit since the libgcc
      functions are using thread functions if these are available and
-     we need to setup errno.  If there is no thread library and we
-     handle TLS the function is defined in the libc to initialized the
-     TLS handling.  */
-# if !(USE_TLS - 0) && !defined NONTLS_INIT_TP
-  if (__pthread_initialize_minimal)
-# endif
-    __pthread_initialize_minimal ();
+     we need to setup errno.  */
+  __pthread_initialize_minimal ();
 #endif
 
 # ifndef SHARED
index 3544e396dae381669b1c3667ab74024c6a7f7c4d..0d240ccef9970819bde531fb406365fb0c57d9f5 100644 (file)
@@ -1,5 +1,5 @@
 /* Initialization code for TLS in statically linked application.
-   Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -29,7 +29,6 @@
  #error makefile bug, this file is for static only
 #endif
 
-#ifdef USE_TLS
 extern ElfW(Phdr) *_dl_phdr;
 extern size_t _dl_phnum;
 
@@ -143,19 +142,19 @@ __libc_setup_tls (size_t tcbsize, size_t tcbalign)
      The initialized value of _dl_tls_static_size is provided by dl-open.c
      to request some surplus that permits dynamic loading of modules with
      IE-model TLS.  */
-# if TLS_TCB_AT_TP
+#if TLS_TCB_AT_TP
   tcb_offset = roundup (memsz + GL(dl_tls_static_size), tcbalign);
   tlsblock = __sbrk (tcb_offset + tcbsize + max_align);
-# elif TLS_DTV_AT_TP
+#elif TLS_DTV_AT_TP
   tcb_offset = roundup (tcbsize, align ?: 1);
   tlsblock = __sbrk (tcb_offset + memsz + max_align
                     + TLS_PRE_TCB_SIZE + GL(dl_tls_static_size));
   tlsblock += TLS_PRE_TCB_SIZE;
-# else
+#else
   /* In case a model with a different layout for the TCB and DTV
      is defined add another #elif here and in the following #ifs.  */
-#  error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
-# endif
+# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
+#endif
 
   /* Align the TLS block.  */
   tlsblock = (void *) (((uintptr_t) tlsblock + max_align - 1)
@@ -166,16 +165,16 @@ __libc_setup_tls (size_t tcbsize, size_t tcbalign)
   // static_dtv[1].counter = 0;                would be needed if not already done
 
   /* Initialize the TLS block.  */
-# if TLS_TCB_AT_TP
+#if TLS_TCB_AT_TP
   static_dtv[2].pointer.val = ((char *) tlsblock + tcb_offset
                               - roundup (memsz, align ?: 1));
   static_map.l_tls_offset = roundup (memsz, align ?: 1);
-# elif TLS_DTV_AT_TP
+#elif TLS_DTV_AT_TP
   static_dtv[2].pointer.val = (char *) tlsblock + tcb_offset;
   static_map.l_tls_offset = tcb_offset;
-# else
-#  error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
-# endif
+#else
+# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
+#endif
   static_dtv[2].pointer.is_static = true;
   /* sbrk gives us zero'd memory, so we don't need to clear the remainder.  */
   memcpy (static_dtv[2].pointer.val, initimage, filesz);
@@ -183,16 +182,16 @@ __libc_setup_tls (size_t tcbsize, size_t tcbalign)
   /* Install the pointer to the dtv.  */
 
   /* Initialize the thread pointer.  */
-# if TLS_TCB_AT_TP
+#if TLS_TCB_AT_TP
   INSTALL_DTV ((char *) tlsblock + tcb_offset, static_dtv);
 
   const char *lossage = TLS_INIT_TP ((char *) tlsblock + tcb_offset, 0);
-# elif TLS_DTV_AT_TP
+#elif TLS_DTV_AT_TP
   INSTALL_DTV (tlsblock, static_dtv);
   const char *lossage = TLS_INIT_TP (tlsblock, 0);
-# else
-#  error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
-# endif
+#else
+# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
+#endif
   if (__builtin_expect (lossage != NULL, 0))
     __libc_fatal (lossage);
 
@@ -212,11 +211,11 @@ __libc_setup_tls (size_t tcbsize, size_t tcbalign)
 
   memsz = roundup (memsz, align ?: 1);
 
-# if TLS_TCB_AT_TP
+#if TLS_TCB_AT_TP
   memsz += tcbsize;
-# elif TLS_DTV_AT_TP
+#elif TLS_DTV_AT_TP
   memsz += tcb_offset;
-# endif
+#endif
 
   init_static_tls (memsz, MAX (TLS_TCB_ALIGN, max_align));
 }
@@ -230,11 +229,11 @@ _dl_tls_setup (void)
 {
   init_slotinfo ();
   init_static_tls (
-# if TLS_TCB_AT_TP
+#if TLS_TCB_AT_TP
                   TLS_TCB_SIZE,
-# else
+#else
                   0,
-# endif
+#endif
                   TLS_TCB_ALIGN);
   return 0;
 }
@@ -248,16 +247,3 @@ __pthread_initialize_minimal (void)
 {
   __libc_setup_tls (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN);
 }
-
-#elif defined NONTLS_INIT_TP
-
-/* This is the minimal initialization function used when libpthread is
-   not used.  */
-void
-__attribute__ ((weak))
-__pthread_initialize_minimal (void)
-{
-  NONTLS_INIT_TP;
-}
-
-#endif
index 2196d204325050a0ee6cd690498d82af0418f328..1b98c4a7e9aba0812c05e0d809e6cd9caf9d1c98 100644 (file)
@@ -34,9 +34,6 @@ Compiled by GNU CC version "__VERSION__".\n"
 #ifdef GLIBC_OLDEST_ABI
 "The oldest ABI supported: " GLIBC_OLDEST_ABI ".\n"
 #endif
-#ifdef USE_TLS
-"Thread-local storage support included.\n"
-#endif
 "For bug reporting instructions, please see:\n\
 <http://www.gnu.org/software/libc/bugs.html>.\n";
 
index 63e7b31b2a9b147cb31b08d16c6ef1c18523e6ed..e8fbab2958c17dca26e332062fd97baed95a43c5 100644 (file)
@@ -41,10 +41,7 @@ endif
 ifeq (yes,$(build-shared))
 tests = glrefmain failtest tst-dladdr default errmsg1 tstcxaatexit \
        bug-dlopen1 bug-dlsym1 tst-dlinfo bug-atexit1 bug-atexit2 \
-       bug-atexit3
-ifeq (yes,$(have-protected))
-tests += tstatexit
-endif
+       bug-atexit3 tstatexit
 endif
 modules-names = glreflib1 glreflib2 failtestmod defaultmod1 defaultmod2 \
                errmsg1mod modatexit modcxaatexit \
index b1e2b009a5e29d2d6a06eafe883ca3f7a2b86bc1..923127cbf3d2c91827bc75b14ec817bab3dac563 100644 (file)
@@ -32,9 +32,7 @@ dlinfo (void *handle, int request, void *arg)
 
 #else
 
-# ifdef USE_TLS
-#  include <dl-tls.h>
-# endif
+# include <dl-tls.h>
 
 struct dlinfo_args
 {
@@ -97,18 +95,14 @@ RTLD_SELF used in code not dynamically loaded"));
 
     case RTLD_DI_TLS_MODID:
       *(size_t *) args->arg = 0;
-#ifdef USE_TLS
       *(size_t *) args->arg = l->l_tls_modid;
-#endif
       break;
 
     case RTLD_DI_TLS_DATA:
       {
        void *data = NULL;
-#ifdef USE_TLS
        if (l->l_tls_modid != 0)
          data = _dl_tls_get_addr_soft (l);
-#endif
        *(void **) args->arg = data;
        break;
       }
index b1a9bab022d0bd100d8d79e4ff62c7d302309c43..afebaec1ec0d4b1e7f28759125a396133131ea26 100644 (file)
@@ -159,8 +159,8 @@ endif
 ifeq (yes,$(build-shared))
 tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \
         constload1 order $(tests-vis-$(have-protected)) noload filter unload \
-        reldep reldep2 reldep3 reldep4 $(tests-nodelete-$(have-z-nodelete)) \
-        $(tests-nodlopen-$(have-z-nodlopen)) neededtest neededtest2 \
+        reldep reldep2 reldep3 reldep4 nodelete nodelete2 \
+        nodlopen nodlopen2 neededtest neededtest2 \
         neededtest3 neededtest4 unload2 lateglobal initfirst global \
         restest2 next dblload dblunload reldep5 reldep6 reldep7 reldep8 \
         circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8 \
@@ -171,12 +171,10 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \
         tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \
         unload3 unload4 unload5 unload6 unload7 tst-global1 order2 \
         tst-audit1 tst-audit2 \
-        tst-stackguard1 tst-addr1
+        tst-stackguard1 tst-addr1 tst-thrlock
 #       reldep9
 test-srcs = tst-pathopt
 tests-vis-yes = vismain
-tests-nodelete-yes = nodelete nodelete2
-tests-nodlopen-yes = nodlopen nodlopen2
 tests-execstack-yes = tst-execstack tst-execstack-needed tst-execstack-prog
 endif
 ifeq (yesyes,$(have-fpie)$(build-shared))
@@ -186,8 +184,9 @@ tests: $(objpfx)tst-leaks1-mem
 modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \
                testobj1_1 failobj constload2 constload3 unloadmod \
                dep1 dep2 dep3 dep4 $(modules-vis-$(have-protected)) \
-               $(modules-nodelete-$(have-z-nodelete)) \
-               $(modules-nodlopen-$(have-z-nodlopen)) filtmod1 filtmod2 \
+               nodelmod1 nodelmod2 nodelmod3 nodelmod4 \
+               nodel2mod1 nodel2mod2 nodel2mod3 \
+               nodlopenmod nodlopenmod2 filtmod1 filtmod2 \
                reldepmod1 reldepmod2 reldepmod3 reldepmod4 nextmod1 nextmod2 \
                reldep4mod1 reldep4mod2 reldep4mod3 reldep4mod4 \
                neededobj1 neededobj2 neededobj3 neededobj4 \
@@ -221,9 +220,6 @@ ifeq (yesyes,$(have-fpie)$(build-shared))
 modules-names += tst-piemod1
 endif
 modules-vis-yes = vismod1 vismod2 vismod3
-modules-nodelete-yes = nodelmod1 nodelmod2 nodelmod3 nodelmod4 \
-                      nodel2mod1 nodel2mod2 nodel2mod3
-modules-nodlopen-yes = nodlopenmod nodlopenmod2
 modules-execstack-yes = tst-execstack-mod
 extra-test-objs += $(addsuffix .os,$(strip $(modules-names)))
 # We need this variable to be sure the test modules get the right CPPFLAGS.
@@ -916,3 +912,5 @@ $(objpfx)tst-leaks1-mem: $(objpfx)tst-leaks1.out
 tst-leaks1-ENV = MALLOC_TRACE=$(objpfx)tst-leaks1.mtrace
 
 $(objpfx)tst-addr1: $(libdl)
+
+$(objpfx)tst-thrlock: $(libdl) $(shared-thread-library)
index 720b24d04b962fc5fb296fcfc30afc2cdaf1d3a9..e55dc4b46f07d083b655b071325803e47b634061 100644 (file)
@@ -93,9 +93,7 @@ _dl_addr (const void *address, Dl_info *info,
                         so we can omit that test here.  */
                      if ((symtab[symndx].st_shndx != SHN_UNDEF
                           || symtab[symndx].st_value != 0)
-#ifdef USE_TLS
                          && ELFW(ST_TYPE) (symtab[symndx].st_info) != STT_TLS
-#endif
                          && DL_ADDR_SYM_MATCH (match, &symtab[symndx],
                                                matchsym, addr)
                          && symtab[symndx].st_name < strtabsize)
@@ -123,9 +121,7 @@ _dl_addr (const void *address, Dl_info *info,
          for (; (void *) symtab < (void *) symtabend; ++symtab)
            if ((ELFW(ST_BIND) (symtab->st_info) == STB_GLOBAL
                 || ELFW(ST_BIND) (symtab->st_info) == STB_WEAK)
-#ifdef USE_TLS
                && ELFW(ST_TYPE) (symtab->st_info) != STT_TLS
-#endif
                && (symtab->st_shndx != SHN_UNDEF
                    || symtab->st_value != 0)
                && DL_ADDR_SYM_MATCH (match, symtab, matchsym, addr)
index fc7d9916c6fe52d0cc3959e4bdc4a3168f558c1d..bbeba77e4a1cac772c6fa674f1c0842f8531fbd1 100644 (file)
@@ -256,11 +256,7 @@ _dl_load_cache_lookup (const char *name)
        platform = 1ULL << platform;
 
       /* Only accept hwcap if it's for the right platform.  */
-#ifdef USE_TLS
-# define _DL_HWCAP_TLS_MASK (1LL << 63)
-#else
-# define _DL_HWCAP_TLS_MASK 0
-#endif
+#define _DL_HWCAP_TLS_MASK (1LL << 63)
 #define HWCAP_CHECK \
       if (GLRO(dl_osversion) && lib->osversion > GLRO(dl_osversion))         \
        continue;                                                             \
index 31bc80b935684bf3d82e988eee941ea282a358ac..df968fe649e3050cb4750605f609cecea1318e70 100644 (file)
@@ -41,7 +41,6 @@ typedef void (*fini_t) (void);
 #define IDX_STILL_USED -1
 
 
-#ifdef USE_TLS
 /* Returns true we an non-empty was found.  */
 static bool
 remove_slotinfo (size_t idx, struct dtv_slotinfo_list *listp, size_t disp,
@@ -103,26 +102,12 @@ remove_slotinfo (size_t idx, struct dtv_slotinfo_list *listp, size_t disp,
   /* No non-entry in this list element.  */
   return false;
 }
-#endif
 
 
 void
-_dl_close (void *_map)
+_dl_close_worker (struct link_map *map)
 {
-  struct link_map *map = _map;
   Lmid_t ns = map->l_ns;
-  unsigned int i;
-  /* First see whether we can remove the object at all.  */
-  if (__builtin_expect (map->l_flags_1 & DF_1_NODELETE, 0)
-      && map->l_init_called)
-    /* Nope.  Do nothing.  */
-    return;
-
-  if (__builtin_expect (map->l_direct_opencount, 1) == 0)
-    GLRO(dl_signal_error) (0, map->l_name, NULL, N_("shared object not open"));
-
-  /* Acquire the lock.  */
-  __rtld_lock_lock_recursive (GL(dl_load_lock));
 
   /* One less direct use.  */
   --map->l_direct_opencount;
@@ -143,16 +128,13 @@ _dl_close (void *_map)
        _dl_debug_printf ("\nclosing file=%s; direct_opencount=%u\n",
                          map->l_name, map->l_direct_opencount);
 
-      __rtld_lock_unlock_recursive (GL(dl_load_lock));
       return;
     }
 
  retry:
   dl_close_state = pending;
 
-#ifdef USE_TLS
   bool any_tls = false;
-#endif
   const unsigned int nloaded = GL(dl_ns)[ns]._ns_nloaded;
   char used[nloaded];
   char done[nloaded];
@@ -246,7 +228,7 @@ _dl_close (void *_map)
 #endif
   bool unload_any = false;
   unsigned int first_loaded = ~0;
-  for (i = 0; i < nloaded; ++i)
+  for (unsigned int i = 0; i < nloaded; ++i)
     {
       struct link_map *imap = maps[i];
 
@@ -417,7 +399,7 @@ _dl_close (void *_map)
 
              struct r_scope_elem **old = imap->l_scope;
 
-             if (SINGLE_THREAD_P)
+             if (RTLD_SINGLE_THREAD_P)
                imap->l_scope = newp;
              else
                {
@@ -474,15 +456,13 @@ _dl_close (void *_map)
   r->r_state = RT_DELETE;
   _dl_debug_state ();
 
-#ifdef USE_TLS
   size_t tls_free_start;
   size_t tls_free_end;
   tls_free_start = tls_free_end = NO_TLS_OFFSET;
-#endif
 
   /* Check each element of the search list to see if all references to
      it are gone.  */
-  for (i = first_loaded; i < nloaded; ++i)
+  for (unsigned int i = first_loaded; i < nloaded; ++i)
     {
       struct link_map *imap = maps[i];
       if (!used[i])
@@ -509,7 +489,6 @@ _dl_close (void *_map)
              --GL(dl_ns)[ns]._ns_main_searchlist->r_nlist;
            }
 
-#ifdef USE_TLS
          /* Remove the object from the dtv slotinfo array if it uses TLS.  */
          if (__builtin_expect (imap->l_tls_blocksize > 0, 0))
            {
@@ -528,7 +507,7 @@ _dl_close (void *_map)
                     this search list, going in either direction.  When the
                     whole chunk is at the end of the used area then we can
                     reclaim it.  */
-# if TLS_TCB_AT_TP
+#if TLS_TCB_AT_TP
                  if (tls_free_start == NO_TLS_OFFSET
                      || (size_t) imap->l_tls_offset == tls_free_start)
                    {
@@ -568,7 +547,7 @@ _dl_close (void *_map)
                            = tls_free_end - imap->l_tls_blocksize;
                        }
                    }
-# elif TLS_DTV_AT_TP
+#elif TLS_DTV_AT_TP
                  if ((size_t) imap->l_tls_offset == tls_free_end)
                    /* Extend the contiguous chunk being reclaimed.  */
                    tls_free_end -= imap->l_tls_blocksize;
@@ -585,12 +564,11 @@ _dl_close (void *_map)
                      tls_free_start = imap->l_tls_offset;
                      tls_free_end = tls_free_start + imap->l_tls_blocksize;
                    }
-# else
-#  error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
-# endif
+#else
+# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
+#endif
                }
            }
-#endif
 
          /* We can unmap all the maps at once.  We determined the
             start address and length when we loaded the object and
@@ -656,7 +634,6 @@ _dl_close (void *_map)
        }
     }
 
-#ifdef USE_TLS
   /* If we removed any object which uses TLS bump the generation counter.  */
   if (any_tls)
     {
@@ -666,7 +643,6 @@ _dl_close (void *_map)
       if (tls_free_end == GL(dl_tls_static_used))
        GL(dl_tls_static_used) = tls_free_start;
     }
-#endif
 
 #ifdef SHARED
   /* Auditing checkpoint: we have deleted all objects.  */
@@ -698,11 +674,34 @@ _dl_close (void *_map)
     goto retry;
 
   dl_close_state = not_pending;
+}
+
+
+void
+_dl_close (void *_map)
+{
+  struct link_map *map = _map;
+
+  /* First see whether we can remove the object at all.  */
+  if (__builtin_expect (map->l_flags_1 & DF_1_NODELETE, 0))
+    {
+      assert (map->l_init_called);
+      /* Nope.  Do nothing.  */
+      return;
+    }
+
+  if (__builtin_expect (map->l_direct_opencount, 1) == 0)
+    GLRO(dl_signal_error) (0, map->l_name, NULL, N_("shared object not open"));
+
+  /* Acquire the lock.  */
+  __rtld_lock_lock_recursive (GL(dl_load_lock));
+
+  _dl_close_worker (map);
+
   __rtld_lock_unlock_recursive (GL(dl_load_lock));
 }
 
 
-#ifdef USE_TLS
 static bool __libc_freeres_fn_section
 free_slotinfo (struct dtv_slotinfo_list **elemp)
 {
@@ -729,7 +728,6 @@ free_slotinfo (struct dtv_slotinfo_list **elemp)
 
   return true;
 }
-#endif
 
 
 libc_freeres_fn (free_mem)
@@ -755,22 +753,20 @@ libc_freeres_fn (free_mem)
        free (old);
       }
 
-#ifdef USE_TLS
   if (USE___THREAD || GL(dl_tls_dtv_slotinfo_list) != NULL)
     {
       /* Free the memory allocated for the dtv slotinfo array.  We can do
         this only if all modules which used this memory are unloaded.  */
-# ifdef SHARED
+#ifdef SHARED
       if (GL(dl_initial_dtv) == NULL)
        /* There was no initial TLS setup, it was set up later when
           it used the normal malloc.  */
        free_slotinfo (&GL(dl_tls_dtv_slotinfo_list));
       else
-# endif
+#endif
        /* The first element of the list does not have to be deallocated.
           It was allocated in the dynamic linker (i.e., with a different
           malloc), and in the static library it's in .bss space.  */
        free_slotinfo (&GL(dl_tls_dtv_slotinfo_list)->next);
     }
-#endif
 }
index 52a114421d20df074d64186f8a075acfa2b1902d..d03d8b6daf1d128549aea5e6727db6f9c9ec88bb 100644 (file)
@@ -70,11 +70,9 @@ __dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info,
       info.dlpi_subs = GL(dl_load_adds) - nloaded;
       info.dlpi_tls_modid = 0;
       info.dlpi_tls_data = NULL;
-#ifdef USE_TLS
       info.dlpi_tls_modid = l->l_tls_modid;
       if (info.dlpi_tls_modid != 0)
        info.dlpi_tls_data = _dl_tls_get_addr_soft (l);
-#endif
       ret = callback (&info, sizeof (struct dl_phdr_info), data);
       if (ret)
        break;
index 36dc123c0131d2964129624a4ddb59e81c48b5e8..ccbbf4fdd2fc036f9c4dfa087bedb0f982be4b21 100644 (file)
@@ -1085,7 +1085,6 @@ _dl_map_object_from_fd (const char *name, int fd, struct filebuf *fbp,
          break;
 
        case PT_TLS:
-#ifdef USE_TLS
          if (ph->p_memsz == 0)
            /* Nothing to do for an empty segment.  */
            break;
@@ -1113,7 +1112,7 @@ _dl_map_object_from_fd (const char *name, int fd, struct filebuf *fbp,
              break;
            }
 
-# ifdef SHARED
+#ifdef SHARED
          if (l->l_prev == NULL || (mode & __RTLD_AUDIT) != 0)
            /* We are loading the executable itself when the dynamic linker
               was executed directly.  The setup will happen later.  */
@@ -1122,7 +1121,7 @@ _dl_map_object_from_fd (const char *name, int fd, struct filebuf *fbp,
          /* In a static binary there is no way to tell if we dynamically
             loaded libpthread.  */
          if (GL(dl_error_catch_tsd) == &_dl_initial_error_catch_tsd)
-# endif
+#endif
            {
              /* We have not yet loaded libpthread.
                 We can do the TLS setup right now!  */
@@ -1155,7 +1154,6 @@ cannot allocate TLS data structures for initial thread");
              _dl_deallocate_tls (tcb, 1);
              goto call_lose;
            }
-#endif
 
          /* Uh-oh, the binary expects TLS support but we cannot
             provide it.  */
@@ -1394,7 +1392,7 @@ cannot allocate TLS data structures for initial thread");
         requires that it be executable.  We must change the
         protection of the variable which contains the flags used in
         the mprotect calls.  */
-#if defined HAVE_Z_RELRO && defined SHARED
+#ifdef SHARED
       if ((mode & (__RTLD_DLOPEN | __RTLD_AUDIT)) == __RTLD_DLOPEN)
        {
          const uintptr_t p = (uintptr_t) &__stack_prot & -GLRO(dl_pagesize);
@@ -1431,11 +1429,9 @@ cannot enable executable stack as shared object requires");
        }
     }
 
-#ifdef USE_TLS
   /* Adjust the address of the TLS initialization image.  */
   if (l->l_tls_initimage != NULL)
     l->l_tls_initimage = (char *) l->l_tls_initimage + l->l_addr;
-#endif
 
   /* We are done mapping in the file.  We no longer need the descriptor.  */
   if (__builtin_expect (__close (fd) != 0, 0))
@@ -1939,11 +1935,10 @@ open_path (const char *name, size_t namelen, int preloaded,
         must not be freed using the general free() in libc.  */
       if (sps->malloced)
        free (sps->dirs);
-#ifdef HAVE_Z_RELRO
+
       /* rtld_search_dirs is attribute_relro, therefore avoid writing
         into it.  */
       if (sps != &rtld_search_dirs)
-#endif
        sps->dirs = (void *) -1;
     }
 
index 29a52165ce28f39f650382b4e98f0799cb0e132f..019278c9b0b5d7694911488810043fd4c2425bdd 100644 (file)
@@ -449,12 +449,10 @@ _dl_debug_bindings (const char *undef_name, struct link_map *undef_map,
            conflict = 1;
        }
 
-# ifdef USE_TLS
       if (value->s
          && (__builtin_expect (ELFW(ST_TYPE) (value->s->st_info)
                                == STT_TLS, 0)))
        type_class = 4;
-# endif
 
       if (conflict
          || GLRO(dl_trace_prelink_map) == undef_map
index 29f44bfd5521eda107c3a66147cf1197176581c1..33ee860e59c4daea82a65b199ecb7451d5efd709 100644 (file)
@@ -64,7 +64,7 @@ _dl_new_object (char *realname, const char *libname, int type,
   new->l_name = realname;
   new->l_type = type;
   new->l_loader = loader;
-#if defined USE_TLS && NO_TLS_OFFSET != 0
+#if NO_TLS_OFFSET != 0
   new->l_tls_offset = NO_TLS_OFFSET;
 #endif
   new->l_ns = nsid;
index 2a891f244df1696d984a93df956cc7451fe1bc49..c99752112661e08ab8b4c0d7612c4cf4961c20a3 100644 (file)
@@ -164,9 +164,7 @@ dl_open_worker (void *a)
   struct link_map *new, *l;
   int lazy;
   unsigned int i;
-#ifdef USE_TLS
   bool any_tls = false;
-#endif
   struct link_map *call_map = NULL;
 
   /* Check whether _dl_open() has been called from a valid DSO.  */
@@ -419,7 +417,7 @@ dl_open_worker (void *a)
              memcpy (newp, imap->l_scope, cnt * sizeof (imap->l_scope[0]));
              struct r_scope_elem **old = imap->l_scope;
 
-             if (SINGLE_THREAD_P)
+             if (RTLD_SINGLE_THREAD_P)
                imap->l_scope = newp;
              else
                {
@@ -441,7 +439,6 @@ dl_open_worker (void *a)
          atomic_write_barrier ();
          imap->l_scope[cnt] = &new->l_searchlist;
        }
-#if USE_TLS
       /* Only add TLS memory if this object is loaded now and
         therefore is not yet initialized.  */
       else if (! imap->l_init_called
@@ -456,11 +453,11 @@ dl_open_worker (void *a)
          if (imap->l_need_tls_init)
            {
              imap->l_need_tls_init = 0;
-# ifdef SHARED
+#ifdef SHARED
              /* Update the slot information data for at least the
                 generation of the DSO we are allocating data for.  */
              _dl_update_slotinfo (imap->l_tls_modid);
-# endif
+#endif
 
              GL(dl_init_static_tls) (imap);
              assert (imap->l_need_tls_init == 0);
@@ -469,15 +466,12 @@ dl_open_worker (void *a)
          /* We have to bump the generation counter.  */
          any_tls = true;
        }
-#endif
     }
 
-#if USE_TLS
   /* Bump the generation number if necessary.  */
   if (any_tls && __builtin_expect (++GL(dl_tls_generation) == 0, 0))
     _dl_fatal_printf (N_("\
 TLS generation counter wrapped!  Please report this."));
-#endif
 
   /* Run the initializer functions of new objects.  */
   _dl_init (new, args->argc, args->argv, args->env);
@@ -574,7 +568,6 @@ no more namespaces available for dlmopen()"));
         state if relocation failed, for example.  */
       if (args.map)
        {
-#ifdef USE_TLS
          /* Maybe some of the modules which were loaded use TLS.
             Since it will be removed in the following _dl_close call
             we have to mark the dtv array as having gaps to fill the
@@ -584,9 +577,8 @@ no more namespaces available for dlmopen()"));
             up.  */
          if ((mode & __RTLD_AUDIT) == 0)
            GL(dl_tls_dtv_gaps) = true;
-#endif
 
-         _dl_close (args.map);
+         _dl_close_worker (args.map);
        }
 
       assert (_dl_debug_initialize (0, args.nsid)->r_state == RT_CONSISTENT);
index 117410e92416fcf6226096b18b930e7d438a9cca..c315b5d972ff0b7f6ff613af5a5619687a4a57a7 100644 (file)
@@ -1,5 +1,5 @@
 /* Relocate a shared object and resolve its references to other loaded objects.
-   Copyright (C) 1995-2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 1995-2004, 2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -35,7 +35,6 @@
 #endif
 
 
-#ifdef USE_TLS
 /* We are trying to perform a static TLS relocation in MAP, but it was
    dynamically loaded.  This can only work if there is enough surplus in
    the static TLS area already allocated for each running thread.  If this
@@ -56,7 +55,7 @@ _dl_allocate_static_tls (struct link_map *map)
 cannot allocate memory in static TLS block"));
     }
 
-# if TLS_TCB_AT_TP
+#if TLS_TCB_AT_TP
   size_t freebytes;
   size_t n;
   size_t blsize;
@@ -73,7 +72,7 @@ cannot allocate memory in static TLS block"));
                                            - map->l_tls_firstbyte_offset);
 
   map->l_tls_offset = GL(dl_tls_static_used) = offset;
-# elif TLS_DTV_AT_TP
+#elif TLS_DTV_AT_TP
   size_t used;
   size_t check;
 
@@ -87,9 +86,9 @@ cannot allocate memory in static TLS block"));
 
   map->l_tls_offset = offset;
   GL(dl_tls_static_used) = used;
-# else
-#  error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
-# endif
+#else
+# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
+#endif
 
   /* If the object is not yet relocated we cannot initialize the
      static TLS region.  Delay it.  */
@@ -115,13 +114,13 @@ cannot allocate memory in static TLS block"));
 void
 _dl_nothread_init_static_tls (struct link_map *map)
 {
-# if TLS_TCB_AT_TP
+#if TLS_TCB_AT_TP
   void *dest = (char *) THREAD_SELF - map->l_tls_offset;
-# elif TLS_DTV_AT_TP
+#elif TLS_DTV_AT_TP
   void *dest = (char *) THREAD_SELF + map->l_tls_offset + TLS_PRE_TCB_SIZE;
-# else
-#  error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
-# endif
+#else
+# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
+#endif
 
   /* Fill in the DTV slot so that a later LD/GD access will find it.  */
   dtv_t *dtv = THREAD_DTV ();
@@ -133,7 +132,6 @@ _dl_nothread_init_static_tls (struct link_map *map)
   memset (__mempcpy (dest, map->l_tls_initimage, map->l_tls_initimage_size),
          '\0', map->l_tls_blocksize - map->l_tls_initimage_size);
 }
-#endif
 
 
 void
index 0488fab8d00c65f06b0afa924f296ec7d98a06fe..afc99f6150a351f143f39069dc1e58d78354ca5d 100644 (file)
@@ -93,14 +93,14 @@ _dl_fixup (
            version = NULL;
        }
 
-      if (l->l_type == lt_loaded && !SINGLE_THREAD_P)
+      if (l->l_type == lt_loaded && !RTLD_SINGLE_THREAD_P)
        __rtld_mrlock_lock (l->l_scope_lock);
 
       result = _dl_lookup_symbol_x (strtab + sym->st_name, l, &sym,
                                    l->l_scope, version, ELF_RTYPE_CLASS_PLT,
                                    DL_LOOKUP_ADD_DEPENDENCY, NULL);
 
-      if (l->l_type == lt_loaded && !SINGLE_THREAD_P)
+      if (l->l_type == lt_loaded && !RTLD_SINGLE_THREAD_P)
        __rtld_mrlock_unlock (l->l_scope_lock);
 
       /* Currently result contains the base load address (or link map)
@@ -181,7 +181,7 @@ _dl_profile_fixup (
                version = NULL;
            }
 
-         if (l->l_type == lt_loaded && !SINGLE_THREAD_P)
+         if (l->l_type == lt_loaded && !RTLD_SINGLE_THREAD_P)
            __rtld_mrlock_lock (l->l_scope_lock);
 
          result = _dl_lookup_symbol_x (strtab + refsym->st_name, l, &defsym,
@@ -189,7 +189,7 @@ _dl_profile_fixup (
                                        ELF_RTYPE_CLASS_PLT,
                                        DL_LOOKUP_ADD_DEPENDENCY, NULL);
 
-         if (l->l_type == lt_loaded && !SINGLE_THREAD_P)
+         if (l->l_type == lt_loaded && !RTLD_SINGLE_THREAD_P)
            __rtld_mrlock_unlock (l->l_scope_lock);
 
          /* Currently result contains the base load address (or link map)
index c3b6350ed3260d290cfc7c523efb8f31c3e281f1..fe8c68c9e402c213af3cbca2cf88dd4c345b4f15 100644 (file)
@@ -1,5 +1,5 @@
 /* Support for dynamic linking code in static libc.
-   Copyright (C) 1996-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 1996-2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -97,9 +97,7 @@ int _dl_starting_up = 1;
 hp_timing_t _dl_cpuclock_offset;
 #endif
 
-#ifdef USE_TLS
 void (*_dl_init_static_tls) (struct link_map *) = &_dl_nothread_init_static_tls;
-#endif
 
 size_t _dl_pagesize;
 
index 8bb564c2fe385b26b62812bdd25291151a3e4b76..88a5adb0d563e4b08b058db4d7cff5913dcdaea3 100644 (file)
 #include <ldsodefs.h>
 #include <dl-hash.h>
 #include <sysdep-cancel.h>
-#ifdef USE_TLS
-# include <dl-tls.h>
-#endif
+#include <dl-tls.h>
 
 
-#if defined USE_TLS && defined SHARED
+#ifdef SHARED
 /* Systems which do not have tls_index also probably have to define
    DONT_USE_TLS_INDEX.  */
 
@@ -115,7 +113,7 @@ do_sym (void *handle, const char *name, void *who,
         the initial binary.  And then the more complex part
         where the object is dynamically loaded and the scope
         array can change.  */
-      if (match->l_type != lt_loaded || SINGLE_THREAD_P)
+      if (match->l_type != lt_loaded || RTLD_SINGLE_THREAD_P)
        result = GLRO(dl_lookup_symbol_x) (name, match, &ref,
                                           match->l_scope, vers, 0,
                                           flags | DL_LOOKUP_ADD_DEPENDENCY,
@@ -184,7 +182,7 @@ RTLD_NEXT used in code not dynamically loaded"));
     {
       void *value;
 
-#if defined USE_TLS && defined SHARED
+#ifdef SHARED
       if (ELFW(ST_TYPE) (ref->st_info) == STT_TLS)
        /* The found symbol is a thread-local storage variable.
           Return the address for to the current thread.  */
index 985e2b8f778f989ccf574869422d601a6cec5393..d06ce1754e1085962f16a860132e78b44d9c15f3 100644 (file)
@@ -1,5 +1,5 @@
 /* Operating system support for run-time dynamic linker.  Generic Unix version.
-   Copyright (C) 1995-1998, 2000-2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 1995-1998, 2000-2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -405,25 +405,8 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
     }
 #endif
 
-#ifdef USE_TLS
   /* For TLS enabled builds always add 'tls'.  */
   ++cnt;
-#else
-  if (cnt == 0)
-    {
-      /* If we no have platform name and no important capability we only
-        have the base directory to search.  */
-      result = (struct r_strlenpair *) malloc (sizeof (*result));
-      if (result == NULL)
-       goto no_memory;
-
-      result[0].str = (char *) result; /* Does not really matter.  */
-      result[0].len = 0;
-
-      *sz = 1;
-      return result;
-    }
-#endif
 
   /* Create temporary data structure to generate result table.  */
   temp = (struct r_strlenpair *) alloca (cnt * sizeof (*temp));
@@ -465,11 +448,11 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
       temp[m].len = platform_len;
       ++m;
     }
-#ifdef USE_TLS
+
   temp[m].str = "tls";
   temp[m].len = 3;
   ++m;
-#endif
+
   assert (m == cnt);
 
   /* Determine the total size of all strings together.  */
@@ -487,13 +470,8 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
   *sz = 1 << cnt;
   result = (struct r_strlenpair *) malloc (*sz * sizeof (*result) + total);
   if (result == NULL)
-    {
-#ifndef USE_TLS
-    no_memory:
-#endif
-      _dl_signal_error (ENOMEM, NULL, NULL,
-                       N_("cannot create capability list"));
-    }
+    _dl_signal_error (ENOMEM, NULL, NULL,
+                     N_("cannot create capability list"));
 
   if (cnt == 1)
     {
index a0f4f77ffa58d333acedc1c97f3a52340d489113..d5865ab40925d2608213cc51302b364bfb8d2d5c 100644 (file)
 #include <sys/param.h>
 
 #include <tls.h>
-
-/* We don't need any of this if TLS is not supported.  */
-#ifdef USE_TLS
-
-# include <dl-tls.h>
-# include <ldsodefs.h>
+#include <dl-tls.h>
+#include <ldsodefs.h>
 
 /* Amount of excess space to allocate in the static TLS area
    to allow dynamic loading of modules defining IE-model TLS data.  */
-# define TLS_STATIC_SURPLUS    64 + DL_NNS * 100
+#define TLS_STATIC_SURPLUS     64 + DL_NNS * 100
 
 /* Value used for dtv entries for which the allocation is delayed.  */
-# define TLS_DTV_UNALLOCATED   ((void *) -1l)
+#define TLS_DTV_UNALLOCATED    ((void *) -1l)
 
 
 /* Out-of-memory handler.  */
-# ifdef SHARED
+#ifdef SHARED
 static void
 __attribute__ ((__noreturn__))
 oom (void)
 {
   _dl_fatal_printf ("cannot allocate memory for thread-local data: ABORT\n");
 }
-# endif
+#endif
 
 
 size_t
@@ -113,7 +109,7 @@ _dl_next_tls_modid (void)
 }
 
 
-# ifdef SHARED
+#ifdef SHARED
 void
 internal_function
 _dl_determine_tlsoffset (void)
@@ -158,7 +154,7 @@ _dl_determine_tlsoffset (void)
      memory requirement for the next TLS block is smaller than the
      gap.  */
 
-# if TLS_TCB_AT_TP
+#if TLS_TCB_AT_TP
   /* We simply start with zero.  */
   size_t offset = 0;
 
@@ -205,7 +201,7 @@ _dl_determine_tlsoffset (void)
   GL(dl_tls_static_used) = offset;
   GL(dl_tls_static_size) = (roundup (offset + TLS_STATIC_SURPLUS, max_align)
                            + TLS_TCB_SIZE);
-# elif TLS_DTV_AT_TP
+#elif TLS_DTV_AT_TP
   /* The TLS blocks start right after the TCB.  */
   size_t offset = TLS_TCB_SIZE;
 
@@ -249,9 +245,9 @@ _dl_determine_tlsoffset (void)
   GL(dl_tls_static_used) = offset;
   GL(dl_tls_static_size) = roundup (offset + TLS_STATIC_SURPLUS,
                                    TLS_TCB_ALIGN);
-# else
-#  error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
-# endif
+#else
+# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
+#endif
 
   /* The alignment requirement for the static TLS block.  */
   GL(dl_tls_static_align) = max_align;
@@ -288,7 +284,7 @@ _dl_tls_setup (void)
   return 0;
 }
 rtld_hidden_def (_dl_tls_setup)
-# endif
+#endif
 
 static void *
 internal_function
@@ -337,13 +333,13 @@ _dl_allocate_tls_storage (void)
   void *result;
   size_t size = GL(dl_tls_static_size);
 
-# if TLS_DTV_AT_TP
+#if TLS_DTV_AT_TP
   /* Memory layout is:
      [ TLS_PRE_TCB_SIZE ] [ TLS_TCB_SIZE ] [ TLS blocks ]
                          ^ This should be returned.  */
   size += (TLS_PRE_TCB_SIZE + GL(dl_tls_static_align) - 1)
          & ~(GL(dl_tls_static_align) - 1);
-# endif
+#endif
 
   /* Allocate a correctly aligned chunk of memory.  */
   result = __libc_memalign (GL(dl_tls_static_align), size);
@@ -352,14 +348,14 @@ _dl_allocate_tls_storage (void)
       /* Allocate the DTV.  */
       void *allocated = result;
 
-# if TLS_TCB_AT_TP
+#if TLS_TCB_AT_TP
       /* The TCB follows the TLS blocks.  */
       result = (char *) result + size - TLS_TCB_SIZE;
 
       /* Clear the TCB data structure.  We can't ask the caller (i.e.
         libpthread) to do it, because we will initialize the DTV et al.  */
       memset (result, '\0', TLS_TCB_SIZE);
-# elif TLS_DTV_AT_TP
+#elif TLS_DTV_AT_TP
       result = (char *) result + size - GL(dl_tls_static_size);
 
       /* Clear the TCB data structure and TLS_PRE_TCB_SIZE bytes before it.
@@ -367,7 +363,7 @@ _dl_allocate_tls_storage (void)
         initialize the DTV et al.  */
       memset ((char *) result - TLS_PRE_TCB_SIZE, '\0',
              TLS_PRE_TCB_SIZE + TLS_TCB_SIZE);
-# endif
+#endif
 
       result = allocate_dtv (result);
       if (result == NULL)
@@ -428,14 +424,14 @@ _dl_allocate_tls_init (void *result)
 
          assert (map->l_tls_modid == cnt);
          assert (map->l_tls_blocksize >= map->l_tls_initimage_size);
-# if TLS_TCB_AT_TP
+#if TLS_TCB_AT_TP
          assert ((size_t) map->l_tls_offset >= map->l_tls_blocksize);
          dest = (char *) result - map->l_tls_offset;
-# elif TLS_DTV_AT_TP
+#elif TLS_DTV_AT_TP
          dest = (char *) result + map->l_tls_offset;
-# else
-#  error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
-# endif
+#else
+# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
+#endif
 
          /* Copy the initialization image and clear the BSS part.  */
          dtv[map->l_tls_modid].pointer.val = dest;
@@ -491,21 +487,21 @@ _dl_deallocate_tls (void *tcb, bool dealloc_tcb)
 
   if (dealloc_tcb)
     {
-# if TLS_TCB_AT_TP
+#if TLS_TCB_AT_TP
       /* The TCB follows the TLS blocks.  Back up to free the whole block.  */
       tcb -= GL(dl_tls_static_size) - TLS_TCB_SIZE;
-# elif TLS_DTV_AT_TP
+#elif TLS_DTV_AT_TP
       /* Back up the TLS_PRE_TCB_SIZE bytes.  */
       tcb -= (TLS_PRE_TCB_SIZE + GL(dl_tls_static_align) - 1)
             & ~(GL(dl_tls_static_align) - 1);
-# endif
+#endif
       free (tcb);
     }
 }
 rtld_hidden_def (_dl_deallocate_tls)
 
 
-# ifdef SHARED
+#ifdef SHARED
 /* The __tls_get_addr function has two basic forms which differ in the
    arguments.  The IA-64 form takes two parameters, the module ID and
    offset.  The form used, among others, on IA-32 takes a reference to
@@ -513,15 +509,15 @@ rtld_hidden_def (_dl_deallocate_tls)
    form seems to be more often used (in the moment) so we default to
    it.  Users of the IA-64 form have to provide adequate definitions
    of the following macros.  */
-#  ifndef GET_ADDR_ARGS
-#   define GET_ADDR_ARGS tls_index *ti
-#  endif
-#  ifndef GET_ADDR_MODULE
-#   define GET_ADDR_MODULE ti->ti_module
-#  endif
-#  ifndef GET_ADDR_OFFSET
-#   define GET_ADDR_OFFSET ti->ti_offset
-#  endif
+# ifndef GET_ADDR_ARGS
+#  define GET_ADDR_ARGS tls_index *ti
+# endif
+# ifndef GET_ADDR_MODULE
+#  define GET_ADDR_MODULE ti->ti_module
+# endif
+# ifndef GET_ADDR_OFFSET
+#  define GET_ADDR_OFFSET ti->ti_offset
+# endif
 
 
 static void *
@@ -732,7 +728,7 @@ __tls_get_addr (GET_ADDR_ARGS)
 
   return (char *) p + GET_ADDR_OFFSET;
 }
-# endif
+#endif
 
 
 /* Look up the module's TLS block as for __tls_get_addr,
@@ -840,4 +836,3 @@ cannot create TLS data structures"));
   listp->slotinfo[idx].map = l;
   listp->slotinfo[idx].gen = GL(dl_tls_generation) + 1;
 }
-#endif /* use TLS */
index 6800272ac7e814568f6ba421217f3cff31286af7..0716a2acb817cafa01bf3a147e6600844b60d772 100644 (file)
@@ -1196,9 +1196,7 @@ main (int argc, char **argv)
          add_dir (argv[i]);
     }
 
-#ifdef USE_TLS
   hwcap_extra[63 - _DL_FIRST_EXTRA] = "tls";
-#endif
 
   set_hwcap ();
 
index 8f0b0703a71963a6d75470e11cf3a62cff9623a7..5e6ee516039d2f05fdc37b9f8f13b44acffcd768 100644 (file)
@@ -1,5 +1,5 @@
 /* Run time dynamic linker.
-   Copyright (C) 1995-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+   Copyright (C) 1995-2002,2003,2004,2005,2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -207,8 +207,7 @@ DL_SYSINFO_IMPLEMENTATION
    is fine, too.  The latter is important here.  We can avoid setting
    up a temporary link map for ld.so if we can mark _rtld_global as
    hidden.  */
-#if defined PI_STATIC_AND_HIDDEN && defined HAVE_HIDDEN \
-    && defined HAVE_VISIBILITY_ATTRIBUTE
+#ifdef PI_STATIC_AND_HIDDEN
 # define DONT_USE_BOOTSTRAP_MAP        1
 #endif
 
@@ -292,7 +291,7 @@ _dl_start_final (void *arg, struct dl_start_final_info *info)
   GL(dl_rtld_map).l_map_end = (ElfW(Addr)) _end;
   GL(dl_rtld_map).l_text_end = (ElfW(Addr)) _etext;
   /* Copy the TLS related data if necessary.  */
-#if USE_TLS && !defined DONT_USE_BOOTSTRAP_MAP
+#ifndef DONT_USE_BOOTSTRAP_MAP
 # if USE___THREAD
   assert (info->l.l_tls_modid != 0);
   GL(dl_rtld_map).l_tls_blocksize = info->l.l_tls_blocksize;
@@ -400,7 +399,7 @@ _dl_start (void *arg)
   bootstrap_map.l_ld = (void *) bootstrap_map.l_addr + elf_machine_dynamic ();
   elf_get_dynamic_info (&bootstrap_map, NULL);
 
-#if defined USE_TLS && NO_TLS_OFFSET != 0
+#if NO_TLS_OFFSET != 0
   bootstrap_map.l_tls_offset = NO_TLS_OFFSET;
 #endif
 
@@ -701,7 +700,6 @@ match_version (const char *string, struct link_map *map)
   return 0;
 }
 
-#ifdef USE_TLS
 static bool tls_init_tp_called;
 
 static void *
@@ -773,7 +771,6 @@ cannot allocate TLS data structures for initial thread");
 
   return tcbp;
 }
-#endif
 
 #ifdef _LIBC_REENTRANT
 /* _dl_error_catch_tsd points to this for the single-threaded case.
@@ -861,18 +858,14 @@ dl_main (const ElfW(Phdr) *phdr,
   hp_timing_t stop;
   hp_timing_t diff;
 #endif
-#ifdef USE_TLS
   void *tcbp = NULL;
-#endif
 
 #ifdef _LIBC_REENTRANT
   /* Explicit initialization since the reloc would just be more work.  */
   GL(dl_error_catch_tsd) = &_dl_initial_error_catch_tsd;
 #endif
 
-#ifdef USE_TLS
   GL(dl_init_static_tls) = &_dl_nothread_init_static_tls;
-#endif
 
 #if defined SHARED && defined _LIBC_REENTRANT \
     && defined __rtld_lock_default_lock_recursive
@@ -1157,7 +1150,6 @@ of this helper program; chances are you did not intend to run this program.\n\
        break;
 
       case PT_TLS:
-#ifdef USE_TLS
        if (ph->p_memsz > 0)
          {
            /* Note that in the case the dynamic linker we duplicate work
@@ -1177,10 +1169,6 @@ of this helper program; chances are you did not intend to run this program.\n\
            /* This image gets the ID one.  */
            GL(dl_tls_max_dtv_idx) = main_map->l_tls_modid = 1;
          }
-#else
-       _dl_fatal_printf ("\
-ld.so does not support TLS, but program uses it!\n");
-#endif
        break;
 
       case PT_GNU_STACK:
@@ -1192,13 +1180,12 @@ ld.so does not support TLS, but program uses it!\n");
        main_map->l_relro_size = ph->p_memsz;
        break;
       }
-#ifdef USE_TLS
-    /* Adjust the address of the TLS initialization image in case
-       the executable is actually an ET_DYN object.  */
-    if (main_map->l_tls_initimage != NULL)
-      main_map->l_tls_initimage
-       = (char *) main_map->l_tls_initimage + main_map->l_addr;
-#endif
+
+  /* Adjust the address of the TLS initialization image in case
+     the executable is actually an ET_DYN object.  */
+  if (main_map->l_tls_initimage != NULL)
+    main_map->l_tls_initimage
+      = (char *) main_map->l_tls_initimage + main_map->l_addr;
   if (! main_map->l_map_end)
     main_map->l_map_end = ~0;
   if (! main_map->l_text_end)
@@ -1401,12 +1388,10 @@ ld.so does not support TLS, but program uses it!\n");
        break;
       }
 
-#ifdef USE_TLS
   /* Add the dynamic linker to the TLS list if it also uses TLS.  */
   if (GL(dl_rtld_map).l_tls_blocksize != 0)
     /* Assign a module ID.  Do this before loading any audit modules.  */
     GL(dl_rtld_map).l_tls_modid = _dl_next_tls_modid ();
-#endif
 
   /* If we have auditing DSOs to load, do it now.  */
   if (__builtin_expect (audit_list != NULL, 0))
@@ -1416,7 +1401,6 @@ ld.so does not support TLS, but program uses it!\n");
       struct audit_list *al = audit_list->next;
       do
        {
-#ifdef USE_TLS
          int tls_idx = GL(dl_tls_max_dtv_idx);
 
          /* Now it is time to determine the layout of the static TLS
@@ -1428,7 +1412,7 @@ ld.so does not support TLS, but program uses it!\n");
          /* Since we start using the auditing DSOs right away we need to
             initialize the data structures now.  */
          tcbp = init_tls ();
-#endif
+
          struct dlmopen_args dlmargs;
          dlmargs.fname = al->name;
          dlmargs.map = NULL;
@@ -1543,9 +1527,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
                  assert (GL(dl_ns)[ns]._ns_loaded == NULL);
                  assert (GL(dl_ns)[ns]._ns_nloaded == 0);
 
-#ifdef USE_TLS
                  GL(dl_tls_max_dtv_idx) = tls_idx;
-#endif
                  goto not_loaded;
                }
            }
@@ -1821,7 +1803,6 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
     _dl_receive_error (print_missing_version, version_check_doit, &args);
   }
 
-#ifdef USE_TLS
   /* We do not initialize any of the TLS functionality unless any of the
      initial modules uses TLS.  This makes dynamic loading of modules with
      TLS impossible, but to support it requires either eagerly doing setup
@@ -1832,7 +1813,6 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
   bool was_tls_init_tp_called = tls_init_tp_called;
   if (tcbp == NULL)
     tcbp = init_tls ();
-#endif
 
   /* Set up the stack checker's canary.  */
   uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard ();
@@ -1889,13 +1869,12 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
                          (size_t) l->l_map_start,
                          (int) sizeof l->l_addr * 2,
                          (size_t) l->l_addr);
-#ifdef USE_TLS
+
              if (l->l_tls_modid)
                _dl_printf (" TLS(0x%Zx, 0x%0*Zx)\n", l->l_tls_modid,
                            (int) sizeof l->l_tls_offset * 2,
                            (size_t) l->l_tls_offset);
              else
-#endif
                _dl_printf ("\n");
            }
        }
@@ -2178,11 +2157,9 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
          if (l->l_relro_size)
            _dl_protect_relro (l);
 
-#ifdef USE_TLS
          /* Add object to slot information data if necessasy.  */
          if (l->l_tls_blocksize != 0 && tls_init_tp_called)
            _dl_add_to_slotinfo (l);
-#endif
        }
 
       _dl_sysdep_start_cleanup ();
@@ -2229,11 +2206,9 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
            _dl_relocate_object (l, l->l_scope, GLRO(dl_lazy),
                                 consider_profiling);
 
-#ifdef USE_TLS
          /* Add object to slot information data if necessasy.  */
          if (l->l_tls_blocksize != 0 && tls_init_tp_called)
            _dl_add_to_slotinfo (l);
-#endif
 
          l = l->l_prev;
        }
@@ -2262,7 +2237,6 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
 # define NONTLS_INIT_TP do { } while (0)
 #endif
 
-#ifdef USE_TLS
   if (!was_tls_init_tp_called && GL(dl_tls_max_dtv_idx) > 0)
     ++GL(dl_tls_generation);
 
@@ -2280,9 +2254,6 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
        _dl_fatal_printf ("cannot set up thread-local storage: %s\n",
                          lossage);
     }
-#else
-  NONTLS_INIT_TP;
-#endif
 
   if (! prelinked && rtld_multiple_ref)
     {
diff --git a/elf/tst-thrlock.c b/elf/tst-thrlock.c
new file mode 100644 (file)
index 0000000..fe72eba
--- /dev/null
@@ -0,0 +1,59 @@
+#include <dlfcn.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gnu/lib-names.h>
+
+static void *
+tf (void *arg)
+{
+  void *h = dlopen (LIBM_SO, RTLD_LAZY);
+  if (h == NULL)
+    {
+      printf ("dlopen failed: %s\n", dlerror ());
+      exit (1);
+    }
+  if (dlsym (h, "sin") == NULL)
+    {
+      printf ("dlsym failed: %s\n", dlerror ());
+      exit (1);
+    }
+  if (dlclose (h) != 0)
+    {
+      printf ("dlclose failed: %s\n", dlerror ());
+      exit (1);
+    }
+  return NULL;
+}
+
+
+static int
+do_test (void)
+{
+#define N 10
+  pthread_t th[N];
+  for (int i = 0; i < N; ++i)
+    {
+      int e = pthread_create (&th[i], NULL, tf, NULL);
+      if (e != 0)
+       {
+         printf ("pthread_create failed with %d (%s)\n", e, strerror (e));
+         return 1;
+       }
+    }
+  for (int i = 0; i < N; ++i)
+    {
+      void *res;
+      int e = pthread_join (th[i], &res);
+      if (e != 0 || res != NULL)
+       {
+         puts ("thread failed");
+         return 1;
+       }
+    }
+  return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
index e97b5081fdc5b3df0ae8223a702c28eabc471506..26c2811178f9c2fd6cd8278f58c06dd4e9b7fde6 100644 (file)
@@ -9,7 +9,6 @@
 static int
 do_test (void)
 {
-#ifdef USE_TLS
   static const char modname[] = "tst-tlsmod2.so";
   int result = 0;
   int *foop;
@@ -83,9 +82,6 @@ do_test (void)
   dlclose (h);
 
   return result;
-#else
-  return 0;
-#endif
 }
 
 
index 478f5bbdcdf6e24933684aed683040db44bce01c..3b9b10f9aaa1e54a2b27b3099f7f300d7014dc18 100644 (file)
@@ -3,21 +3,18 @@
 
 #include <tls.h>
 
-#ifdef USE_TLS
-# include "tls-macros.h"
+#include "tls-macros.h"
 
 
 /* Two common 'int' variables in TLS.  */
 COMMON_INT_DEF(foo);
 COMMON_INT_DEF(bar);
-#endif
 
 
 #define TEST_FUNCTION do_test ()
 static int
 do_test (void)
 {
-#ifdef USE_TLS
   int result = 0;
   int *ap, *bp;
 
@@ -82,9 +79,6 @@ do_test (void)
     }
 
   return result;
-#else
-  return 0;
-#endif
 }
 
 
index 1be6adc29372916a66159637cbb81c000a250fd5..bffc332a0aa1b5b1bd5ffff135c7b3daf517f5d5 100644 (file)
@@ -1,8 +1,7 @@
 #include <tls.h>
 #include <stdlib.h>
 
-#if defined USE_TLS && defined HAVE___THREAD \
-    && defined HAVE_TLS_MODEL_ATTRIBUTE
+#if defined HAVE___THREAD && defined HAVE_TLS_MODEL_ATTRIBUTE
 # define USE_TLS__THREAD
 
 struct A
index 428fd5293eb8b455d5244309e18667576eb02bd6..c1e6ba7e2cbeb0054e1e5e65e6c3fc1c19928a93 100644 (file)
@@ -6,9 +6,9 @@
 
 #include <tls.h>
 
-#if USE_TLS && HAVE___THREAD
+#if HAVE___THREAD
 
-#define AL 4096
+# define AL 4096
 struct foo
 {
   int i;
@@ -55,11 +55,11 @@ do_test (void)
   return result;
 }
 
-#define TEST_FUNCTION do_test ()
+# define TEST_FUNCTION do_test ()
 
 #else
 
-#define TEST_FUNCTION 0
+# define TEST_FUNCTION 0
 
 #endif
 
index 417489968ec9db2e2f93b017c1b4da68259c26f9..3d13272c08a0c1426fef68f02c273afb70cfd832 100644 (file)
@@ -3,21 +3,18 @@
 
 #include <tls.h>
 
-#ifdef USE_TLS
-# include "tls-macros.h"
+#include "tls-macros.h"
 
 
 /* Two 'int' variables in TLS.  */
 VAR_INT_DEF(foo);
 VAR_INT_DEF(bar);
-#endif
 
 
 #define TEST_FUNCTION do_test ()
 static int
 do_test (void)
 {
-#ifdef USE_TLS
   int result = 0;
   int *ap, *bp;
 
@@ -82,9 +79,6 @@ do_test (void)
     }
 
   return result;
-#else
-  return 0;
-#endif
 }
 
 
index 84be43575b6c59f81f74e357d7b56223e07d4c45..c5e501eb4ee37f8a7e98f1ae800c4f05dfcef6e3 100644 (file)
@@ -3,15 +3,13 @@
 
 #include <tls.h>
 
-#ifdef USE_TLS
-# include "tls-macros.h"
+#include "tls-macros.h"
 
 
 /* One define int variable, two externs.  */
 COMMON_INT_DECL(foo);
 VAR_INT_DECL(bar);
 VAR_INT_DEF(baz);
-#endif
 
 
 extern int in_dso (void);
@@ -21,7 +19,6 @@ extern int in_dso (void);
 static int
 do_test (void)
 {
-#ifdef USE_TLS
   int result = 0;
   int *ap, *bp, *cp;
 
@@ -67,9 +64,6 @@ do_test (void)
   result |= in_dso ();
 
   return result;
-#else
-  return 0;
-#endif
 }
 
 
index f92ee53ce5542c334b173bfaa615d2cccf9df92b..4ae33db24d9e633fac73613aef6e24e8e542f3ac 100644 (file)
@@ -9,7 +9,6 @@
 static int
 do_test (void)
 {
-#ifdef USE_TLS
   static const char modname[] = "tst-tlsmod2.so";
   int result = 0;
   int *foop;
@@ -47,9 +46,6 @@ do_test (void)
   dlclose (h);
 
   return result;
-#else
-  return 0;
-#endif
 }
 
 
index a571d2cd3fa9685cad18c520e39f010e6914f9ec..27b18294fb2b8eb370101bfef12eab1dbe10a28e 100644 (file)
@@ -9,7 +9,6 @@
 static int
 do_test (void)
 {
-#ifdef USE_TLS
   static const char modname[] = "tst-tlsmod2.so";
   int result = 0;
   int *foop;
@@ -63,9 +62,6 @@ do_test (void)
   dlclose (h);
 
   return result;
-#else
-  return 0;
-#endif
 }
 
 
index 68d706538f4573d1d83408d7da3613a2d240ae74..021622d9c7cee6d2d080268694b1372960fb1fe3 100644 (file)
@@ -10,7 +10,6 @@
 static int
 do_test (void)
 {
-#ifdef USE_TLS
   static const char modname[] = "tst-tlsmod2.so";
   int result = 0;
   int *foop;
@@ -81,9 +80,6 @@ do_test (void)
     }
 
   return result;
-#else
-  return 0;
-#endif
 }
 
 
index 37f1a63e16465294b236c2f0bf10f59f450388f2..1edc2b63568ee821d245dcf151367d82b429af3d 100644 (file)
@@ -10,7 +10,6 @@
 static int
 do_test (void)
 {
-#ifdef USE_TLS
   static const char modname[] = "tst-tlsmod3.so";
   int result = 0;
   int (*fp) (void);
@@ -52,9 +51,6 @@ do_test (void)
     }
 
   return result;
-#else
-  return 0;
-#endif
 }
 
 
index ccc4e9f6fa423dc39f895c40ad38b78239961938..36b1baca63625b28ac157ec2231a71cd4ffb9585 100644 (file)
@@ -10,7 +10,6 @@
 static int
 do_test (void)
 {
-#ifdef USE_TLS
   static const char modname1[] = "$ORIGIN/tst-tlsmod3.so";
   static const char modname2[] = "$ORIGIN/tst-tlsmod4.so";
   int result = 0;
@@ -165,9 +164,6 @@ do_test (void)
     }
 
   return result;
-#else
-  return 0;
-#endif
 }
 
 
index e317696dfc348b61954a6f12d59030be9d6c4955..12078518fad5aa687d0b79408b2cbc668207e64e 100644 (file)
@@ -9,7 +9,6 @@
 static int
 do_test (void)
 {
-#ifdef USE_TLS
   static const char modname1[] = "tst-tlsmod5.so";
   static const char modname2[] = "tst-tlsmod6.so";
   int result = 0;
@@ -33,9 +32,6 @@ do_test (void)
     dlclose (h2);
 
   return result;
-#else
-  return 0;
-#endif
 }
 
 
index c74a617b77a3bc7e3705162b8794fabff6140129..4d966c9472ca3cc471ada8557697837702ebc305 100644 (file)
@@ -2,7 +2,6 @@
 
 #include <tls.h>
 
-#ifdef USE_TLS
 #include "tls-macros.h"
 
 
@@ -10,7 +9,6 @@
 COMMON_INT_DEF(foo);
 VAR_INT_DEF(bar);
 VAR_INT_DECL(baz);
-#endif
 
 extern int in_dso (void);
 
@@ -18,7 +16,6 @@ int
 in_dso (void)
 {
   int result = 0;
-#ifdef USE_TLS
   int *ap, *bp, *cp;
 
   /* Get variables using initial exec model.  */
@@ -62,7 +59,6 @@ in_dso (void)
       printf ("baz = %d\n", *cp);
       result = 1;
     }
-#endif
 
   return result;
 }
index beca89f6fec753d4f972bb42b8d10f97e772006a..e4e23af2d851aa038924969e907eabea5d427d33 100644 (file)
@@ -1,7 +1,6 @@
 #include <tls.h>
 
-#if defined USE_TLS && defined HAVE___THREAD \
-    && defined HAVE_TLS_MODEL_ATTRIBUTE
+#if defined HAVE___THREAD && defined HAVE_TLS_MODEL_ATTRIBUTE
 __thread int a[2] __attribute__ ((tls_model ("initial-exec")));
 #else
 int a[2];
index 14b12b032b42900cc7823056b53b69eaa5531df9..70a02131ee85d8bb44605596e0eb9868fe7a89b2 100644 (file)
@@ -1,7 +1,6 @@
 #include <tls.h>
 
-#if defined USE_TLS && defined HAVE___THREAD \
-    && defined HAVE_TLS_MODEL_ATTRIBUTE
+#if defined HAVE___THREAD && defined HAVE_TLS_MODEL_ATTRIBUTE
 __thread int b[2] __attribute__ ((tls_model ("initial-exec")));
 #else
 int b[2];
index 0bb393d9c5d54c5cac446c34c824c2db25db9a01..ad1d179aac2b0c5dd678871a36ae20996b156d41 100644 (file)
@@ -3,9 +3,9 @@
 
 #include <tls.h>
 
-#if USE_TLS && HAVE___THREAD
+#if HAVE___THREAD
 
-#define AL 4096
+# define AL 4096
 struct foo
 {
   int i;
@@ -15,9 +15,9 @@ static __thread struct foo f;
 static struct foo g;
 
 
-#ifndef FCT
-# define FCT in_dso1
-#endif
+# ifndef FCT
+#  define FCT in_dso1
+# endif
 
 
 int
index 98d9d3e5185c2e5a006fb58de7c80ed2076e1854..981923313c5454f01b0fdba0eb1f0d1d2466b1f3 100644 (file)
@@ -2,7 +2,6 @@
 
 #include <tls.h>
 
-#ifdef USE_TLS
 #include "tls-macros.h"
 
 
@@ -35,4 +34,3 @@ in_dso (int n, int *caller_foop)
 
   return result;
 }
-#endif
index 4a8aad659f6aee294417b99ddbdeaed5737e7500..5c456ee2da473271383308b816b2a34b20c1e8da 100644 (file)
@@ -2,8 +2,7 @@
 
 #include <tls.h>
 
-#ifdef USE_TLS
-# include "tls-macros.h"
+#include "tls-macros.h"
 
 extern int in_dso (int n, int *caller_foop);
 
@@ -38,4 +37,3 @@ in_dso2 (void)
 
   return result;
 }
-#endif
index 5285e821b0e94d7df1eda6aef23e7e125514bd77..dd954866186842402a9e95e4cabbf50bad8268b5 100644 (file)
@@ -2,8 +2,7 @@
 
 #include <tls.h>
 
-#ifdef USE_TLS
-# include "tls-macros.h"
+#include "tls-macros.h"
 
 
 COMMON_INT_DEF(baz);
@@ -35,4 +34,3 @@ in_dso (int n, int *caller_bazp)
 
   return result;
 }
-#endif
index 2ec69e13b3f08d2929a62a85cdbaa2cb760d19a8..00d3a9d9203658126e7569482003d913956663dc 100644 (file)
@@ -1,7 +1,5 @@
 #include <tls.h>
 
-#ifdef USE_TLS
 #include "tls-macros.h"
 
 COMMON_INT_DEF(foo);
-#endif
index 0fda51b226fb1ec7d943dceb7d8a88525c35836d..244d9ae485adab8345a866980f1f60adce8b5c9d 100644 (file)
@@ -1,7 +1,5 @@
 #include <tls.h>
 
-#ifdef USE_TLS
 #include "tls-macros.h"
 
 COMMON_INT_DEF(bar);
-#endif
index d80308663a69984bf63ecffb468a6938f6a30dcf..ae06ce3ee7dead505a67fc29eac0b70ae257d51f 100644 (file)
@@ -3,5 +3,5 @@ glibc-branch := fedora
 glibc-base := HEAD
 DIST_BRANCH := devel
 COLLECTION := dist-fc4
-fedora-sync-date := 2006-10-27 19:02 UTC
-fedora-sync-tag := fedora-glibc-20061027T1902
+fedora-sync-date := 2006-10-29 21:55 UTC
+fedora-sync-tag := fedora-glibc-20061029T2155
index b61f9cc541b39465c1a7a3f2af9b599a7c71f3dd..e3fe59977eae27c90814a00867b379f89b0bc237 100644 (file)
@@ -1,4 +1,4 @@
-%define glibcrelease 2
+%define glibcrelease 3
 %define auxarches i586 i686 athlon sparcv9 alphaev6
 %define xenarches i686 athlon
 %ifarch %{xenarches}
@@ -1528,6 +1528,9 @@ rm -f *.filelist*
 %endif
 
 %changelog
+* Sun Oct 29 2006 Jakub Jelinek <jakub@redhat.com> 2.5.90-3
+- fix suid/sgid binaries on i?86/x86_64 (#212723)
+
 * Fri Oct 27 2006 Jakub Jelinek <jakub@redhat.com> 2.5.90-2
 - fix ia64 build
 - don't call _dl_close outside of dl_load_lock critical section
index 9144dd2f3fb368d30a4e68eaf5dc4cf33f7ddded..79c8f7d31bbd24801aab735c5e35e71e4068d2ba 100644 (file)
@@ -47,6 +47,9 @@ libc_hidden_proto (_dl_addr)
 
 /* Close an object previously opened by _dl_open.  */
 extern void _dl_close (void *map) attribute_hidden;
+/* Same as above, but without locking and safety checks for user
+   provided map arguments.  */
+extern void _dl_close_worker (struct link_map *map) attribute_hidden;
 
 /* Look up NAME in shared object HANDLE (which may be RTLD_DEFAULT or
    RTLD_NEXT).  WHO is the calling function, for RTLD_NEXT.  Returns
index fe8bca44c5de53e25bad1c16da28b78684624cb5..80c7b6ec132ce0470d054d4036670c7fb5ad394e 100644 (file)
@@ -19,7 +19,7 @@ extern int rtld_errno attribute_hidden;
 
 # else
 
-#  include <tls.h>             /* Defines USE_TLS.  */
+#  include <tls.h>
 
 #  if USE___THREAD
 #   undef  errno
index da46f5e8040e15395b97d7284203f78707410a8d..9eabcbd3548679b710d2d1757a8ffeda9ba2d35c 100644 (file)
 #  define _weak_alias(name, aliasname) \
   extern __typeof (name) aliasname __attribute__ ((weak, alias (#name)));
 
+/* Same as WEAK_ALIAS, but mark symbol as hidden.  */
+#  define weak_hidden_alias(name, aliasname) \
+  _weak_hidden_alias (name, aliasname)
+#  define _weak_hidden_alias(name, aliasname) \
+  extern __typeof (name) aliasname \
+    __attribute__ ((weak, alias (#name), __visibility__ ("hidden")));
+
 /* Declare SYMBOL as weak undefined symbol (resolved to 0 if not defined).  */
 #  define weak_extern(symbol) _weak_extern (weak symbol)
 #  define _weak_extern(expr) _Pragma (#expr)
 # else
 
 #  define weak_alias(name, aliasname) strong_alias(name, aliasname)
+#  define weak_hidden_alias(name, aliasname) strong_alias(name, aliasname)
 #  define weak_extern(symbol) /* Nothing. */
 
 # endif
@@ -431,8 +439,7 @@ for linking")
   strong_alias(real, name)
 #endif
 
-#if defined HAVE_VISIBILITY_ATTRIBUTE \
-    && (defined SHARED || defined LIBC_NONSHARED)
+#if defined SHARED || defined LIBC_NONSHARED
 # define attribute_hidden __attribute__ ((visibility ("hidden")))
 #else
 # define attribute_hidden
@@ -444,11 +451,7 @@ for linking")
 # define attribute_tls_model_ie
 #endif
 
-#ifdef HAVE_Z_RELRO
-# define attribute_relro __attribute__ ((section (".data.rel.ro")))
-#else
-# define attribute_relro
-#endif
+#define attribute_relro __attribute__ ((section (".data.rel.ro")))
 
 /* Handling on non-exported internal names.  We have to do this only
    for shared code.  */
@@ -457,14 +460,9 @@ for linking")
 # define INTDEF(name) strong_alias (name, name##_internal)
 # define INTVARDEF(name) \
   _INTVARDEF (name, name##_internal)
-# if defined HAVE_VISIBILITY_ATTRIBUTE
-#  define _INTVARDEF(name, aliasname) \
+# define _INTVARDEF(name, aliasname) \
   extern __typeof (name) aliasname __attribute__ ((alias (#name), \
                                                   visibility ("hidden")));
-# else
-#  define _INTVARDEF(name, aliasname) \
-  extern __typeof (name) aliasname __attribute__ ((alias (#name)));
-# endif
 # define INTDEF2(name, newname) strong_alias (name, newname##_internal)
 # define INTVARDEF2(name, newname) _INTVARDEF (name, newname##_internal)
 #else
@@ -549,16 +547,10 @@ for linking")
    versioned_symbol (libc, __real_foo, foo, GLIBC_2_1);
    libc_hidden_ver (__real_foo, foo)  */
 
-#if defined SHARED && defined DO_VERSIONING \
-    && !defined HAVE_BROKEN_ALIAS_ATTRIBUTE && !defined NO_HIDDEN
+#if defined SHARED && defined DO_VERSIONING && !defined NO_HIDDEN
 # ifndef __ASSEMBLER__
-#  if !defined HAVE_VISIBILITY_ATTRIBUTE \
-      || defined HAVE_BROKEN_VISIBILITY_ATTRIBUTE
-#   define __hidden_proto_hiddenattr(attrs...)
-#  else
-#   define __hidden_proto_hiddenattr(attrs...) \
+#  define __hidden_proto_hiddenattr(attrs...) \
   __attribute__ ((visibility ("hidden"), ##attrs))
-#  endif
 #  define hidden_proto(name, attrs...) \
   __hidden_proto (name, __GI_##name, ##attrs)
 #  define __hidden_proto(name, internal, attrs...) \
index 80eff3a677964243981ddf77ae5350aa1370a72f..b45deabf7f6b029073908217ec70bb48a4c64c92 100644 (file)
@@ -42,7 +42,7 @@ extern unsigned int la_objopen (struct link_map *__map, Lmid_t __lmid,
 #include <stddef.h>
 #include <bits/linkmap.h>
 #include <dl-lookupcfg.h>
-#include <tls.h>               /* Defines USE_TLS.  */
+#include <tls.h>
 #include <bits/libc-lock.h>
 #include <rtld-lowlevel.h>
 
@@ -261,7 +261,6 @@ struct link_map
       const ElfW(Sym) *ret;
     } l_lookup_cache;
 
-#ifdef USE_TLS
     /* Thread-local storage related info.  */
 
     /* Start of the initialization image.  */
@@ -274,14 +273,13 @@ struct link_map
     size_t l_tls_align;
     /* Offset of first byte module alignment.  */
     size_t l_tls_firstbyte_offset;
-# ifndef NO_TLS_OFFSET
-#  define NO_TLS_OFFSET        0
-# endif
+#ifndef NO_TLS_OFFSET
+# define NO_TLS_OFFSET 0
+#endif
     /* For objects present at startup time: offset in the static TLS block.  */
     ptrdiff_t l_tls_offset;
     /* Index of the module in the dtv array.  */
     size_t l_tls_modid;
-#endif
 
     /* Information used to change permission after the relocations are
        done.  */
index e040380d79223e2e3f013b2cb8bee2a1fdba6298..b293b8f1c7387859100b2dc1e0a3064a13d4630f 100644 (file)
@@ -131,7 +131,6 @@ libc_hidden_proto (__vsnprintf_chk)
 libc_hidden_proto (__vfprintf_chk)
 
 #  if !defined NOT_IN_libc && defined SHARED && defined DO_VERSIONING \
-  && defined HAVE_VISIBILITY_ATTRIBUTE && !defined HAVE_BROKEN_ALIAS_ATTRIBUTE\
   && !defined NO_HIDDEN
 /* Special gcc builtins.  */
 extern size_t __builtin_fwrite (const void *, size_t, size_t, void *)
index ffd3e4e70c812a6ef38f7fc10405a3eb057bc4a6..1642456a73e9ff270f3e08cd6d27b35ecbdb4955 100644 (file)
@@ -5,8 +5,7 @@
 
 #include_next <tls.h>
 
-#if USE_TLS && HAVE___THREAD \
-    && (!defined NOT_IN_libc || defined IS_IN_libpthread)
+#if HAVE___THREAD && (!defined NOT_IN_libc || defined IS_IN_libpthread)
 
 # define USE___THREAD 1
 
index c06d747d4af5a9c0d647ffe6b47cad47f9086d06..4aadfbca01143ef0ba35a6c441442b1065aedeca 100644 (file)
@@ -90,19 +90,6 @@ CFLAGS-posix_fallocate64.c = -fexceptions
 CFLAGS-test-stat.c = -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
 CFLAGS-test-lfs.c = -D_LARGEFILE64_SOURCE
 
-ifeq (yes,$(have-protected))
-CFLAGS-stat.c = -DHAVE_DOT_HIDDEN
-CFLAGS-fstat.c = -DHAVE_DOT_HIDDEN
-CFLAGS-lstat.c = -DHAVE_DOT_HIDDEN
-CFLAGS-mknod.c = -DHAVE_DOT_HIDDEN
-CFLAGS-stat64.c = -DHAVE_DOT_HIDDEN
-CFLAGS-fstat64.c = -DHAVE_DOT_HIDDEN
-CFLAGS-lstat64.c = -DHAVE_DOT_HIDDEN
-CFLAGS-fstatat.c = -DHAVE_DOT_HIDDEN
-CFLAGS-fstatat64.c = -DHAVE_DOT_HIDDEN
-CFLAGS-mknodat.c = -DHAVE_DOT_HIDDEN
-endif
-
 test-stat2-ARGS = Makefile . $(objpfx)test-stat2
 
 tst-statvfs-ARGS = $(objpfx)tst-statvfs tst-statvfs.c /tmp
index 0f95c1a6e23c2c1362ba00534e39c4a715baa940..e2f9abd384b177e652b9d45b8d64ea27c7e11bef 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 2001, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
 #undef fstat
 #undef __fstat
 int
+attribute_hidden
 __fstat (int fd, struct stat *buf)
 {
   return __fxstat (_STAT_VER, fd, buf);
 }
 
-weak_alias (__fstat, fstat)
-
-/* Hide the symbol so that no definition but the one locally in the
-   executable or DSO is used.  */
-#ifdef HAVE_DOT_HIDDEN
-asm (".hidden\tfstat");
-asm (".hidden\t__fstat");
-#endif
+weak_hidden_alias (__fstat, fstat)
index 79bd967d8fc855df267c9c15ad73e2c3aed23a39..fe655444b2c27c5bfb210f6e4bf69bf0b7f307f3 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 2001, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
 
 #undef fstat64
 int
+attribute_hidden
 fstat64 (int fd, struct stat64 *buf)
 {
   return __fxstat64 (_STAT_VER, fd, buf);
 }
-
-/* Hide the symbol so that no definition but the one locally in the
-   executable or DSO is used.  */
-#ifdef HAVE_DOT_HIDDEN
-asm (".hidden\tfstat64");
-#endif
index 1ac80597a0ebc63204f50bfe677e6c35d6870007..abf083c72e1d73723c6779eb049b6413c54ecb8f 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
 
 #undef fstatat
 int
+attribute_hidden
 fstatat (int fd, const char *file, struct stat *buf, int flag)
 {
   return __fxstatat (_STAT_VER, fd, file, buf, flag);
 }
-
-/* Hide the symbol so that no definition but the one locally in the
-   executable or DSO is used.  */
-#ifdef HAVE_DOT_HIDDEN
-asm (".hidden\tfstatat");
-#endif
index a14b42d42e4742f2daf8ab2f9f76109cf1133b2f..6fdf709af512b3926a14693aa49f25e8e100730c 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
 
 #undef fstatat64
 int
+attribute_hidden
 fstatat64 (int fd, const char *file, struct stat64 *buf, int flag)
 {
   return __fxstatat64 (_STAT_VER, fd, file, buf, flag);
 }
-
-/* Hide the symbol so that no definition but the one locally in the
-   executable or DSO is used.  */
-#ifdef HAVE_DOT_HIDDEN
-asm (".hidden\tfstatat64");
-#endif
index c4d7abe2c28832f33b7504727018f946d32e2f2a..620e47877aa4b6c390fbe82b91efdad26041792c 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 2001, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
 #undef lstat
 #undef __lstat
 int
+attribute_hidden
 __lstat (const char *file, struct stat *buf)
 {
   return __lxstat (_STAT_VER, file, buf);
 }
 
-weak_alias (__lstat, lstat)
-
-/* Hide the symbol so that no definition but the one locally in the
-   executable or DSO is used.  */
-#ifdef HAVE_DOT_HIDDEN
-asm (".hidden\tlstat");
-asm (".hidden\t__lstat");
-#endif
+weak_hidden_alias (__lstat, lstat)
index 8a994e4867cf9b44f6ad8adfdb2110ee5cb6688c..3e4ba2d9727a58ad22d96e45be27696f3a1b3023 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 2001, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
 
 #undef lstat64
 int
+attribute_hidden
 lstat64 (const char *file, struct stat64 *buf)
 {
   return __lxstat64 (_STAT_VER, file, buf);
 }
-
-/* Hide the symbol so that no definition but the one locally in the
-   executable or DSO is used.  */
-#ifdef HAVE_DOT_HIDDEN
-asm (".hidden\tlstat64");
-#endif
index 7d43593a25692cf91a73d11d23fb4636d97ef656..cc5fd26105ab1ba17baef6ae9e9b2bdf4fd92f6c 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 2001, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
    all callers.  */
 
 int
+attribute_hidden
 __mknod (const char *path, mode_t mode, dev_t dev)
 {
   return __xmknod (_MKNOD_VER, path, mode, &dev);
 }
 
-weak_alias (__mknod, mknod)
-
-/* Hide the symbol so that no definition but the one locally in the
-   executable or DSO is used.  */
-#ifdef HAVE_DOT_HIDDEN
-asm (".hidden\tmknod");
-asm (".hidden\t__mknod");
-#endif
+weak_hidden_alias (__mknod, mknod)
index ac515b5b4838c5db270361d6f3578f8b9555a7cd..b02ba695f961ee811666738c427c551d69fe4638 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 2001, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 2001, 2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
    all callers.  */
 
 int
+attribute_hidden
 mknodat (int fd, const char *path, mode_t mode, dev_t dev)
 {
   return __xmknodat (_MKNOD_VER, fd, path, mode, &dev);
 }
-
-
-/* Hide the symbol so that no definition but the one locally in the
-   executable or DSO is used.  */
-#ifdef HAVE_DOT_HIDDEN
-asm (".hidden\tmknodat");
-#endif
index 6af604957e15622876b80242600b4d5d9f8f85d1..6f1c28fc567210b56194766c83a786bc43959080 100644 (file)
--- a/io/stat.c
+++ b/io/stat.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 2001, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
 
 #undef stat
 int
+attribute_hidden
 __stat (const char *file, struct stat *buf)
 {
   return __xstat (_STAT_VER, file, buf);
 }
 
-weak_alias (__stat, stat)
-
-/* Hide the symbol so that no definition but the one locally in the
-   executable or DSO is used.  */
-#ifdef HAVE_DOT_HIDDEN
-asm (".hidden\tstat");
-asm (".hidden\t__stat");
-#endif
+weak_hidden_alias (__stat, stat)
index cadf1e1f1da221479661476ec1b19d20285639e9..14e036a700c33a2cf9397b4a50f3b3fd7c422474 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 2001, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
 
 #undef stat64
 int
+attribute_hidden
 stat64 (const char *file, struct stat64 *buf)
 {
   return __xstat64 (_STAT_VER, file, buf);
 }
-
-/* Hide the symbol so that no definition but the one locally in the
-   executable or DSO is used.  */
-#ifdef HAVE_DOT_HIDDEN
-asm (".hidden\tstat64");
-#endif
index 8dc24ed98f5fcccf641402fca4a8167eb6802fbd..b2baf65be3f82748e2c517722123f8ddce6aa2ea 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993,1994,1996,1997,2000,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1994,1996,1997,2000,2002,2006
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -40,14 +41,9 @@ _IO_FILE *stderr = (FILE *) &_IO_2_1_stderr_;
 #undef _IO_stderr
 #ifdef _LIBC
 # define AL(name) AL2 (name, _IO_##name)
-# if defined HAVE_VISIBILITY_ATTRIBUTE
-#  define AL2(name, al) \
+# define AL2(name, al) \
   extern __typeof (name) al __attribute__ ((alias (#name),                    \
                                             visibility ("hidden")))
-# else
-#  define AL2(name, al) \
-  extern __typeof (name) al __attribute__ ((alias (#name)))
-# endif
 AL(stdin);
 AL(stdout);
 AL(stderr);
index a5cae3c5d177b83d3f7f1b5483205b30ca574342..2280f68df47ad3b3c91939702e2c3e9cc229b798 100644 (file)
@@ -1,5 +1,5 @@
 /* Locale object representing the global locale controlled by setlocale.
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -60,7 +60,7 @@ struct __locale_struct _nl_global_locale attribute_hidden =
   };
 
 #include <tls.h>
-#if USE_TLS && HAVE___THREAD
+#if HAVE___THREAD
 /* The tsd macros don't permit an initializer.  */
 __thread void *__libc_tsd_LOCALE = &_nl_global_locale;
 #else
index 4f746a298d1b3587b60aaadd77712acf3bdfd708..5c1f27f7e174e0d548a8d55e7546de0e35aa9ac1 100644 (file)
@@ -215,9 +215,7 @@ __libc_tsd_define (extern, LOCALE)
    we can use __thread variables.  So only in that case do we attempt this.  */
 #if !defined SHARED && defined HAVE___THREAD && defined HAVE_WEAK_SYMBOLS
 # include <tls.h>
-# if USE_TLS
-#  define NL_CURRENT_INDIRECT  1
-# endif
+# define NL_CURRENT_INDIRECT   1
 #endif
 
 #ifdef NL_CURRENT_INDIRECT
index 2179174d6412e4d49c3236a5997f8f1ed006f484..1d9f952112529d01b983f6b733728ee2057ce98f 100644 (file)
@@ -149,7 +149,7 @@ int __malloc_initialized = -1;
 
 static __malloc_ptr_t (*save_malloc_hook) (size_t __size,
                                           __const __malloc_ptr_t);
-# if !defined _LIBC || !defined USE_TLS || (defined SHARED && !USE___THREAD)
+# if !defined _LIBC || (defined SHARED && !USE___THREAD)
 static __malloc_ptr_t (*save_memalign_hook) (size_t __align, size_t __size,
                                             __const __malloc_ptr_t);
 # endif
@@ -385,7 +385,7 @@ extern struct dl_open_hook *_dl_open_hook;
 libc_hidden_proto (_dl_open_hook);
 # endif
 
-# if defined SHARED && defined USE_TLS && !USE___THREAD
+# if defined SHARED && !USE___THREAD
 /* This is called by __pthread_initialize_minimal when it needs to use
    malloc to set up the TLS state.  We cannot do the full work of
    ptmalloc_init (below) until __pthread_initialize_minimal has finished,
@@ -428,7 +428,7 @@ ptmalloc_init (void)
   __malloc_initialized = 0;
 
 #ifdef _LIBC
-# if defined SHARED && defined USE_TLS && !USE___THREAD
+# if defined SHARED && !USE___THREAD
   /* ptmalloc_init_minimal may already have been called via
      __libc_malloc_pthread_startup, above.  */
   if (mp_.pagesize == 0)
@@ -437,7 +437,7 @@ ptmalloc_init (void)
     ptmalloc_init_minimal();
 
 #ifndef NO_THREADS
-# if defined _LIBC && defined USE_TLS
+# if defined _LIBC
   /* We know __pthread_initialize_minimal has already been called,
      and that is enough.  */
 #   define NO_STARTER
index 708f0faf83116cdac9666825dda172ecb8be2f5d..8346e7345344cdd866de3177b6d09ce8a306a416 100644 (file)
@@ -1,5 +1,5 @@
 /* Malloc implementation for multiple threads without lock contention.
-   Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2001,2002,2003,2004,2005,2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Wolfram Gloger <wg@malloc.de>, 2001.
 
@@ -414,7 +414,7 @@ memalign_check(alignment, bytes, caller)
 #ifndef NO_THREADS
 
 # ifdef _LIBC
-#  if USE___THREAD || (defined USE_TLS && !defined SHARED)
+#  if USE___THREAD || !defined SHARED
     /* These routines are never needed in this configuration.  */
 #   define NO_STARTER
 #  endif
index 4cbce0455b9f0e49b4e66f7d3b2922099d3fef4f..d15ed57bd71c6a89550b65d8ea82a13ab1d04731 100644 (file)
@@ -1618,7 +1618,7 @@ static Void_t*   memalign_check(size_t alignment, size_t bytes,
                                const Void_t *caller);
 #ifndef NO_THREADS
 # ifdef _LIBC
-#  if USE___THREAD || (defined USE_TLS && !defined SHARED)
+#  if USE___THREAD || !defined SHARED
     /* These routines are never needed in this configuration.  */
 #   define NO_STARTER
 #  endif
index d6daa8efa39881fd4f7587b1b29a0745f8a5198b..baf3d4ea4d1416df233d79713162d612cd774ebb 100644 (file)
@@ -1,3 +1,63 @@
+2006-10-29  Jakub Jelinek  <jakub@redhat.com>
+
+       * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (RTLD_SINGLE_THREAD_P):
+       Define.
+       (SINGLE_THREAD_P): Define to 1 if IS_IN_rtld.
+       * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h: Likewise.
+       * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise.
+       * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: Likewise.
+       * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: Likewise.
+       * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
+       * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Likewise.
+       * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
+       * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Likewise.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: Likewise.
+       * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Likewise.
+
+2006-10-27  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/pthread/pthread_barrier_wait.c: Move to...
+       * pthread_barrier_wait.c: ...here.
+       * sysdeps/pthread/pthread_cond_broadcast.c: Move to...
+       * pthread_cond_broadcast.c: ...here.
+       * sysdeps/pthread/pthread_cond_signal.c: Move to...
+       * pthread_cond_signal.c: ...here.
+       * sysdeps/pthread/pthread_cond_timedwait.c: Move to...
+       * pthread_cond_timedwait.c: ...here.
+       * sysdeps/pthread/pthread_cond_wait.c: Move to...
+       * pthread_cond_wait.c: ...here.
+       * sysdeps/pthread/pthread_once.c: Move to...
+       * pthread_once.c: ...here.
+       * sysdeps/pthread/pthread_rwlock_rdlock.c: Move to...
+       * pthread_rwlock_rdlock.c: ...here.
+       * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Move to...
+       * pthread_rwlock_timedrdlock.c: ...here.
+       * sysdeps/pthread/pthread_rwlock_timedwrlock.c: Move to...
+       * pthread_rwlock_timedwrlock.c: ...here.
+       * sysdeps/pthread/pthread_rwlock_unlock.c: Move to...
+       * pthread_rwlock_unlock.c: ...here.
+       * sysdeps/pthread/pthread_rwlock_wrlock.c: Move to...
+       * pthread_rwlock_wrlock.c: ...here.
+       * sysdeps/pthread/pthread_spin_destroy.c: Move to...
+       * pthread_spin_destroy.c: ...here.
+       * sysdeps/pthread/pthread_spin_init.c: Move to...
+       * pthread_spin_init.c: ...here.
+       * sysdeps/pthread/pthread_spin_unlock.c: Move to...
+       * pthread_spin_unlock.c: ...here.
+       * sysdeps/pthread/pthread_getcpuclockid.c: Move to...
+       * pthread_getcpuclockid.c: ...here.
+
+       * init.c: USE_TLS support is now default.
+       * tst-tls5.h: Likewise.
+       * sysdeps/alpha/tls.h: Likewise.
+       * sysdeps/i386/tls.h: Likewise.
+       * sysdeps/ia64/tls.h: Likewise.
+       * sysdeps/powerpc/tls.h: Likewise.
+       * sysdeps/s390/tls.h: Likewise.
+       * sysdeps/sh/tls.h: Likewise.
+       * sysdeps/sparc/tls.h: Likewise.
+       * sysdeps/x86_64/tls.h: Likewise.
+
 2006-10-27  Jakub Jelinek  <jakub@redhat.com>
 
        * sysdeps/unix/sysv/linux/rtld-lowlevel.h (__rtld_mrlock_lock,
index 14441153b8e28de944013cdf7103304a7ce28bbf..dddc975a5eb3635f3cab9b245caf70bf11139adc 100644 (file)
@@ -73,7 +73,7 @@ int __set_robust_list_avail;
 static const char nptl_version[] __attribute_used__ = VERSION;
 
 
-#if defined USE_TLS && !defined SHARED
+#ifndef SHARED
 extern void __libc_setup_tls (size_t tcbsize, size_t tcbalign);
 #endif
 
index 20f780c5f53002235cb81aab8df542374207f4f2..be2430f676f4b7bc7276b42cdf6a9ca6e4dd1e60 100644 (file)
@@ -1,5 +1,5 @@
 /* Definition for thread-local data handling.  NPTL/Alpha version.
-   Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -48,9 +48,6 @@ typedef union dtv
 # error "TLS support is required."
 #endif
 
-/* Signal that TLS support is available.  */
-# define USE_TLS       1
-
 #ifndef __ASSEMBLER__
 
 /* Get system call information.  */
index a870a848cf4deaf006d0ccdab67091978a627d73..d5b3797e69740c91651a6865753cd955ab4d4194 100644 (file)
@@ -1,5 +1,5 @@
 /* Definition for thread-local data handling.  nptl/i386 version.
-   Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -65,9 +65,6 @@ typedef struct
 # error "TLS support is required."
 #endif
 
-/* Signal that TLS support is available.  */
-#define USE_TLS        1
-
 /* Alignment requirement for the stack.  For IA-32 this is governed by
    the SSE memory functions.  */
 #define STACK_ALIGN    16
index 69101ad8c4c6941f91e590afea274dc3451a78aa..22a8b081448a7c02ed9732345a490ce6d024cf47 100644 (file)
@@ -61,9 +61,6 @@ register struct pthread *__thread_self __asm__("r13");
 # error "TLS support is required."
 #endif
 
-/* Signal that TLS support is available.  */
-#define USE_TLS        1
-
 /* Alignment requirement for the stack.  */
 #define STACK_ALIGN    16
 
index 976a27136292ee7c2ac63ffbf7c7d849e80eca1a..ddaafe23d0b67bfa6e1f2529d5d9f0b040ed6cf0 100644 (file)
@@ -1,5 +1,5 @@
 /* Definition for thread-local data handling.  NPTL/PowerPC version.
-   Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -48,9 +48,6 @@ typedef union dtv
 # error "TLS support is required."
 #endif
 
-/* Signal that TLS support is available.  */
-# define USE_TLS       1
-
 #ifndef __ASSEMBLER__
 
 /* Get system call information.  */
index 89ff095d522ed0cb59d455bebbe50e5b8e581227..6f6f17b9751dc31bec5ba096ff10df27db4e23f1 100644 (file)
@@ -1,5 +1,5 @@
 /* Definition for thread-local data handling.  NPTL/s390 version.
-   Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -66,9 +66,6 @@ typedef struct
 # error "TLS support is required."
 #endif
 
-/* Signal that TLS support is available.  */
-#define USE_TLS        1
-
 /* Alignment requirement for the stack.  For IA-32 this is governed by
    the SSE memory functions.  */
 #define STACK_ALIGN    16
index 49d105518a38f3e2cc9059fd1a4bd5d9d1ccf65e..d9aa1073b8d6079623cce51707be690cd29303bb 100644 (file)
@@ -1,5 +1,5 @@
 /* Definition for thread-local data handling.  NPTL/SH version.
-   Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -56,9 +56,6 @@ typedef struct
 # error "TLS support is required."
 #endif
 
-/* Signal that TLS support is available.  */
-# define USE_TLS       1
-
 #ifndef __ASSEMBLER__
 
 /* Get system call information.  */
index 127bbf695f4d1e0b1f2510fbe84d4fcad942ccef..4fbe426595924d6eb24d87361ed31c7034d08821 100644 (file)
@@ -60,9 +60,6 @@ typedef struct
 # error "TLS support is required."
 #endif
 
-/* Signal that TLS support is available.  */
-#define USE_TLS        1
-
 #ifndef __ASSEMBLER__
 /* Get system call information.  */
 # include <sysdep.h>
index 7e61d6857389b1ff178d5a09a8ed723378b064cc..aa42768f70abdd188390eed141be0f300767c9c3 100644 (file)
@@ -163,13 +163,13 @@ extern int __local_multiple_threads attribute_hidden;
 
 #else
 
-# ifdef IS_IN_rtld
-#  define SINGLE_THREAD_P \
-  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
-                                  header.multiple_threads) == 0, 1)
-# else
-#  define SINGLE_THREAD_P (1)
-# endif
+# define SINGLE_THREAD_P (1)
 # define NO_CANCELLATION 1
 
 #endif
+
+#ifndef __ASSEMBLER__
+# define RTLD_SINGLE_THREAD_P \
+  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
+                                  header.multiple_threads) == 0, 1)
+#endif
index 3613e7946bb219012d9d92338c6d148cd8ca1522..1cd4b9b8b67240e1e86ad689774589985cee6f9d 100644 (file)
 
 #elif !defined __ASSEMBLER__
 
-# ifdef IS_IN_rtld
-#  define SINGLE_THREAD_P \
-  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
-                                  header.multiple_threads) == 0, 1)
-# else
-#  define SINGLE_THREAD_P (1)
-# endif
+# define SINGLE_THREAD_P (1)
 # define NO_CANCELLATION 1
 
 #endif
+
+#ifndef __ASSEMBLER__
+# define RTLD_SINGLE_THREAD_P \
+  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
+                                  header.multiple_threads) == 0, 1)
+#endif
index 8e6653e2dc641051291ea1c86256aadde0ee0fb4..c4d52860dd8adb67cf58017e8d450aafad6e9a42 100644 (file)
@@ -216,13 +216,13 @@ __GC_##name:                                                                    \
 
 #elif !defined __ASSEMBLER__
 
-# ifdef IS_IN_rtld
-#  define SINGLE_THREAD_P \
-  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
-                                  header.multiple_threads) == 0, 1)
-# else
-#  define SINGLE_THREAD_P (1)
-# endif
+# define SINGLE_THREAD_P (1)
 # define NO_CANCELLATION 1
 
 #endif
+
+#ifndef __ASSEMBLER__
+# define RTLD_SINGLE_THREAD_P \
+  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
+                                  header.multiple_threads) == 0, 1)
+#endif
index e40388d475139f51ddbfd87280da5ecb86637cae..3752abc870b78fa9cc42e2cca56e6bad0149d05d 100644 (file)
 
 #elif !defined __ASSEMBLER__
 
-# ifdef IS_IN_rtld
-#  define SINGLE_THREAD_P \
-  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
-                                  header.multiple_threads) == 0, 1)
-# else
-#  define SINGLE_THREAD_P (1)
-# endif
+# define SINGLE_THREAD_P (1)
 # define NO_CANCELLATION 1
 
 #endif
+
+#ifndef __ASSEMBLER__
+# define RTLD_SINGLE_THREAD_P \
+  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
+                                  header.multiple_threads) == 0, 1)
+#endif
index cbc3fa70a1ac12c325805596ae5c4acb6d2db22b..707765ab58e7278c4da9b45665a88379c658c525 100644 (file)
 
 #elif !defined __ASSEMBLER__
 
-# ifdef IS_IN_rtld
-#  define SINGLE_THREAD_P \
-  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
-                                  header.multiple_threads) == 0, 1)
-# else
-#  define SINGLE_THREAD_P (1)
-# endif
+# define SINGLE_THREAD_P (1)
 # define NO_CANCELLATION 1
 
 #endif
+
+#ifndef __ASSEMBLER__
+# define RTLD_SINGLE_THREAD_P \
+  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
+                                  header.multiple_threads) == 0, 1)
+#endif
index eb3b14a3116e4536d6f1d9f5b16eaaf963072861..17ab562daadfe58bb28e65ed16e0607475f84b1b 100644 (file)
@@ -109,13 +109,13 @@ L(pseudo_end):
 
 #elif !defined __ASSEMBLER__
 
-# ifdef IS_IN_rtld
-#  define SINGLE_THREAD_P \
-  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
-                                  header.multiple_threads) == 0, 1)
-# else
-#  define SINGLE_THREAD_P (1)
-# endif
+# define SINGLE_THREAD_P (1)
 # define NO_CANCELLATION 1
 
 #endif
+
+#ifndef __ASSEMBLER__
+# define RTLD_SINGLE_THREAD_P \
+  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
+                                  header.multiple_threads) == 0, 1)
+#endif
index ad6dbc91e8836b6bbc3d868d9101bfa5d2785bf0..77ce7424951e950a02a49e5a2d8ea267143938a6 100644 (file)
@@ -122,13 +122,13 @@ extern int __local_multiple_threads attribute_hidden;
 
 #elif !defined __ASSEMBLER__
 
-# ifdef IS_IN_rtld
-#  define SINGLE_THREAD_P \
-  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
-                                  header.multiple_threads) == 0, 1)
-# else
-#  define SINGLE_THREAD_P (1)
-# endif
+# define SINGLE_THREAD_P (1)
 # define NO_CANCELLATION 1
 
 #endif
+
+#ifndef __ASSEMBLER__
+# define RTLD_SINGLE_THREAD_P \
+  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
+                                  header.multiple_threads) == 0, 1)
+#endif
index c6821a941c5d8ad475bc5139db912e23e20cf861..a8065c6a8c8d6c4a456b4dde5890682111eb5334 100644 (file)
 
 #elif !defined __ASSEMBLER__
 
-# ifdef IS_IN_rtld
-#  define SINGLE_THREAD_P \
-  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
-                                  header.multiple_threads) == 0, 1)
-# else
-#  define SINGLE_THREAD_P (1)
-# endif
+# define SINGLE_THREAD_P (1)
 # define NO_CANCELLATION 1
 
 #endif
+
+#ifndef __ASSEMBLER__
+# define RTLD_SINGLE_THREAD_P \
+  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
+                                  header.multiple_threads) == 0, 1)
+#endif
index c7800558bbd44fe1bda2a291d252fe68357411cb..f0349906b2a75275dd54fbe0924074adeaf497a4 100644 (file)
@@ -100,13 +100,13 @@ __##syscall_name##_nocancel:                      \
 
 #elif !defined __ASSEMBLER__
 
-# ifdef IS_IN_rtld
-#  define SINGLE_THREAD_P \
-  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
-                                  header.multiple_threads) == 0, 1)
-# else
-#  define SINGLE_THREAD_P (1)
-# endif
+# define SINGLE_THREAD_P (1)
 # define NO_CANCELLATION 1
 
 #endif
+
+#ifndef __ASSEMBLER__
+# define RTLD_SINGLE_THREAD_P \
+  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
+                                  header.multiple_threads) == 0, 1)
+#endif
index b422f8acee8dd78584916ae407ff537371911248..2c76d01715594797721681999d482a5337d79737 100644 (file)
@@ -98,13 +98,13 @@ __##syscall_name##_nocancel:                        \
 
 #elif !defined __ASSEMBLER__
 
-# ifdef IS_IN_rtld
-#  define SINGLE_THREAD_P \
-  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
-                                  header.multiple_threads) == 0, 1)
-# else
-#  define SINGLE_THREAD_P (1)
-# endif
+# define SINGLE_THREAD_P (1)
 # define NO_CANCELLATION 1
 
 #endif
+
+#ifndef __ASSEMBLER__
+# define RTLD_SINGLE_THREAD_P \
+  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
+                                  header.multiple_threads) == 0, 1)
+#endif
index e6afcd315643b4cb734928d0079f1b7e707ea0db..3e741da7948de492249e469628133e9b7f4954db 100644 (file)
@@ -132,13 +132,13 @@ extern int __local_multiple_threads attribute_hidden;
 
 #elif !defined __ASSEMBLER__
 
-# ifdef IS_IN_rtld
-#  define SINGLE_THREAD_P \
-  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
-                                  header.multiple_threads) == 0, 1)
-# else
-#  define SINGLE_THREAD_P (1)
-# endif
+# define SINGLE_THREAD_P (1)
 # define NO_CANCELLATION 1
 
 #endif
+
+#ifndef __ASSEMBLER__
+# define RTLD_SINGLE_THREAD_P \
+  __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
+                                  header.multiple_threads) == 0, 1)
+#endif
index 65ff0639b61cc660ee288bd2551db85262e712a0..7618573e0bd68f82c11a551c68890da5a5cb7222 100644 (file)
@@ -62,9 +62,6 @@ typedef struct
 # error "TLS support is required."
 #endif
 
-/* Signal that TLS support is available.  */
-#define USE_TLS        1
-
 /* Alignment requirement for the stack.  */
 #define STACK_ALIGN    16
 
index b7c14eb82c5d0df22ba4a4ee9fd259ea0d532b03..9a76ab7827234996691bec83b9faf5fa470ee96b 100644 (file)
@@ -2,7 +2,7 @@
 #include <stdlib.h>
 #include <tls.h>
 
-#if USE_TLS && HAVE___THREAD
+#if HAVE___THREAD
 
 struct tls_obj
 {
index 2bb82f488cc23c479d4cd0f9fe4b89cb0e14c366..f96ab04b86ba5fa67fa2ee6d57b9fd13621a1b4a 100644 (file)
@@ -1,3 +1,7 @@
+2006-10-27  Ulrich Drepper  <drepper@redhat.com>
+
+       * structs.def: USE_TLS support is now default.
+
 2006-02-03  Roland McGrath  <roland@redhat.com>
 
        * structs.def: Add a descriptor for pointer.val field of dtv_t.
index 823af5cba21a4264f953d83dbe0c19ffdd607d49..20fa014909ef21f734d199a183875c01a599f6e4 100644 (file)
@@ -68,15 +68,11 @@ DB_STRUCT_FIELD (pthread_key_data, data)
 DB_STRUCT (pthread_key_data_level2)
 DB_STRUCT_ARRAY_FIELD (pthread_key_data_level2, data)
 
-#if USE_TLS
 DB_STRUCT_FIELD (link_map, l_tls_modid)
-#endif
 
-#if !defined IS_IN_libpthread || USE_TLS
 DB_STRUCT_ARRAY_FIELD (dtv, dtv)
-# define pointer_val pointer.val /* Field of anonymous struct in dtv_t.  */
+#define pointer_val pointer.val /* Field of anonymous struct in dtv_t.  */
 DB_STRUCT_FIELD (dtv_t, pointer_val)
-#endif
 #if !defined IS_IN_libpthread || TLS_TCB_AT_TP
 DB_STRUCT_FIELD (pthread, dtvp)
 #endif
index 9c980182173aadc18cc28b92cd2b07968fb374d2..21657abeb73217c432931f03266f27d07efba598 100644 (file)
@@ -119,9 +119,7 @@ CFLAGS-initgrcache.c += $(nscd-cflags)
 CFLAGS-gai.c += $(nscd-cflags)
 
 ifeq (yesyes,$(have-fpie)$(build-shared))
-ifeq (yes,$(have-z-relro))
 relro-LDFLAGS += -Wl,-z,now
-endif
 
 $(objpfx)nscd: $(addprefix $(objpfx),$(nscd-modules:=.o))
        $(LINK.o) -pie -Wl,-O1 $(nscd-cflags) \
index 906b225d1eed24975c8f760cdfdb163b30257e26..ed2e18f17c58855f6fda2749f0bdb851f73d325b 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,13 +1,13 @@
 # GNU libc message catalog for swedish
-# Copyright Â© 1996, 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
+# Copyright Â© 1996, 1998, 2001, 2002, 2003, 2006 Free Software Foundation, Inc.
 # Jan Djärv <jan.h.d@swipnet.se>, 1996, 1998, 2001, 2002, 2003, 2006.
-# Revision: 1.49
+# Revision: 1.50
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: libc 2.5\n"
 "POT-Creation-Date: 2006-09-29 11:38-0700\n"
-"PO-Revision-Date: 2006-10-09 20:38+0200\n"
+"PO-Revision-Date: 2006-10-29 19:03+0100\n"
 "Last-Translator: Jan Djärv <jan.h.d@swipnet.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
 "MIME-Version: 1.0\n"
@@ -53,7 +53,9 @@ msgstr "Försök med \"%s --help\" eller \"%s --usage\" för mer information\n"
 #: argp/argp-help.c:1671
 #, c-format
 msgid "Report bugs to %s.\n"
-msgstr "Rapportera fel till %s.\n"
+msgstr ""
+"Rapportera fel till %s.\n"
+"Rapportera fel eller synpunkter pÃ¥ Ã¶versättningen till <tp-sv@listor.tp-sv.se>.\n"
 
 #: argp/argp-parse.c:102
 msgid "Give this help list"
@@ -286,7 +288,7 @@ msgstr "Försök med \"xtrace --help\" för mer information\\n"
 
 #: debug/xtrace.sh:39
 msgid "xtrace: option `$1' requires an argument.\\n"
-msgstr "xtrace: flaggan \"%s\" behöver ett argument\\n"
+msgstr "xtrace: flaggan \"$1\" behöver ett argument\\n"
 
 #: debug/xtrace.sh:46
 msgid ""
@@ -316,7 +318,8 @@ msgstr ""
 "motsvarande korta.\n"
 "\n"
 "För felrapporteringsinstruktioner, se:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
+"Rapportera fel eller synpunkter pÃ¥ Ã¶versättningen till <tp-sv@listor.tp-sv.se>.\\n"
 
 #: debug/xtrace.sh:125
 msgid "xtrace: unrecognized option `$1'\\n"
index 7016365be582829c0e23570f21e1deadcda46789..5a350cae36342815f119488782f963bfcf11411c 100644 (file)
@@ -2,7 +2,7 @@
 
 libc {
   GLIBC_2.0 {
-%if !(USE_TLS && HAVE___THREAD)
+%if !HAVE___THREAD
     # global variables
     _h_errno;
 %endif
@@ -17,7 +17,7 @@ libc {
 
     # variables in normal name space
     h_errlist; h_nerr;
-%if !(USE_TLS && HAVE___THREAD)
+%if !HAVE___THREAD
     h_errno;
 %endif
 
@@ -34,7 +34,7 @@ libc {
   GLIBC_PRIVATE {
     __gai_sigqueue;
 
-%if USE_TLS && HAVE___THREAD
+%if HAVE___THREAD
     # This version is for the TLS symbol, GLIBC_2.0 is the old object symbol.
     h_errno; __resp;
 %endif
index e632d3523b47bf553ce0f9e592a1080cb187d26e..a0ff427b7ef375cd89bd692b38a733fcd689fc5c 100644 (file)
@@ -102,10 +102,6 @@ CFLAGS-strfmon.c = -D_IO_MTSAFE_IO
 CFLAGS-strfmon_l.c = -D_IO_MTSAFE_IO
 endif
 
-ifeq (yes,$(have-protected))
-CFLAGS-atexit.c = -DHAVE_DOT_HIDDEN
-endif
-
 CFLAGS-tst-bsearch.c = $(stack-align-test-flags)
 CFLAGS-tst-qsort.c = $(stack-align-test-flags)
 
index 307662bdcd407ce14b647164691822086466740d..0575dda03b0355be8b89b353ffa9485dec072a99 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1996, 1999, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1996, 1999, 2001, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -43,14 +43,9 @@ extern void *__dso_handle __attribute__ ((__weak__));
 
 /* Register FUNC to be executed by `exit'.  */
 int
+attribute_hidden
 atexit (void (*func) (void))
 {
   return __cxa_atexit ((void (*) (void *)) func, NULL,
                       &__dso_handle == NULL ? NULL : __dso_handle);
 }
-
-/* Hide the symbol so that no definition but the one locally in the
-   executable or DSO is used.  */
-#ifdef HAVE_DOT_HIDDEN
-asm (".hidden\tatexit");
-#endif
index 88c357ea07b246e9ef9f3c2876b07b99316beafe..29f500b2d00b56c6d8b244243def6e76a4058a21 100644 (file)
@@ -1,5 +1,5 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  Alpha version.
-   Copyright (C) 1996-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 1996-2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <rth@tamu.edu>.
 
@@ -232,14 +232,14 @@ $fixup_stack:                                                     \n\
    to one of the main executable's symbols, as for a COPY reloc.
    This is unused on Alpha.  */
 
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
-#define elf_machine_type_class(type)   \
+#if !defined RTLD_BOOTSTRAP || USE___THREAD
+# define elf_machine_type_class(type)  \
   (((type) == R_ALPHA_JMP_SLOT         \
     || (type) == R_ALPHA_DTPMOD64      \
     || (type) == R_ALPHA_DTPREL64      \
     || (type) == R_ALPHA_TPREL64) * ELF_RTYPE_CLASS_PLT)
 #else
-#define elf_machine_type_class(type)   \
+# define elf_machine_type_class(type)  \
   (((type) == R_ALPHA_JMP_SLOT) * ELF_RTYPE_CLASS_PLT)
 #endif
 
@@ -439,40 +439,40 @@ elf_machine_rela (struct link_map *map,
          memcpy (reloc_addr_arg, &sym_value, 8);
        }
 #endif
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
+#if !defined RTLD_BOOTSTRAP || USE___THREAD
       else if (r_type == R_ALPHA_DTPMOD64)
        {
-#ifdef RTLD_BOOTSTRAP
+# ifdef RTLD_BOOTSTRAP
          /* During startup the dynamic linker is always index 1.  */
          *reloc_addr = 1;
-#else
+# else
          /* Get the information from the link map returned by the
             resolv function.  */
          if (sym_map != NULL)
            *reloc_addr = sym_map->l_tls_modid;
-#endif
+# endif
        }
       else if (r_type == R_ALPHA_DTPREL64)
        {
-#ifndef RTLD_BOOTSTRAP
+# ifndef RTLD_BOOTSTRAP
          /* During relocation all TLS symbols are defined and used.
             Therefore the offset is already correct.  */
          *reloc_addr = sym_raw_value;
-#endif
+# endif
        }
       else if (r_type == R_ALPHA_TPREL64)
        {
-#ifdef RTLD_BOOTSTRAP
+# ifdef RTLD_BOOTSTRAP
          *reloc_addr = sym_raw_value + map->l_tls_offset;
-#else
+# else
          if (sym_map)
            {
              CHECK_STATIC_TLS (map, sym_map);
              *reloc_addr = sym_raw_value + sym_map->l_tls_offset;
            }
-#endif
+# endif
        }
-#endif /* USE_TLS */
+#endif
       else
        _dl_reloc_bad_type (map, r_type, 0);
     }
index 24629e9aca3efe2f4f4b9fde9a558933f52948e8..7e027691713d8c8784c2262cdd7c13aeae2b432b 100644 (file)
@@ -1,5 +1,5 @@
 /* Thread-local storage handling in the ELF dynamic linker.  Alpha version.
-   Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -20,8 +20,6 @@
 #include <csu/libc-tls.c>
 #include <dl-tls.h>
 
-#if USE_TLS
-
 /* On Alpha, linker optimizations are not required, so __tls_get_addr
    can be called even in statically linked binaries.  In this case module
    must be always 1 and PT_TLS segment exist in the binary, otherwise it
@@ -33,5 +31,3 @@ __tls_get_addr (tls_index *ti)
   dtv_t *dtv = THREAD_DTV ();
   return (char *) dtv[1].pointer.val + ti->ti_offset;
 }
-
-#endif
index 4fa3c0114a4be5f6c7aa3b278fdb436c03e642fe..dda91bb80679cb31083d26a950bcddfd5fb64e5f 100644 (file)
@@ -447,11 +447,6 @@ struct rtld_global
      It returns an errno code or zero on success.  */
   EXTERN int (*_dl_make_stack_executable_hook) (void **) internal_function;
 
-  /* Keep the conditional TLS members at the end so the layout of the
-     structure used by !USE_TLS code matches the prefix of the layout in
-     the USE_TLS rtld.  Note that `struct link_map' is conditionally
-     defined as well, so _dl_rtld_map needs to be last before this.  */
-#ifdef USE_TLS
   /* Highest dtv index currently needed.  */
   EXTERN size_t _dl_tls_max_dtv_idx;
   /* Flag signalling whether there are gaps in the module ID allocation.  */
@@ -479,10 +474,10 @@ struct rtld_global
 /* Number of additional entries in the slotinfo array of each slotinfo
    list element.  A large number makes it almost certain take we never
    have to iterate beyond the first element in the slotinfo list.  */
-# define TLS_SLOTINFO_SURPLUS (62)
+#define TLS_SLOTINFO_SURPLUS (62)
 
 /* Number of additional slots in the dtv allocated.  */
-# define DTV_SURPLUS   (14)
+#define DTV_SURPLUS    (14)
 
   /* Initial dtv of the main thread, not allocated with normal malloc.  */
   EXTERN void *_dl_initial_dtv;
@@ -490,23 +485,18 @@ struct rtld_global
   EXTERN size_t _dl_tls_generation;
 
   EXTERN void (*_dl_init_static_tls) (struct link_map *);
-#endif
 
 #ifdef SHARED
 };
 # define __rtld_global_attribute__
 # ifdef IS_IN_rtld
-#  ifdef HAVE_VISIBILITY_ATTRIBUTE
-#   ifdef HAVE_SDATA_SECTION
-#    define __rtld_local_attribute__ \
+#  ifdef HAVE_SDATA_SECTION
+#   define __rtld_local_attribute__ \
            __attribute__ ((visibility ("hidden"), section (".sdata")))
-#    undef __rtld_global_attribute__
-#    define __rtld_global_attribute__ __attribute__ ((section (".sdata")))
-#   else
-#    define __rtld_local_attribute__ __attribute__ ((visibility ("hidden")))
-#   endif
+#   undef __rtld_global_attribute__
+#   define __rtld_global_attribute__ __attribute__ ((section (".sdata")))
 #  else
-#   define __rtld_local_attribute__
+#   define __rtld_local_attribute__ __attribute__ ((visibility ("hidden")))
 #  endif
 extern struct rtld_global _rtld_local __rtld_local_attribute__;
 #  undef __rtld_local_attribute__
@@ -668,11 +658,7 @@ struct rtld_global_ro
 };
 # define __rtld_global_attribute__
 # ifdef IS_IN_rtld
-#  ifdef HAVE_VISIBILITY_ATTRIBUTE
-#   define __rtld_local_attribute__ __attribute__ ((visibility ("hidden")))
-#  else
-#   define __rtld_local_attribute__
-#  endif
+#  define __rtld_local_attribute__ __attribute__ ((visibility ("hidden")))
 extern struct rtld_global_ro _rtld_local_ro
     attribute_relro __rtld_local_attribute__;
 extern struct rtld_global_ro _rtld_global_ro
@@ -1037,9 +1023,7 @@ rtld_hidden_proto (_dl_allocate_tls_init)
 extern void _dl_deallocate_tls (void *tcb, bool dealloc_tcb) internal_function;
 rtld_hidden_proto (_dl_deallocate_tls)
 
-#if defined USE_TLS
 extern void _dl_nothread_init_static_tls (struct link_map *) attribute_hidden;
-#endif
 
 /* Find origin of the executable.  */
 extern const char *_dl_get_origin (void) attribute_hidden;
index f07b784f2eaddb2235752dba789785d773a419ac..ba6a1e04ba4425a625719d8f74c7813ad17ad725 100644 (file)
@@ -2,6 +2,7 @@
 
 /* No multi-thread handling enabled.  */
 #define SINGLE_THREAD_P (1)
+#define RTLD_SINGLE_THREAD_P (1)
 #define LIBC_CANCEL_ASYNC()    0 /* Just a dummy value.  */
 #define LIBC_CANCEL_RESET(val) ((void)(val)) /* Nothing, but evaluate it.  */
 #define LIBC_CANCEL_HANDLED()  /* Nothing.  */
index 6a23ec05e1be507d9b710a13fb62831db37ea2fd..06e41ad121b3a61be2163c72dbf35bc4c0555708 100644 (file)
@@ -1,5 +1,5 @@
 /* Definition for thread-local data handling.  Generic version.
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-/* By default no TLS support is available.  This is signaled by the
-   absence of the symbol USE_TLS.  */
-#undef USE_TLS
-
-
 /* An architecture-specific version of this file has to defined a
    number of symbols:
 
index df3edf5460268df6deea9a017dedef32aa8cd75b..04296d2a9a3a958ff711ce56b2aa2205917de506 100644 (file)
@@ -1,5 +1,5 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  i386 version.
-   Copyright (C) 1995-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 1995-2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -34,9 +34,7 @@ elf_machine_matches_host (const Elf32_Ehdr *ehdr)
 }
 
 
-#if defined PI_STATIC_AND_HIDDEN \
-    && defined HAVE_VISIBILITY_ATTRIBUTE && defined HAVE_HIDDEN \
-    && !defined HAVE_BROKEN_VISIBILITY_ATTRIBUTE
+#ifdef PI_STATIC_AND_HIDDEN
 
 /* Return the link-time address of _DYNAMIC.  Conveniently, this is the
    first element of the GOT, a special entry that is never relocated.  */
@@ -244,7 +242,7 @@ _dl_start_user:\n\
    define the value.
    ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
    of the main executable's symbols, as for a COPY reloc.  */
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
+#if !defined RTLD_BOOTSTRAP || USE___THREAD
 # define elf_machine_type_class(type) \
   ((((type) == R_386_JMP_SLOT || (type) == R_386_TLS_DTPMOD32                \
      || (type) == R_386_TLS_DTPOFF32 || (type) == R_386_TLS_TPOFF32          \
@@ -352,7 +350,7 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
          *reloc_addr = value;
          break;
 
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
+#if !defined RTLD_BOOTSTRAP || USE___THREAD
        case R_386_TLS_DTPMOD32:
 # ifdef RTLD_BOOTSTRAP
          /* During startup the dynamic linker is always the module
@@ -476,7 +474,6 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
          *reloc_addr = (value + reloc->r_addend - (Elf32_Addr) reloc_addr);
          break;
 
-#  ifdef USE_TLS
        case R_386_TLS_DTPMOD32:
          /* Get the information from the link map returned by the
             resolv function.  */
@@ -513,7 +510,6 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
                            + reloc->r_addend;
            }
          break;
-#  endif       /* use TLS */
        case R_386_COPY:
          if (sym == NULL)
            /* This can happen in trace mode if an object could not be
index 4bd5394bec11b2dd611b33232cffd8ea75841ca2..113760d8463b29442c43dc107bda25c058664047 100644 (file)
@@ -1,5 +1,5 @@
 /* Compare two memory blocks for differences in the first COUNT bytes.
-   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
      absolute address.  */                                                   \
   addl (%ebx,INDEX,4), %ebx
 
-#ifdef HAVE_HIDDEN
        .section        .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
        .globl  __i686.get_pc_thunk.bx
        .hidden __i686.get_pc_thunk.bx
-#else
-        .text
-#endif
        ALIGN (4)
        .type   __i686.get_pc_thunk.bx,@function
 __i686.get_pc_thunk.bx:
index 2739cb00b381fe63f58135d78498c6955eb93736..e03a8e926d4d8a23149788d95a7d7ed21091a0c7 100644 (file)
@@ -1,5 +1,6 @@
 /* Assembler macros for i386.
-   Copyright (C) 1991-93,95,96,98,2002,2003,2005 Free Software Foundation, Inc.
+   Copyright (C) 1991-93,95,96,98,2002,2003,2005,2006
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -132,15 +133,7 @@ lose: SYSCALL_PIC_SETUP                                                          \
     cfi_adjust_cfa_offset (-4);                                                      \
     addl $_GLOBAL_OFFSET_TABLE+[.-0b], %ebx;
 
-# ifndef HAVE_HIDDEN
-#  define SETUP_PIC_REG(reg) \
-  call 1f;                                                                   \
-  .subsection 1;                                                             \
-1:movl (%esp), %e##reg;                                                              \
-  ret;                                                                       \
-  .previous
-# else
-#  define SETUP_PIC_REG(reg) \
+# define SETUP_PIC_REG(reg) \
   .ifndef __i686.get_pc_thunk.reg;                                           \
   .section .gnu.linkonce.t.__i686.get_pc_thunk.reg,"ax",@progbits;           \
   .globl __i686.get_pc_thunk.reg;                                            \
@@ -153,7 +146,6 @@ __i686.get_pc_thunk.reg:                                                  \
   .previous;                                                                 \
   .endif;                                                                    \
   call __i686.get_pc_thunk.reg
-# endif
 
 # define LOAD_PIC_REG(reg) \
   SETUP_PIC_REG(reg); addl $_GLOBAL_OFFSET_TABLE_, %e##reg
index 55349690e316d05bbbab9c8c06ceb7ab4c48f819..61b4ea99a703f2c8a29f05e923416c71ae39e45c 100644 (file)
@@ -1,5 +1,5 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  IA-64 version.
-   Copyright (C) 1995-1997, 2000-2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 1995-1997, 2000-2004, 2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -311,7 +311,7 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
    of the main executable's symbols, as for a COPY reloc, which we don't
    use.  */
 /* ??? Ignore *MSB for now.  */
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
+#if !defined RTLD_BOOTSTRAP || USE___THREAD
 #define elf_machine_type_class(type) \
   (((type) == R_IA64_IPLTLSB || (type) == R_IA64_DTPMOD64LSB                 \
     || (type) == R_IA64_DTPREL64LSB || (type) == R_IA64_TPREL64LSB)          \
@@ -432,7 +432,7 @@ elf_machine_rela (struct link_map *map,
            value = _dl_make_fptr (sym_map, sym, value);
          else if (R_IA64_TYPE (r_type) == R_IA64_TYPE (R_IA64_PCREL64LSB))
            value -= (Elf64_Addr) reloc_addr & -16;
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || defined USE___THREAD)
+#if !defined RTLD_BOOTSTRAP || defined USE___THREAD
          else if (R_IA64_TYPE (r_type) == R_IA64_TYPE (R_IA64_DTPMOD64LSB))
 # ifdef RTLD_BOOTSTRAP
            /* During startup the dynamic linker is always index 1.  */
index 2c0eeae86fccc6641776f7a7cb89f2392a8a9641..9751284008ef52497ecd9165003703685e69a5a2 100644 (file)
@@ -1,5 +1,5 @@
 /* Thread-local storage handling in the ELF dynamic linker.  IA-64 version.
-   Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -19,8 +19,6 @@
 
 #include <csu/libc-tls.c>
 
-#if USE_TLS
-
 /* On IA-64, as it lacks linker optimizations, __tls_get_addr can be
    called even in statically linked binaries.
    In this case module must be always 1 and PT_TLS segment
@@ -32,5 +30,3 @@ __tls_get_addr (size_t m, size_t offset)
   dtv_t *dtv = THREAD_DTV ();
   return (char *) dtv[1].pointer.val + offset;
 }
-
-#endif
index fa7da6020408290b504f3da203521dba2c180340..3288f186e5066b22323a30076d71da2a10f74074 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994,1995,1996,1997,1999,2001,2002,2004,2005
+/* Copyright (C) 1994,1995,1996,1997,1999,2001,2002,2004,2005,2006
        Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -532,11 +532,9 @@ __fork (void)
       /* Set the child user thread up to return 1 from the setjmp above.  */
       _hurd_longjmp_thread_state (&state, env, 1);
 
-#if USE_TLS
       /* Do special thread setup for TLS if needed.  */
       if (err = _hurd_tls_fork (thread, &state))
        LOSE;
-#endif
 
       if (err = __thread_set_state (thread, MACHINE_THREAD_STATE_FLAVOR,
                                    (natural_t *) &state, statecount))
index 223a47d2f2c2f9aab5db22356b8190c67cca902b..972cac57a1d99b4b52f29e497fe8f60a94634dd6 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions for thread-local data handling.  Hurd/i386 version.
-   Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -25,9 +25,6 @@
 /* Some things really need not be machine-dependent.  */
 # include <sysdeps/mach/hurd/tls.h>
 
-/* Indiciate that TLS support is available.  */
-# define USE_TLS       1
-
 /* The TCB can have any size and the memory following the address the
    thread pointer points to is unspecified.  Allocate the TCB there.  */
 # define TLS_TCB_AT_TP 1
index 4120a0238214123e293c23fb3e40b4e8d6c8a9c5..fc460993b12e4aef27876375cb81b1cee05829c2 100644 (file)
@@ -1,5 +1,5 @@
 /* Machine-dependent ELF dynamic relocation functions.  PowerPC version.
-   Copyright (C) 1995-2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 1995-2003, 2004, 2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -564,13 +564,12 @@ __process_machine_rela (struct link_map *map,
       }
       break;
 
-#ifdef USE_TLS
 #define CHECK_STATIC_TLS(map, sym_map)                                       \
     do {                                                                     \
       if (__builtin_expect ((sym_map)->l_tls_offset == NO_TLS_OFFSET, 0))     \
        _dl_allocate_static_tls (sym_map);                                    \
     } while (0)
-# define DO_TLS_RELOC(suffix)                                                \
+#define DO_TLS_RELOC(suffix)                                                 \
     case R_PPC_DTPREL##suffix:                                               \
       /* During relocation all TLS symbols are defined and used.             \
         Therefore the offset is already correct.  */                         \
@@ -609,7 +608,6 @@ __process_machine_rela (struct link_map *map,
     DO_TLS_RELOC (16_LO)
     DO_TLS_RELOC (16_HI)
     DO_TLS_RELOC (16_HA)
-#endif
 
     default:
       _dl_reloc_bad_type (map, rinfo, 0);
index 496fa71ecc03a0bf1684eb112a39d829c456dc62..a50ffdd1c215816dd56f497bb6ba1e9cca73cf87 100644 (file)
@@ -1,5 +1,5 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  PowerPC version.
-   Copyright (C) 1995-2002, 2003, 2005 Free Software Foundation, Inc.
+   Copyright (C) 1995-2002, 2003, 2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -138,7 +138,7 @@ __elf_preferred_address(struct link_map *loader, size_t maplength,
 /* We never want to use a PLT entry as the destination of a
    reloc, when what is being relocated is a branch. This is
    partly for efficiency, but mostly so we avoid loops.  */
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
+#if !defined RTLD_BOOTSTRAP || USE___THREAD
 #define elf_machine_type_class(type)                   \
   ((((type) == R_PPC_JMP_SLOT                          \
     || (type) == R_PPC_REL24                           \
@@ -330,7 +330,7 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
       *reloc_addr = value;
       break;
 
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD) \
+#if (!defined RTLD_BOOTSTRAP || USE___THREAD) \
     && !defined RESOLVE_CONFLICT_FIND_MAP
 # ifdef RTLD_BOOTSTRAP
 #  define NOT_BOOTSTRAP 0
@@ -361,7 +361,7 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
          *reloc_addr = TLS_TPREL_VALUE (sym_map, sym, reloc);
        }
       break;
-#endif /* USE_TLS etc. */
+#endif
 
     case R_PPC_JMP_SLOT:
 #ifdef RESOLVE_CONFLICT_FIND_MAP
index 8fc624ebd927ea9c6ec05e018273892ae222e483..88cfe71e0bb88339be0a8b818ee2375c88dbc4ea 100644 (file)
@@ -96,7 +96,7 @@
 #endif
 
 #if defined SHARED && defined DO_VERSIONING && defined PIC \
-    && !defined HAVE_BROKEN_ALIAS_ATTRIBUTE && !defined NO_HIDDEN
+    && !defined NO_HIDDEN
 # undef HIDDEN_JUMPTARGET
 # define HIDDEN_JUMPTARGET(name) __GI_##name##@local
 #endif
index cec271bb3a3aed2f56e951be6a8ae9da93bc82e0..89a69e1a2377d046703be694859b36fe93acdb46 100644 (file)
@@ -1,7 +1,6 @@
 /* Machine-dependent ELF dynamic relocation inline functions.
    PowerPC64 version.
-   Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-   Free Software Foundation, Inc.
+   Copyright 1995-2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -260,7 +259,7 @@ BODY_PREFIX "_dl_start_user:\n"                                             \
    ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
    of the main executable's symbols, as for a COPY reloc.  */
 
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
+#if !defined RTLD_BOOTSTRAP || USE___THREAD
 #define elf_machine_type_class(type)                                         \
   /* This covers all the TLS relocs, though most won't appear.  */           \
   (((((type) >= R_PPC64_DTPMOD64 && (type) <= R_PPC64_TPREL16_HIGHESTA)              \
@@ -495,7 +494,7 @@ elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
   *reloc_addr = l_addr + reloc->r_addend;
 }
 
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
+#if !defined RTLD_BOOTSTRAP || USE___THREAD
 /* This computes the value used by TPREL* relocs.  */
 auto inline Elf64_Addr __attribute__ ((always_inline, const))
 elf_machine_tprel (struct link_map *map,
@@ -562,7 +561,7 @@ elf_machine_rela (struct link_map *map,
 #endif
       return;
 
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
+#if !defined RTLD_BOOTSTRAP || USE___THREAD
     case R_PPC64_DTPMOD64:
 # ifdef RTLD_BOOTSTRAP
       /* During startup the dynamic linker is always index 1.  */
@@ -645,7 +644,7 @@ elf_machine_rela (struct link_map *map,
       value = elf_machine_tprel (map, sym_map, sym, reloc);
       *(Elf64_Half *) reloc_addr = PPC_HIGHESTA (value);
       break;
-#endif /* USE_TLS etc. */
+#endif
 
 #ifndef RTLD_BOOTSTRAP /* None of the following appear in ld.so */
     case R_PPC64_ADDR16_LO_DS:
index f177f436e93444dba5b606c90dba2c0ef8e6dddd..766d565a9cbcb8a2f638ea5c0f5226a13f7100ce 100644 (file)
@@ -1,5 +1,5 @@
 /* Thread-local storage handling in the ELF dynamic linker.  S390 version.
-   Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
 #include <stdlib.h>
 #include <csu/libc-tls.c>
 
-#if USE_TLS
-
 /* On s390, the literal pool entry that refers to __tls_get_offset
    is not removed, even if all branches that use the literal pool
-   entry gets removed by TLS optimizations. To get binaries
+   entry gets removed by TLS optimizations.  To get binaries
    statically linked __tls_get_offset is defined here but
    aborts if it is used.  */
 
@@ -33,5 +31,3 @@ __tls_get_offset (size_t m, size_t offset)
 {
   abort ();
 }
-
-#endif
index 8bbf858fbf092446433ea9e0613f72a628e4eebb..64bf3423b69453ddc8dcf03f55152a6c989de45d 100644 (file)
@@ -1,5 +1,5 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  S390 Version.
-   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005
+   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
    Contributed by Carl Pederson & Martin Schwidefsky.
    This file is part of the GNU C Library.
@@ -209,17 +209,11 @@ _dl_start_user:\n\
    define the value.
    ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
    of the main executable's symbols, as for a COPY reloc.  */
-#ifdef USE_TLS
-# define elf_machine_type_class(type) \
+#define elf_machine_type_class(type) \
   ((((type) == R_390_JMP_SLOT || (type) == R_390_TLS_DTPMOD                  \
      || (type) == R_390_TLS_DTPOFF || (type) == R_390_TLS_TPOFF)             \
     * ELF_RTYPE_CLASS_PLT)                                                   \
    | (((type) == R_390_COPY) * ELF_RTYPE_CLASS_COPY))
-#else
-# define elf_machine_type_class(type) \
-  ((((type) == R_390_JMP_SLOT) * ELF_RTYPE_CLASS_PLT)  \
-   | (((type) == R_390_COPY) * ELF_RTYPE_CLASS_COPY))
-#endif
 
 /* A reloc type used for ld.so cmdline arg lookups to reject PLT entries.  */
 #define ELF_MACHINE_JMP_SLOT    R_390_JMP_SLOT
@@ -315,7 +309,7 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
          *reloc_addr = value + reloc->r_addend;
          break;
 
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD) \
+#if (!defined RTLD_BOOTSTRAP || USE___THREAD) \
     && !defined RESOLVE_CONFLICT_FIND_MAP
        case R_390_TLS_DTPMOD:
 # ifdef RTLD_BOOTSTRAP
index 5026a2edad9981d56cd27a5dc7fef630f2d1f739..fa893befdf5c9e571de4b5379cd97efed50a4c8a 100644 (file)
@@ -1,6 +1,6 @@
 /* Machine-dependent ELF dynamic relocation inline functions.
    64 bit S/390 Version.
-   Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2001-2005, 2006 Free Software Foundation, Inc.
    Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
    This file is part of the GNU C Library.
 
@@ -192,17 +192,11 @@ _dl_start_user:\n\
    define the value.
    ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
    of the main executable's symbols, as for a COPY reloc.  */
-#ifdef USE_TLS
-# define elf_machine_type_class(type) \
+#define elf_machine_type_class(type) \
   ((((type) == R_390_JMP_SLOT || (type) == R_390_TLS_DTPMOD                  \
      || (type) == R_390_TLS_DTPOFF || (type) == R_390_TLS_TPOFF)             \
     * ELF_RTYPE_CLASS_PLT)                                                   \
    | (((type) == R_390_COPY) * ELF_RTYPE_CLASS_COPY))
-#else
-# define elf_machine_type_class(type) \
-  ((((type) == R_390_JMP_SLOT) * ELF_RTYPE_CLASS_PLT)  \
-   | (((type) == R_390_COPY) * ELF_RTYPE_CLASS_COPY))
-#endif
 
 /* A reloc type used for ld.so cmdline arg lookups to reject PLT entries.  */
 #define ELF_MACHINE_JMP_SLOT   R_390_JMP_SLOT
@@ -294,7 +288,7 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
          *reloc_addr = value + reloc->r_addend;
          break;
 
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD) \
+#if (!defined RTLD_BOOTSTRAP || USE___THREAD) \
     && !defined RESOLVE_CONFLICT_FIND_MAP
        case R_390_TLS_DTPMOD:
 # ifdef RTLD_BOOTSTRAP
index e73c6d79c370f80d2d8b0062aaf6bb57c7864b0b..78f70e38805d75d0f1808772756532c69e93a80c 100644 (file)
@@ -1,5 +1,5 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  SH version.
-   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -208,7 +208,7 @@ __fpscr_values:\n\
    define the value.
    ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
    of the main executable's symbols, as for a COPY reloc.  */
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
+#if !defined RTLD_BOOTSTRAP || USE___THREAD
 # define elf_machine_type_class(type) \
   ((((type) == R_SH_JMP_SLOT || (type) == R_SH_TLS_DTPMOD32                  \
      || (type) == R_SH_TLS_DTPOFF32 || (type) == R_SH_TLS_TPOFF32)           \
@@ -354,7 +354,7 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
          /* These addresses are always aligned.  */
          *reloc_addr = value;
          break;
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
+#if !defined RTLD_BOOTSTRAP || USE___THREAD
          /* XXX Remove TLS relocations which are not needed.  */
        case R_SH_TLS_DTPMOD32:
 # ifdef RTLD_BOOTSTRAP
index 02dabaabb44d9896fff85388d1c02e1535a11d24..19aac6a7fe9a0cbc8b2680bb8277a45915146749 100644 (file)
@@ -188,7 +188,7 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
    PLT entries should not be allowed to define the value.
    ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
    of the main executable's symbols, as for a COPY reloc.  */
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
+#if !defined RTLD_BOOTSTRAP || USE___THREAD
 # define elf_machine_type_class(type) \
   ((((type) == R_SPARC_JMP_SLOT                                                      \
      || ((type) >= R_SPARC_TLS_GD_HI22 && (type) <= R_SPARC_TLS_TPOFF64))     \
@@ -459,7 +459,7 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
         so we can optimize the first instruction of .plt out.  */
       sparc_fixup_plt (reloc, reloc_addr, value, 0);
       break;
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD) \
+#if (!defined RTLD_BOOTSTRAP || USE___THREAD) \
     && !defined RESOLVE_CONFLICT_FIND_MAP
     case R_SPARC_TLS_DTPMOD32:
       /* Get the information from the link map returned by the
index 314a784dbc92925c274fcda43a82085f923bc467..3eee6729124bdbafb5f95100139617a1d2dd8f7b 100644 (file)
@@ -240,7 +240,7 @@ elf_machine_plt_value (struct link_map *map, const Elf64_Rela *reloc,
    PLT entries should not be allowed to define the value.
    ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
    of the main executable's symbols, as for a COPY reloc.  */
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
+#if !defined RTLD_BOOTSTRAP || USE___THREAD
 # define elf_machine_type_class(type) \
   ((((type) == R_SPARC_JMP_SLOT                                                      \
      || ((type) >= R_SPARC_TLS_GD_HI22 && (type) <= R_SPARC_TLS_TPOFF64))     \
@@ -589,7 +589,7 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
       sparc64_fixup_plt (map, reloc, reloc_addr, value, reloc->r_addend, 0);
 #endif
       break;
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD) \
+#if (!defined RTLD_BOOTSTRAP || USE___THREAD) \
     && !defined RESOLVE_CONFLICT_FIND_MAP
     case R_SPARC_TLS_DTPMOD64:
       /* Get the information from the link map returned by the
index 299574dac4dcb9f94eb7beddd30f20fc12b5e123..b5c1b98573a3d99ce7553a7005c8e03d4e4fe491 100644 (file)
@@ -1,5 +1,5 @@
 /* POSIX.1 `sigaction' call for Linux/i386.
-   Copyright (C) 1991,1995-2000,2002-2004,2005 Free Software Foundation, Inc.
+   Copyright (C) 1991,1995-2000,2002-2005,2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -46,18 +46,10 @@ int __libc_missing_rt_sigs;
 
 /* Using the hidden attribute here does not change the code but it
    helps to avoid warnings.  */
-#if defined HAVE_HIDDEN && defined HAVE_VISIBILITY_ATTRIBUTE \
-    && !defined HAVE_BROKEN_VISIBILITY_ATTRIBUTE
-# ifdef __NR_rt_sigaction
+#ifdef __NR_rt_sigaction
 extern void restore_rt (void) asm ("__restore_rt") attribute_hidden;
-# endif
-extern void restore (void) asm ("__restore") attribute_hidden;
-#else
-# ifdef __NR_rt_sigaction
-static void restore_rt (void) asm ("__restore_rt");
-# endif
-static void restore (void) asm ("__restore");
 #endif
+extern void restore (void) asm ("__restore") attribute_hidden;
 
 
 /* If ACT is not NULL, change the action for SIG to *ACT.
index d6f4558cef696135c31e2edd6fe40ce2cf7755a0..b83e98a77e67bf7bb069459723bf3dc9b3092583 100644 (file)
@@ -1,5 +1,5 @@
 /* POSIX.1 `sigaction' call for Linux/x86-64.
-   Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
 
 /* Using the hidden attribute here does not change the code but it
    helps to avoid warnings.  */
-#if defined HAVE_HIDDEN && defined HAVE_VISIBILITY_ATTRIBUTE \
-    && !defined HAVE_BROKEN_VISIBILITY_ATTRIBUTE
 extern void restore_rt (void) asm ("__restore_rt") attribute_hidden;
-#else
-static void restore_rt (void) asm ("__restore_rt");
-#endif
 
 
 /* If ACT is not NULL, change the action for SIG to *ACT.
index 73e271775aaee05c64ac66b1b8eb7e1dcc11e369..31a7013d504e1546f3134ede3d7497057bf365e1 100644 (file)
@@ -1,5 +1,5 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  x86-64 version.
-   Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2001-2005, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Jaeger <aj@suse.de>.
 
@@ -190,7 +190,7 @@ _dl_start_user:\n\
    define the value.
    ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
    of the main executable's symbols, as for a COPY reloc.  */
-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
+#if !defined RTLD_BOOTSTRAP || USE___THREAD
 # define elf_machine_type_class(type)                                        \
   ((((type) == R_X86_64_JUMP_SLOT                                            \
      || (type) == R_X86_64_DTPMOD64                                          \
@@ -300,7 +300,7 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
          *reloc_addr = value + reloc->r_addend;
          break;
 
-#if defined USE_TLS && !defined RESOLVE_CONFLICT_FIND_MAP
+#ifndef RESOLVE_CONFLICT_FIND_MAP
        case R_X86_64_DTPMOD64:
 # ifdef RTLD_BOOTSTRAP
          /* During startup the dynamic linker is always the module
@@ -339,7 +339,7 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
                             - sym_map->l_tls_offset);
            }
          break;
-#endif /* use TLS */
+#endif
 
 #ifndef RTLD_BOOTSTRAP
        case R_X86_64_64:
index 778d8ef0be587a9f1a38bd071537c2453bacba5d..6bcd2479c6f7469d84d91e2bc09091fad8786afb 100644 (file)
@@ -2,12 +2,6 @@
 
 #include <tls.h>
 
-#if USE_TLS
-@@@ use-tls = yes @@@
-#else
-@@@ use-tls = no @@@
-#endif
-
 #if USE___THREAD
 @@@ use-thread = yes @@@
 #else