impose barrier between thread pointer setup and use for static linking
authorRich Felker <dalias@aerifal.cx>
Thu, 18 Oct 2018 02:20:01 +0000 (22:20 -0400)
committerRich Felker <dalias@aerifal.cx>
Thu, 18 Oct 2018 02:20:01 +0000 (22:20 -0400)
commit4390383b32250a941ec616e8bff6f568a801b1c0
tree2f9a928ddaf558a7b0ec81e38abb6f9c48578aba
parenta4a3e4dbc086eb58e5cf6118480ef4825788e231
impose barrier between thread pointer setup and use for static linking

this is the analog of commit 1c84c99913bf1cd47b866ed31e665848a0da84a2
for static linking. unlike with dynamic linking, we don't have
symbolic lookup to use as a barrier. use a dummy (target-agnostic)
degenerate inline asm fragment instead. this technique has precedent
in commit 05ac345f895098657cf44d419b5d572161ebaf43 where it's used for
explicit_bzero. if it proves problematic in any way, loading the
address of the stage 2 function from a pointer object whose address
leaks to kernelspace during thread pointer init could be used as an
even stronger barrier.
src/env/__libc_start_main.c