- Switch ARM and MIPS to TLS Variant I
- Fix TLS allocation for Variant I: both rtld and libc allocators assume that tls_static_space includes space for TLS structure. So increment calculated static size by the size of it.
This commit is contained in:
parent
ece21645a2
commit
8e4a44e740
@ -66,11 +66,11 @@ void __libc_free_tls(void *tls, size_t tcbsize, size_t tcbalign);
|
||||
#error TLS_TCB_ALIGN undefined for target architecture
|
||||
#endif
|
||||
|
||||
#if defined(__ia64__) || defined(__powerpc__)
|
||||
#if defined(__arm__) || defined(__ia64__) || defined(__mips__) || \
|
||||
defined(__powerpc__)
|
||||
#define TLS_VARIANT_I
|
||||
#endif
|
||||
#if defined(__i386__) || defined(__amd64__) || defined(__sparc64__) || \
|
||||
defined(__arm__) || defined(__mips__)
|
||||
#if defined(__i386__) || defined(__amd64__) || defined(__sparc64__)
|
||||
#define TLS_VARIANT_II
|
||||
#endif
|
||||
|
||||
@ -308,6 +308,13 @@ _init_tls()
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef TLS_VARIANT_I
|
||||
/*
|
||||
* tls_static_space should include space for TLS structure
|
||||
*/
|
||||
tls_static_space += TLS_TCB_SIZE;
|
||||
#endif
|
||||
|
||||
tls = _rtld_allocate_tls(NULL, TLS_TCB_SIZE, TLS_TCB_ALIGN);
|
||||
|
||||
_set_tp(tls);
|
||||
|
Loading…
Reference in New Issue
Block a user