mirror of git://sourceware.org/git/glibc.git
Use TLS initial-exec model for __libc_tsd_CTYPE_* thread variables [BZ #33234]
Commit10a66a8e42("Remove <libc-tsd.h>") removed the TLS initial-exec (IE) model attribute from the __libc_tsd_CTYPE_* thread variable declarations and definitions. Commita894f04d87("Optimize __libc_tsd_* thread variable access") restored it on declarations. Restore the TLS initial-exec model attribute on __libc_tsd_CTYPE_* thread variable definitions. This resolves test tst-locale1 failure on s390 32-bit, when using a GNU linker without the fix from GNU binutils commit aefebe82dc89 ("IBM zSystems: Fix offset relative to static TLS"). Reviewed-by: Florian Weimer <fweimer@redhat.com> (cherry picked from commite5363e6f46)
This commit is contained in:
parent
5d8614b284
commit
940d821afb
3
NEWS
3
NEWS
|
|
@ -15,7 +15,9 @@ Deprecated and removed features, and other changes affecting compatibility:
|
|||
|
||||
The following bugs were resolved with this release:
|
||||
|
||||
[19341] ctype: Fallback initialization of TLS using relocations
|
||||
[31943] _dl_find_object can fail if ld.so contains gaps between load segments
|
||||
[32483] ctype macros segfault in multithreaded programs with multiple libc.so
|
||||
[32269] RISC-V IFUNC resolver cannot access gp pointer
|
||||
[32626] math: math: log10p1f is not correctly rounded
|
||||
[32627] math: math: sinhf is not correctly rounded
|
||||
|
|
@ -36,6 +38,7 @@ The following bugs were resolved with this release:
|
|||
[32994] stdlib: resolve a double lock init issue after fork
|
||||
[33164] iconv -o should not create executable files
|
||||
[33185] Fix double-free after allocation failure in regcomp
|
||||
[33234] Use TLS initial-exec model for __libc_tsd_CTYPE_* thread variables
|
||||
[33245] nptl: nptl: error in internal cancellation syscall handling
|
||||
|
||||
Version 2.41
|
||||
|
|
|
|||
|
|
@ -24,11 +24,11 @@
|
|||
__ctype_init before user code runs, but this does not happen for
|
||||
threads in secondary namespaces. With the initializers, secondary
|
||||
namespaces at least get locale data from the C locale. */
|
||||
__thread const uint16_t * __libc_tsd_CTYPE_B
|
||||
__thread const uint16_t * __libc_tsd_CTYPE_B attribute_tls_model_ie
|
||||
= (const uint16_t *) _nl_C_LC_CTYPE_class + 128;
|
||||
__thread const int32_t * __libc_tsd_CTYPE_TOLOWER
|
||||
__thread const int32_t * __libc_tsd_CTYPE_TOLOWER attribute_tls_model_ie
|
||||
= (const int32_t *) _nl_C_LC_CTYPE_tolower + 128;
|
||||
__thread const int32_t * __libc_tsd_CTYPE_TOUPPER
|
||||
__thread const int32_t * __libc_tsd_CTYPE_TOUPPER attribute_tls_model_ie
|
||||
= (const int32_t *) _nl_C_LC_CTYPE_toupper + 128;
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue