From 5ba238e1e48d2fe4107e09903b26b2b36aa9e9ff Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Thu, 19 Jun 2014 02:59:44 -0400 Subject: 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 | 5 ----- 1 file changed, 5 deletions(-) (limited to 'src/env') diff --git a/src/env/__init_tls.c b/src/env/__init_tls.c index f7eab8d6..13cf2eea 100644 --- a/src/env/__init_tls.c +++ b/src/env/__init_tls.c @@ -53,11 +53,6 @@ void *__copy_tls(unsigned char *mem) return td; } -void *__tls_get_addr(size_t *v) -{ - return (char *)__pthread_self()->dtv[1]+v[1]; -} - #if ULONG_MAX == 0xffffffff typedef Elf32_Phdr Phdr; #else -- cgit v1.2.1