From 443aa5f05edb58fc1774f926e9259b7c5a180926 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Tue, 21 Dec 2021 01:09:13 +1030 Subject: 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 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'bfd/elf32-nds32.c') diff --git a/bfd/elf32-nds32.c b/bfd/elf32-nds32.c index 5b43ca9..56d1d39 100644 --- a/bfd/elf32-nds32.c +++ b/bfd/elf32-nds32.c @@ -2522,7 +2522,7 @@ nds32_put_trampoline (void *contents, const unsigned long *template, /* nds32_insertion_sort sorts an array with nmemb elements of size size. This prototype is the same as qsort (). */ -void +static void nds32_insertion_sort (void *base, size_t nmemb, size_t size, int (*compar) (const void *lhs, const void *rhs)) { -- cgit v1.1