]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
LTO: Properly check wrapper symbol
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 9 Jul 2024 08:30:19 +0000 (01:30 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 9 Jul 2024 08:37:35 +0000 (01:37 -0700)
commiteb7892c4019bd5d00175c0eb80eb0c5a47a42ca1
tree4b2c8a1afc827974d57319b37aadf0cf8747b478
parentde9dfbb3859df7cfd0d3b70461459f521e2208e5
LTO: Properly check wrapper symbol

Add wrapper_symbol to bfd_link_hash_entry and set it to true for wrapper
symbol. Set wrap_status to wrapper if wrapper_symbol is true in LTO.

Note: Calling unwrap_hash_lookup to check for the wrapper symbol works
only when there is a definition for the wrapped symbol since references
to the wrapped symbol have been redirected to the wrapper symbol.

bfd/

PR ld/31956
* linker.c (bfd_wrapped_link_hash_lookup): Set wrapper_symbol
for wrapper symbol.

include/

PR ld/31956
* bfdlink.h (bfd_link_hash_entry): Add wrapper_symbol.

ld/

PR ld/31956
* plugin.c (get_symbols): Set wrap_status to wrapper if
wrapper_symbol is set.
* testsuite/ld-plugin/lto.exp: Run PR ld/31956 tests.
* testsuite/ld-plugin/pr31956a.c: New file.
* testsuite/ld-plugin/pr31956b.c: Likewise.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
bfd/linker.c
include/bfdlink.h
ld/plugin.c
ld/testsuite/ld-plugin/lto.exp
ld/testsuite/ld-plugin/pr31956a.c [new file with mode: 0644]
ld/testsuite/ld-plugin/pr31956b.c [new file with mode: 0644]