elf: Handle the section flag 'o' linked to special sections

Call _bfd_elf_section_from_bfd_section to get the sh_link value from
the section flag 'o' directive, which may point to special sections,
like SHN_ABS or SHN_COMM.  Update readelf to print the special section
names in the sh_link field and replace "internal->sh_link > num" with
"internal->sh_link >= num".

bfd/

	PR gas/33744
	* elf.c (assign_section_numbers): Call
	_bfd_elf_section_from_bfd_section to get the sh_link value.

binutils/

	PR gas/33744
	* readelf.c (special_defined_section_index): New.
	(get_32bit_section_headers): Don't warn special section indexes
	in the sh_link field.
	(get_64bit_section_headers): Likewise.
	(process_section_headers): Print special defined section names.

gas/

	PR gas/33744
	* testsuite/gas/elf/elf.exp: Run PR gas/33744 tests.
	* testsuite/gas/elf/sh-link-abs-1.d: New file.
	* testsuite/gas/elf/sh-link-abs-2.d: Likewise.
	* testsuite/gas/elf/sh-link-abs-3-32.d: Likewise.
	* testsuite/gas/elf/sh-link-abs-3-64.d: Likewise.
	* testsuite/gas/elf/sh-link-abs-4-32.d: Likewise.
	* testsuite/gas/elf/sh-link-abs-4-64.d: Likewise.
	* testsuite/gas/elf/sh-link-abs.s: Likewise.
	* testsuite/gas/elf/sh-link-common-1.d: Likewise.
	* testsuite/gas/elf/sh-link-common-2.d: Likewise.
	* testsuite/gas/elf/sh-link-common-3-32.d: Likewise.
	* testsuite/gas/elf/sh-link-common-3-64.d: Likewise.
	* testsuite/gas/elf/sh-link-common-4-32.d: Likewise.
	* testsuite/gas/elf/sh-link-common-4-64.d: Likewise.
	* testsuite/gas/elf/sh-link-common.s: Likewise.
	* testsuite/gas/elf/sh-link-large-common-1.d: Likewise.
	* testsuite/gas/elf/sh-link-large-common-2.d: Likewise.
	* testsuite/gas/elf/sh-link-large-common-3.d: Likewise.
	* testsuite/gas/elf/sh-link-large-common-4.d: Likewise.
	* testsuite/gas/elf/sh-link-large-common.s: Likewise.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
22 files changed