move thread pointer setup to beginning of dynamic linker stage 3
authorRich Felker <dalias@aerifal.cx>
Mon, 13 Apr 2015 22:40:52 +0000 (18:40 -0400)
committerRich Felker <dalias@aerifal.cx>
Mon, 13 Apr 2015 22:47:17 +0000 (18:47 -0400)
commit71f099cb7db821c51d8f39dfac622c61e54d794c
treea74b0afe84c99f4d594b0d704474a99548664a51
parent0f66fcec2584706116df70cf1db7f2f8815f4444
move thread pointer setup to beginning of dynamic linker stage 3

this allows the dynamic linker itself to run with a valid thread
pointer, which is a prerequisite for stack protector on archs where
the ssp canary is stored in TLS. it will also allow us to remove some
remaining runtime checks for whether the thread pointer is valid.

as long as the application and its libraries do not require additional
size or alignment, this early thread pointer will be kept and reused
at runtime. otherwise, a new static TLS block is allocated after
library loading has finished and the thread pointer is switched over.
src/ldso/dynlink.c