]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
PowerPC64 GOT indirect to GOT relative optimisation
authorAlan Modra <amodra@gmail.com>
Tue, 30 Apr 2019 07:01:01 +0000 (16:31 +0930)
committerAlan Modra <amodra@gmail.com>
Tue, 30 Apr 2019 12:39:54 +0000 (22:09 +0930)
commit066f4018ae7822d81cb6747fd9494e5dd63bfecf
treed840b2ca4e38182f327d99d34a053d5b73a7b6a4
parent8107ddcea1da07f1c4e902c17f045684beb78079
PowerPC64 GOT indirect to GOT relative optimisation

This implements an optimisation that converts sequences like
  addis r9,r2,sym@got@ha
  ld r3,sym@got@l(r9)
to
  addis r9,r2,sym@toc@ha
  addi r3,r9,sym@toc@l
when "sym" is locally defined and can't be overridden.

bfd/
* elf64-ppc.c (struct ppc64_elf_obj_tdata): Add has_gotrel.
(struct _ppc64_elf_section_data): Likewise.
(ppc64_elf_check_relocs): Set above fields.
(ppc64_elf_edit_toc): Add a pass over GOT relocs.
(ppc64_elf_relocate_section): Edit GOT indirect to GOT relative
when possible.
ld/
* testsuite/ld-powerpc/elfv2exe.d: Update.
* testsuite/ld-powerpc/elfv2so.d: Update.
* testsuite/ld-powerpc/tocopt.d: Update.
* testsuite/ld-powerpc/tocopt.s: Update.
* testsuite/ld-powerpc/tocopt5.d: Update.
* testsuite/ld-powerpc/tocopt5.s: Update.
* testsuite/ld-powerpc/tocopt7.d: Update.
* testsuite/ld-powerpc/tocopt7.s: Update.
* testsuite/ld-powerpc/tocopt8.d: Update.
* testsuite/ld-powerpc/tocopt8.s: Update.
13 files changed:
bfd/ChangeLog
bfd/elf64-ppc.c
ld/ChangeLog
ld/testsuite/ld-powerpc/elfv2exe.d
ld/testsuite/ld-powerpc/elfv2so.d
ld/testsuite/ld-powerpc/tocopt.d
ld/testsuite/ld-powerpc/tocopt.s
ld/testsuite/ld-powerpc/tocopt5.d
ld/testsuite/ld-powerpc/tocopt5.s
ld/testsuite/ld-powerpc/tocopt7.d
ld/testsuite/ld-powerpc/tocopt7.s
ld/testsuite/ld-powerpc/tocopt8.d
ld/testsuite/ld-powerpc/tocopt8.s