[git commit] NPTL: Rename a variable

Bernhard Reutner-Fischer rep.dot.nop at gmail.com
Wed Apr 22 17:59:09 UTC 2015


commit: http://git.uclibc.org/uClibc/commit/?id=7c78a5c52b2db6bb0d6e163b38897a003a289958
branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/master

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 at gmail.com>
---
 ldso/include/ldsodefs.h |    2 ++
 ldso/ldso/dl-tls.c      |    9 +++++++--
 libc/misc/pthread/tsd.c |   11 +++++++++--
 3 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/ldso/include/ldsodefs.h b/ldso/include/ldsodefs.h
index 4063d00..0feed89 100644
--- a/ldso/include/ldsodefs.h
+++ b/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
diff --git a/ldso/ldso/dl-tls.c b/ldso/ldso/dl-tls.c
index 6679693..05193a8 100644
--- a/ldso/ldso/dl-tls.c
+++ b/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
diff --git a/libc/misc/pthread/tsd.c b/libc/misc/pthread/tsd.c
index 586ead3..3598b89 100644
--- a/libc/misc/pthread/tsd.c
+++ b/libc/misc/pthread/tsd.c
@@ -1,11 +1,18 @@
+/*
+ * Copyright (C) 2006 by Steven J. Hill <sjhill at 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;
 }


More information about the uClibc-cvs mailing list