Message ID | CAMe9rOqryFresZrjXDwTnNBVseWh6YfgMAN5+niO4oJhA2-RoA@mail.gmail.com |
---|---|
State | New |
Headers | show |
Note that your change only affects static linking, while the bug on ARM affects dynamic linking as well. On arm-linux-gnueabihf (test runs under qemu), your change did not fix tst-tlsalign-static and it caused these regressions: +FAIL: elf/ifuncmain1picstatic +FAIL: elf/ifuncmain1static +FAIL: elf/ifuncmain2picstatic +FAIL: elf/ifuncmain2static +FAIL: elf/ifuncmain4picstatic +FAIL: elf/ifuncmain4static +FAIL: elf/ifuncmain5picstatic +FAIL: elf/ifuncmain5static +FAIL: elf/ifuncmain7picstatic +FAIL: elf/ifuncmain7static +FAIL: elf/tst-array1-static +FAIL: elf/tst-array1-static-cmp +FAIL: elf/tst-array5-static +FAIL: elf/tst-array5-static-cmp +FAIL: elf/tst-dl-iter-static +FAIL: elf/tst-leaks1-static +FAIL: elf/tst-tls1-static +FAIL: elf/tst-tls2-static +FAIL: elf/tst-tls9-static
diff --git a/csu/libc-tls.c b/csu/libc-tls.c index 64d1779..d797ef4 100644 --- a/csu/libc-tls.c +++ b/csu/libc-tls.c @@ -138,10 +138,10 @@ __libc_setup_tls (size_t tcbsize, size_t tcbalign) to request some surplus that permits dynamic loading of modules with IE-model TLS. */ #if TLS_TCB_AT_TP - tcb_offset = roundup (memsz + GL(dl_tls_static_size), tcbalign); + tcb_offset = roundup (memsz + GL(dl_tls_static_size), max_align); tlsblock = __sbrk (tcb_offset + tcbsize + max_align); #elif TLS_DTV_AT_TP - tcb_offset = roundup (tcbsize, align ?: 1); + tcb_offset = roundup (tcbsize, max_align ?: 1); tlsblock = __sbrk (tcb_offset + memsz + max_align + TLS_PRE_TCB_SIZE + GL(dl_tls_static_size)); tlsblock += TLS_PRE_TCB_SIZE;