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.
6 files changed