separate __tls_get_addr implementation from dynamic linker/init_tls
authorRich Felker <dalias@aerifal.cx>
Thu, 19 Jun 2014 06:59:44 +0000 (02:59 -0400)
committerRich Felker <dalias@aerifal.cx>
Thu, 19 Jun 2014 06:59:44 +0000 (02:59 -0400)
commit5ba238e1e48d2fe4107e09903b26b2b36aa9e9ff
tree2933bdc33c131122acea9b188186443da2e6a37b
parent4e0b4a5de735ecb241fadb1e15381c947e16e71f
separate __tls_get_addr implementation from dynamic linker/init_tls

such separation serves multiple purposes:

- by having the common path for __tls_get_addr alone in its own
  function with a tail call to the slow case, code generation is
  greatly improved.

- by having __tls_get_addr in it own file, it can be replaced on a
  per-arch basis as needed, for optimization or ABI-specific purposes.

- by removing __tls_get_addr from __init_tls.c, a few bytes of code
  are shaved off of static binaries (which are unlikely to use this
  function unless the linker messed up).
src/env/__init_tls.c
src/ldso/dynlink.c
src/thread/__tls_get_addr.c [new file with mode: 0644]