PR26979, Visibility of undefined foo@v1 should constrain foo@@v1
authorAlan Modra <amodra@gmail.com>
Mon, 30 Nov 2020 08:49:00 +0000 (19:19 +1030)
committerAlan Modra <amodra@gmail.com>
Tue, 1 Dec 2020 00:56:35 +0000 (11:26 +1030)
commit5160d0f323d47031cb73c39a4dbd31d8976b4c8e
tree59710941879e3598ddc359511388a9a5384ef271
parent3ca6a4e547924828ec1428eda78217b30fae809c
PR26979, Visibility of undefined foo@v1 should constrain foo@@v1

Also, undefined foo should constrain the visibility of foo@@v1 just as
it does for a later plain foo definition.

bfd/
PR 26979
* elf-bfd.h (elf_backend_merge_symbol_attribute): Update prototype.
* elf32-m68hc1x.h (elf32_m68hc11_merge_symbol_attribute): Likewise.
* elfxx-mips.h (_bfd_mips_elf_merge_symbol_attribute): Likewise.
* elfxx-x86.h (_bfd_x86_elf_merge_symbol_attribute): Likewise.
* elf32-m68hc1x.c (elf32_m68hc11_merge_symbol_attribute): Replace
isym parameter with st_other.  Adjust code.
* elf64-alpha.c (elf64_alpha_merge_symbol_attribute): Likewise.
* elf64-ppc.c (ppc64_elf_merge_symbol_attribute): Likewise.
* elfnn-aarch64.c (elfNN_aarch64_merge_symbol_attribute): Likewise.
* elfxx-mips.c (_bfd_mips_elf_merge_symbol_attribute): Likewise.
* elfxx-x86.c (_bfd_x86_elf_merge_symbol_attribute): Likewise.
* elflink.c (elf_merge_st_other): Likewise.
(_bfd_elf_merge_symbol, elf_link_add_object_symbols): Adjust to suit.
(_bfd_elf_copy_link_hash_symbol_type): Likewise.
(_bfd_elf_add_default_symbol): Merge st_other from undecorated
symbol and @VER symbol to @@VER symbol.
ld/
* testsuite/ld-elf/pr26979a.s,
* testsuite/ld-elf/pr26979b.s,
* testsuite/ld-elf/pr26979c.s,
* testsuite/ld-elf/pr26979.ver,
* testsuite/ld-elf/pr26979a.d,
* testsuite/ld-elf/pr26979b.d: New tests.
19 files changed:
bfd/ChangeLog
bfd/elf-bfd.h
bfd/elf32-m68hc1x.c
bfd/elf32-m68hc1x.h
bfd/elf64-alpha.c
bfd/elf64-ppc.c
bfd/elflink.c
bfd/elfnn-aarch64.c
bfd/elfxx-mips.c
bfd/elfxx-mips.h
bfd/elfxx-x86.c
bfd/elfxx-x86.h
ld/ChangeLog
ld/testsuite/ld-elf/pr26979.ver [new file with mode: 0644]
ld/testsuite/ld-elf/pr26979a.d [new file with mode: 0644]
ld/testsuite/ld-elf/pr26979a.s [new file with mode: 0644]
ld/testsuite/ld-elf/pr26979b.d [new file with mode: 0644]
ld/testsuite/ld-elf/pr26979b.s [new file with mode: 0644]
ld/testsuite/ld-elf/pr26979c.s [new file with mode: 0644]