OSDN Git Service

* elf64-ppc.c (struct _ppc64_elf_section_data): Delete t_symndx,
authorAlan Modra <amodra@bigpond.net.au>
Sun, 15 Feb 2009 12:14:14 +0000 (12:14 +0000)
committerAlan Modra <amodra@bigpond.net.au>
Sun, 15 Feb 2009 12:14:14 +0000 (12:14 +0000)
commita4569fb8d57c82b3eefa1eb2995f373f9be3c728
treef07886219fe8b4331b0fda6415a2e3f6bf4dafd0
parentb4b748f8049db6b400b5b942dc28851cc16222da
* elf64-ppc.c (struct _ppc64_elf_section_data): Delete t_symndx,
add toc.symndx and toc.add.
(ppc64_elf_check_relocs): Don't set htab->tls_get_addr here.
Set up toc.add.
(get_tls_mask): Add toc_addend param, set from toc.add.  Adjust all
callers.
(ppc64_elf_tls_setup): Set htab->tls_get_addr and tls_get_addr_fd.
(branch_reloc_hash_match): New function, extracted from..
(ppc64_elf_tls_optimize): ..here.
(ppc64_elf_relocate_section): Properly set addends when optimizing
tls sequences.  Avoid unnecessary reading and writing of insns.
Only redo reloc when symbol changed.  Bypass symbol checks when
using tlsld_got.
* elf32-ppc.c (ppc_elf_tls_setup): Correct comment.
(branch_reloc_hash_match): New function, extracted from..
(ppc_elf_tls_optimize): ..here.
(ppc_elf_relocate_section): Avoid unnecessary reading of insns.
Don't clear addend on zapped __tls_get_addr reloc.
bfd/ChangeLog
bfd/elf32-ppc.c
bfd/elf64-ppc.c