ELF dynsyms
authorAlan Modra <amodra@gmail.com>
Wed, 13 Jun 2018 23:29:12 +0000 (08:59 +0930)
committerAlan Modra <amodra@gmail.com>
Thu, 14 Jun 2018 02:02:01 +0000 (11:32 +0930)
commit7f923b7fd2a7c55f2337b3b79a2b2081a7bbe22b
treeaad8e15a309500a29959a760efe168e09026ec33
parentff91d2f0e20fc91b6b101a0b20cbd38ab2d7fb50
ELF dynsyms

Many ELF targets arrange to emit a number of section symbols in
.dynsym for use by dynamic relocations.  This happens before the
dynamic relocations are output, and the need for those symbols
determined.  In most cases they are not needed.  A proper analysis of
the need for dynamic section symbols is target specific and tedious,
so this patch just excludes them in the obvious case when no
dynamic relocations are present.

The patch also runs the new pr23161 and pr23162 tests on more targets.

bfd/
* elf-bfd.h (struct elf_link_hash_table): Add "dynamic_relocs".
* elflink.c (_bfd_elf_init_2_index_sections): Comment fix.
(_bfd_elf_add_dynamic_entry): Set "dynamic_relocs".
(_bfd_elf_link_renumber_dynsyms): Exclude all section symbols when
"dynamic_relocs" is not set.
* elfxx-mips.c (count_section_dynsyms): Likewise.
ld/
* testsuite/ld-elf/readelf.exp: Delete DUMP and selection of
variant ver_def.vd.
* testsuite/ld-elf/ver_def-tic6x.vd: Delete.
* testsuite/ld-elf/shared.exp: Run most pr23161 and pr23162 tests for
linux, nacl and gnu targets.
* testsuite/ld-mips-elf/mips-elf.exp: Set base_syms to 1.
* testsuite/ld-elf/pr23161a.rd: Don't check reloc type.  Allow any
order of __bss_start, _edata and _end.
* testsuite/ld-elf/pr23161b.rd: Don't check plt and dyn relocs.
Allow and order of __bss_start, _edata and _end.
* testsuite/ld-elf/pr23162.rd: Fail if __bss_start, _edata or _end
relocs are present rather than testing for no relocations.
* testsuite/ld-aarch64/gc-plt-relocs.d,
* testsuite/ld-aarch64/ifunc-1-local.d,
* testsuite/ld-aarch64/ifunc-1.d,
* testsuite/ld-aarch64/ifunc-2-local.d,
* testsuite/ld-aarch64/ifunc-2.d,
* testsuite/ld-aarch64/ifunc-21.d,
* testsuite/ld-aarch64/ifunc-3a.d,
* testsuite/ld-arm/farcall-mixed-lib-v4t.d,
* testsuite/ld-arm/farcall-mixed-lib.d,
* testsuite/ld-arm/gc-hidden-1.d,
* testsuite/ld-arm/tls-gdesc-got.d,
* testsuite/ld-arm/tls-lib-loc.d,
* testsuite/ld-arm/tls-longplt-lib.d,
* testsuite/ld-arm/tls-thumb1.d,
* testsuite/ld-cris/libdso-10.d,
* testsuite/ld-cris/libdso-11.d,
* testsuite/ld-cris/libdso-13b.d,
* testsuite/ld-cris/libdso-14.d,
* testsuite/ld-cris/libdso-15.d,
* testsuite/ld-cris/pic-gc-72.d,
* testsuite/ld-cris/pic-gc-73.d,
* testsuite/ld-cris/tls-gc-71.d,
* testsuite/ld-mips-elf/mips16-pic-4a.nd,
* testsuite/ld-mips-elf/pic-and-nonpic-3a.dd,
* testsuite/ld-mips-elf/pie-n32.d,
* testsuite/ld-mips-elf/pie-n64.d,
* testsuite/ld-mips-elf/pie-o32.d: Update for removed dynamic
section symbols.
39 files changed:
bfd/ChangeLog
bfd/elf-bfd.h
bfd/elflink.c
bfd/elfxx-mips.c
ld/ChangeLog
ld/testsuite/ld-aarch64/gc-plt-relocs.d
ld/testsuite/ld-aarch64/ifunc-1-local.d
ld/testsuite/ld-aarch64/ifunc-1.d
ld/testsuite/ld-aarch64/ifunc-2-local.d
ld/testsuite/ld-aarch64/ifunc-2.d
ld/testsuite/ld-aarch64/ifunc-21.d
ld/testsuite/ld-aarch64/ifunc-3a.d
ld/testsuite/ld-arm/farcall-mixed-lib-v4t.d
ld/testsuite/ld-arm/farcall-mixed-lib.d
ld/testsuite/ld-arm/gc-hidden-1.d
ld/testsuite/ld-arm/tls-gdesc-got.d
ld/testsuite/ld-arm/tls-lib-loc.d
ld/testsuite/ld-arm/tls-longplt-lib.d
ld/testsuite/ld-arm/tls-thumb1.d
ld/testsuite/ld-cris/libdso-10.d
ld/testsuite/ld-cris/libdso-11.d
ld/testsuite/ld-cris/libdso-13b.d
ld/testsuite/ld-cris/libdso-14.d
ld/testsuite/ld-cris/libdso-15.d
ld/testsuite/ld-cris/pic-gc-72.d
ld/testsuite/ld-cris/pic-gc-73.d
ld/testsuite/ld-cris/tls-gc-71.d
ld/testsuite/ld-elf/pr23161a.rd
ld/testsuite/ld-elf/pr23161b.rd
ld/testsuite/ld-elf/pr23162.rd
ld/testsuite/ld-elf/readelf.exp
ld/testsuite/ld-elf/shared.exp
ld/testsuite/ld-elf/ver_def-tic6x.vd [deleted file]
ld/testsuite/ld-mips-elf/mips-elf.exp
ld/testsuite/ld-mips-elf/mips16-pic-4a.nd
ld/testsuite/ld-mips-elf/pic-and-nonpic-3a.dd
ld/testsuite/ld-mips-elf/pie-n32.d
ld/testsuite/ld-mips-elf/pie-n64.d
ld/testsuite/ld-mips-elf/pie-o32.d