Fix performance regression due to ld -r memmove
authorAlan Modra <amodra@gmail.com>
Mon, 9 Nov 2015 04:33:29 +0000 (15:03 +1030)
committerAlan Modra <amodra@gmail.com>
Tue, 10 Nov 2015 06:44:41 +0000 (17:14 +1030)
commitc316a17c40e44e8798b34ff84130904f2e7a53de
treec63c9eb998140c10abb05c3533f64dc99b6b9c88
parent1057567ea711d80f9937653179b06507827d5819
Fix performance regression due to ld -r memmove

The idea here is that instead of using memmove to shuffle the relocs
array every time one is deleted, to add a "wrel" pointer and copy from
rel[0] to wrel[0] as we go.

* elf64-ppc.c (ppc64_elf_relocate_section): Use read and write
pointers to reloc array, rather than memmove when deleting a
reloc.  Don't use RELOC_AGAINST_DISCARDED_SECTION.  Adjust
reloc counts at end of loop.
* elf32-ppc.c (ppc_elf_relocate_section): Likewise.
bfd/ChangeLog
bfd/elf32-ppc.c
bfd/elf64-ppc.c