Add hidden __tls_get_addr/___tls_get_addr alias
commit050f7298e1ecc39887c329037575ccd972071255
authorH.J. Lu <hjl.tools@gmail.com>
Sun, 21 Dec 2014 17:12:04 +0000 (21 09:12 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Sun, 21 Dec 2014 17:27:11 +0000 (21 09:27 -0800)
tree3e4caaa9640efd7e9a7020943f932c426b29ba29
parent6df5547e9349f0e22cd4356c8ef517e97530ddd0
Add hidden __tls_get_addr/___tls_get_addr alias

__tls_get_addr/___tls_get_addr is always defined in ld.so.  There is
no need to call them via PLT inside ld.so.  This patch adds the hidden
__tls_get_addr/___tls_get_addr aliases and calls them directly from
_dl_tlsdesc_dynamic.  There is no need to set up the EBX register in
i386 _dl_tlsdesc_dynamic when calling the hidden ___tls_get_addr.

* elf/dl-tls.c (__tls_get_addr): Provide the hidden definition
if not defined.
* sysdeps/i386/dl-tls.h (___tls_get_addr): Provide the hidden
definition.
* sysdeps/i386/dl-tlsdesc.S (_dl_tlsdesc_dynamic): Call the
hidden ___tls_get_addr.
* sysdeps/x86_64/dl-tlsdesc.S (_dl_tlsdesc_dynamic): Call the
hidden __tls_get_addr.
* sysdeps/generic/localplt.data (__tls_get_addr): Removed.
* sysdeps/unix/sysv/linux/i386/localplt.data (___tls_get_addr):
Likewise.
ChangeLog
elf/dl-tls.c
sysdeps/generic/localplt.data
sysdeps/i386/dl-tls.h
sysdeps/i386/dl-tlsdesc.S
sysdeps/unix/sysv/linux/i386/localplt.data
sysdeps/x86_64/dl-tlsdesc.S