lto: Don't add indirect symbols for versioned aliases in IR
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 29 Mar 2023 20:06:26 +0000 (13:06 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 31 Mar 2023 15:34:48 +0000 (08:34 -0700)
commit79cfb928f552401e3cec7a208a87eb74aa0d2d8b
tree77b7db15ab24daeead73c0919928791c6b7f38c4
parent5d49758d2c04dcf0d685f99e85a553e7c3891e34
lto: Don't add indirect symbols for versioned aliases in IR

Linker adds indirect symbols for versioned symbol aliases, which are
created by ".symver foo, foo@FOO", by checking symbol type, value and
section so that references to foo will be replaced by references to
foo@FOO if foo and foo@FOO have the same symbol type, value and section.
But in IR, since all symbols of the same type have the same value and
section, we can't tell if a symbol is an alias of another symbol by
their types, values and sections.  We shouldn't add indirect symbols
for versioned symbol aliases in IR.

bfd/

PR ld/30281
* elflink.c (elf_link_add_object_symbols): Don't add indirect
symbols for ".symver foo, foo@FOO" aliases in IR.

ld/

PR ld/30281
* testsuite/ld-plugin/lto.exp: Add PR ld/30281 test.
* testsuite/ld-plugin/pr30281.t: New file.
* testsuite/ld-plugin/pr30281.c: Likewise.
bfd/elflink.c
ld/testsuite/ld-plugin/lto.exp
ld/testsuite/ld-plugin/pr30281.c [new file with mode: 0644]
ld/testsuite/ld-plugin/pr30281.t [new file with mode: 0644]