Browse Source

NPTL: Rename a variable

There seems to be a bug in gold with static TLS at least on x86_64 (?)

Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Bernhard Reutner-Fischer 9 years ago
parent
commit
7c78a5c52b
3 changed files with 18 additions and 4 deletions
  1. 2 0
      ldso/include/ldsodefs.h
  2. 7 2
      ldso/ldso/dl-tls.c
  3. 9 2
      libc/misc/pthread/tsd.c

+ 2 - 0
ldso/include/ldsodefs.h

@@ -106,7 +106,9 @@ EXTERN size_t _dl_tls_static_used;
 /* Alignment requirement of the static TLS block.  */
 EXTERN size_t _dl_tls_static_align;
 /* Function pointer for catching TLS errors.  */
+#if 1 /* def _LIBC_REENTRANT */
 EXTERN void **(*_dl_error_catch_tsd) (void) __attribute__ ((const));
+#endif
 
 /* Number of additional entries in the slotinfo array of each slotinfo
    list element.  A large number makes it almost certain take we never

+ 7 - 2
ldso/ldso/dl-tls.c

@@ -950,8 +950,13 @@ static bool tls_init_tp_called;
 void ** __attribute__ ((const))
 _dl_initial_error_catch_tsd (void)
 {
-	static void *data;
-	return &data;
+	static
+#if 0 /* def ARCH_NEEDS_BOOTSTRAP_RELOCS */
+		/* If we have to do bootstrap relocs anyway we might as well */
+		__thread
+# endif
+		void *__tsd_data;
+	return &__tsd_data;
 }
 
 #ifdef SHARED

+ 9 - 2
libc/misc/pthread/tsd.c

@@ -1,11 +1,18 @@
+/*
+ * Copyright (C) 2006 by Steven J. Hill <sjhill@realitydiluted.com>
+ *
+ * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
+ */
 /* libpthread sets _dl_error_catch_tsd to point to this function.
    We define it here instead of in libpthread so that it doesn't
    need to have a TLS segment of its own just for this one pointer.  */
 
+#include <features.h>
+
 void **__libc_dl_error_tsd(void) __attribute__ ((const));
 void ** __attribute__ ((const))
 __libc_dl_error_tsd (void)
 {
-  static __thread void *data __attribute__ ((tls_model ("initial-exec")));
-  return &data;
+  static __thread void *__tsd_data attribute_tls_model_ie;
+  return &__tsd_data;
 }