gas reloc sorting
authorAlan Modra <amodra@gmail.com>
Mon, 20 Dec 2021 14:39:13 +0000 (01:09 +1030)
committerAlan Modra <amodra@gmail.com>
Tue, 28 Dec 2021 12:30:01 +0000 (23:00 +1030)
commit443aa5f05edb58fc1774f926e9259b7c5a180926
treeebc72377ef825f1da276fa3080f91fb49a143341
parent4748764aaba89b8515cbf8918dc0ada840cdfab7
gas reloc sorting

In some cases, eg. riscv_pre_output_hook, gas generates out-of-order
relocations.  Various places in the linker assume relocs are sorted
by increasing r_offset, which is normally the case.  Provide
GAS_SORT_RELOCS to handle unsorted relocs.

bfd/
PR 28709
* elf32-nds32.c (nds32_insertion_sort): Make static.
* elf32-nds32.h (nds32_insertion_sort): Delete declaration.
gas/
PR 28709
* write.c (write_relocs): Implement reloc sorting by r_offset
when GAS_SORT_RELOCS.
* config/tc-nds32.c (compar_relent, nds32_set_section_relocs): Delete.
* config/tc-nds32.h (nds32_set_section_relocs): Don't declare.
(SET_SECTION_RELOCS): Don't define.
(GAS_SORT_RELOCS): Define.
* config/tc-riscv.h (GAS_SORT_RELOCS): Define.
bfd/elf32-nds32.c
bfd/elf32-nds32.h
gas/config/tc-nds32.c
gas/config/tc-nds32.h
gas/config/tc-riscv.h
gas/write.c