libc: Fix the alignment of the TCB to match rtld for several architectures.
- Use 16 byte alignment rather than 8 for aarch64, powerpc64, and RISC-V. - Use 8 byte alignment rather than 4 for 32-bit arm, mips, and powerpc. I suspect that mips64 should be using 16 byte alignment, but both libc and rtld currently use 8 byte alignment. Reviewed by: kib, jrtc27 Sponsored by: The University of Cambridge, Google Inc. Differential Revision: https://reviews.freebsd.org/D33350
This commit is contained in:
parent
299617496c
commit
4c2f5bfbfa
@ -72,11 +72,14 @@ void _rtld_free_tls(void *tls, size_t tcbsize, size_t tcbalign);
|
||||
void *__libc_allocate_tls(void *oldtls, size_t tcbsize, size_t tcbalign);
|
||||
void __libc_free_tls(void *tls, size_t tcbsize, size_t tcbalign);
|
||||
|
||||
#if defined(__amd64__)
|
||||
#if defined(__amd64__) || defined(__aarch64__) || defined(__riscv)
|
||||
#define TLS_TCB_ALIGN 16
|
||||
#elif defined(__aarch64__) || defined(__arm__) || defined(__i386__) || \
|
||||
defined(__mips__) || defined(__powerpc__) || defined(__riscv)
|
||||
#define TLS_TCB_ALIGN sizeof(void *)
|
||||
#elif defined(__arm__) || defined(__mips__)
|
||||
#define TLS_TCB_ALIGN 8
|
||||
#elif defined(__powerpc__)
|
||||
#define TLS_TCB_ALIGN TLS_TCB_SIZE
|
||||
#elif defined(__i386__)
|
||||
#define TLS_TCB_ALIGN 4
|
||||
#else
|
||||
#error TLS_TCB_ALIGN undefined for target architecture
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user