ppc64_elf_edit_opd revamp
authorAlan Modra <amodra@gmail.com>
Tue, 2 Dec 2014 04:39:16 +0000 (15:09 +1030)
committerAlan Modra <amodra@gmail.com>
Tue, 2 Dec 2014 12:43:30 +0000 (23:13 +1030)
commit51aecdc5320d1707e1f034f05a378e60aae71d18
tree4a509148ce044dbe5103aff8bf5c0e0fe5bcf9e7
parentd5552aabd6c68147421819577108b51ff25ea064
ppc64_elf_edit_opd revamp

This patch sorts .opd relocs (see pr17666) and allows .opd sections
with a mix of 16 and 24 byte entries to be edited.

* elf64-ppc.c (OPD_NDX): Define.  Use throughout for sizing/indexing
_opd_sec_data array, halving required memory.
(sort_r_offset): New function.
(ppc64_elf_edit_opd): Sort incoming relocs.  Accept .opd
sections with a mix of 16 and 24 byte OPD entries.  Don't
attempt to honour --non-overlapping-opd for .opd sections with
unexpected relocs.  Simplify opd entry size calculations by
first finding the reloc for the next entry.  Make edit loop
handle one opd entry per iteration, with an inner loop
handling relocs per entry.
bfd/ChangeLog
bfd/elf64-ppc.c