use hidden __tls_get_new for tls/tlsdesc lookup fallback cases
authorRich Felker <dalias@aerifal.cx>
Wed, 15 Apr 2015 03:45:08 +0000 (23:45 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 15 Apr 2015 03:45:08 +0000 (23:45 -0400)
commit81e18eb3cd61f7b68a8f99b3e6c728f2a4d79221
tree2ea334c40a3b59607be4f3f9ae524cdcf5b69d21
parent9c738dc183f44de40d263e4ff8dc540915a41aed
use hidden __tls_get_new for tls/tlsdesc lookup fallback cases

previously, the dynamic tlsdesc lookup functions and the i386
special-ABI ___tls_get_addr (3 underscores) function called
__tls_get_addr when the slot they wanted was not already setup;
__tls_get_addr would then in turn also see that it's not setup and
call __tls_get_new.

calling __tls_get_new directly is both more efficient and avoids the
issue of calling a non-hidden (public API/ABI) function from asm.

for the special i386 function, a weak reference to __tls_get_new is
used since this function is not defined when static linking (the code
path that needs it is unreachable in static-linked programs).
src/ldso/aarch64/tlsdesc.s
src/ldso/i386/tlsdesc.s
src/ldso/x86_64/tlsdesc.s
src/thread/i386/tls.s