x86: Lookup __tls_get_addr or ___tls_get_addr once
authorH.J. Lu <hjl.tools@gmail.com>
Sun, 6 Aug 2017 15:40:56 +0000 (08:40 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Sun, 6 Aug 2017 15:41:07 +0000 (08:41 -0700)
commit1d4af308ae58f459a2bfc50de70832284f1d3d2a
tree07caed1fe797634d457232326daf85edbbd2ea4b
parenta4819f54c0006554179631189131080be859eefb
x86: Lookup __tls_get_addr or ___tls_get_addr once

Instead of checking if a symbol is __tls_get_addr or ___tls_get_addr,
we check if there is a reference to __tls_get_addr or ___tls_get_addr
before starting relocation check.

* elf32-i386.c (elf_i386_link_hash_entry): Change tls_get_addr
to 1 bit.
(elf_i386_link_hash_newfunc): Initialize tls_get_addr to 0.
(elf_i386_check_tls_transition): Check tls_get_addr directly.
(elf_i386_convert_load_reloc): Update tls_get_addr check.
(elf_i386_link_check_relocs): New function.
(bfd_elf32_bfd_link_check_relocs): New.
* elf64-x86-64.c (elf_x86_64_link_hash_entry): Change tls_get_addr
to 1 bit.
(elf_x86_64_link_hash_newfunc): Initialize tls_get_addr to 0.
(elf_x86_64_check_tls_transition): Check tls_get_addr directly.
(elf_x86_64_convert_load_reloc): Update tls_get_addr check.
(elf_x86_64_link_check_relocs): New function.
(bfd_elf64_bfd_link_check_relocs): New.
(bfd_elf32_bfd_link_check_relocs): Likewise.
bfd/ChangeLog
bfd/elf32-i386.c
bfd/elf64-x86-64.c