* elf64-ppc.c (TLS_GD_LD): Don't define..
authorAlan Modra <amodra@gmail.com>
Sun, 9 Feb 2003 04:36:23 +0000 (04:36 +0000)
committerAlan Modra <amodra@gmail.com>
Sun, 9 Feb 2003 04:36:23 +0000 (04:36 +0000)
commit951fd09be7516710f20dfd12e7946b46d68e73e4
treea8abaa9ebee5000e9753458d7de454c68b505397
parent1bed3d8532b6303ea60d3e4bc7ee83fc052d4b4e
* elf64-ppc.c (TLS_GD_LD): Don't define..
(TLS_GD): ..define this instead and update all uses.
(TLS_TPRELGD): Define.
(ppc64_elf_link_hash_table_create): Tweak initialization of
init_refcount and init_offset.
(ppc64_elf_check_relocs): Add one extra element to t_symndx array.
Mark second slot of GD or LD toc entries.
(get_tls_type): Return an int.  Distinguish toc GD and LD entries
from other tls types.
(ppc64_elf_tls_setup): New function, split out from..
(ppc64_elf_tls_optimize): ..here.  Don't optimize when symbols are
defined in a dynamic object.  Fix LD optimization.  Don't set TLS_TPREL
on GD->IE optimization, use TLS_TPRELGD instead.  Use get_tls_type
return value to properly decide whether toc GD and LD entries can
optimize away __tls_get_addr call.  Check next reloc after DTPMOD64
to determine GD or LD rather than looking at TLS_LD flag.  Don't
attempt to adjust got entry tls_type here..
(allocate_dynrelocs): ..instead, adjust got entry tls_type here, and
look for possible merges.
(ppc64_elf_size_dynamic_sections): Adjust local got entries for
optimization.
(ppc64_elf_size_stubs): Tweak __tls_get_addr fudge.
(ppc64_elf_relocate_section): Rename some vars to better reflect usage.
Make use of return value from get_tls_type to properly detect GD and
LD optimizations.  Split tlsld/gd hi/ha from lo/ds case.  Don't
handle tls_get_addr removal when looking at REL24 relocs, do it when
looking at the previous reloc.  Check reloc after DTPMOD64 to determine
GD or LD.
* elf64-ppc.h (ppc64_elf_tls_setup): Declare.
bfd/ChangeLog
bfd/elf64-ppc.c
bfd/elf64-ppc.h