ELFv2 stub, plt and glink changes
authorAlan Modra <amodra@gmail.com>
Tue, 29 Oct 2013 05:28:05 +0000 (15:58 +1030)
committerAlan Modra <amodra@gmail.com>
Wed, 30 Oct 2013 03:11:20 +0000 (13:41 +1030)
commitb9e5796b0d6ebc355e4a6d06791b7366939d10f2
tree9bc2c1cda4608895b412f891443179fecc78de49
parent6911b7dcb8ea17f8b811578dd4ac1ab7bb675e7b
ELFv2 stub, plt and glink changes

An ELFv2 PLT entry is simply the address of the target function rather
than three (or two) words to specify entry, toc and static chain.  PLT
call stubs are correspondingly simpler and need no thread safety
barrier.  The glink resolver stub and branch table also is simplified,
a change that could be applied to ELFv1 too, but isn't as yet.

* elf64-ppc.c (PLT_ENTRY_SIZE, PLT_INITIAL_ENTRY_SIZE): Add htab
parameter and adjust for ELFv2.  Update all uses.
(PLT_CALL_STUB_SIZE): Delete.
(ppc64_elf_get_synthetic_symtab): Support new glink layout.
(allocate_dynrelocs): Likewise.
(plt_stub_size, build_plt_stub): Adjust for ELFv2.
(get_r2off): Return 0 for ELFv2 -R.
(ppc_build_one_stub, ppc_size_one_stub): Adjust for ELFv2.
(ppc64_elf_size_stubs): Likewise.
(ppc64_elf_build_stubs): Add new ELFv2 glink.
bfd/ChangeLog
bfd/elf64-ppc.c