fix over-alignment of TLS, insufficient builtin TLS on 64-bit archs
authorRich Felker <dalias@aerifal.cx>
Fri, 6 Mar 2015 18:27:08 +0000 (13:27 -0500)
committerRich Felker <dalias@aerifal.cx>
Fri, 6 Mar 2015 18:27:08 +0000 (13:27 -0500)
commitbd67959f3ad5049c35af0a0e2f8f1a1e60577a49
treee902b7ed8e160789cfc372d25dfd6cbaa0e1492c
parent2b42c8cb37a3ef115bd04de8637078e43cd72f37
fix over-alignment of TLS, insufficient builtin TLS on 64-bit archs

a conservative estimate of 4*sizeof(size_t) was used as the minimum
alignment for thread-local storage, despite the only requirements
being alignment suitable for struct pthread and void* (which struct
pthread already contains). additional alignment required by the
application or libraries is encoded in their headers and is already
applied.

over-alignment prevented the builtin_tls array from ever being used in
dynamic-linked programs on 64-bit archs, thereby requiring allocation
at startup even in programs with no TLS of their own.
src/env/__init_tls.c
src/ldso/dynlink.c