- 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:
gonzo 2012-03-06 03:42:54 +00:00
parent ece21645a2
commit 8e4a44e740

View File

@ -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);