diff options
author | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2015-04-18 21:37:30 +0200 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2015-04-22 19:59:09 +0200 |
commit | 7c78a5c52b2db6bb0d6e163b38897a003a289958 (patch) | |
tree | cb581c1f91c584c9f7a4be0aa08ab7cf077a5972 | |
parent | 8e04c064c4cb39bae5e5bec166c762d2fc88cb11 (diff) |
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>
-rw-r--r-- | ldso/include/ldsodefs.h | 2 | ||||
-rw-r--r-- | ldso/ldso/dl-tls.c | 9 | ||||
-rw-r--r-- | 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 4063d00f4..0feed8954 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 6679693f4..05193a893 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 586ead3fa..3598b8927 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@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; } |