LTO: Handle __real_SYM reference in IR
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 25 Apr 2022 17:51:39 +0000 (10:51 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 4 May 2022 23:26:51 +0000 (16:26 -0700)
commitda422fa49d508e33b8f1b2bd9b8f719b831b199b
tree197586145f0c372bad5abda8d2032fd9eaf6db63
parent40ae4abe44fa4e0a53d1681bc48adf445df25822
LTO: Handle __real_SYM reference in IR

When an IR symbol SYM is referenced in IR via __real_SYM, its resolution
should be LDPR_PREVAILING_DEF, not PREVAILING_DEF_IRONLY, since LTO
doesn't know that __real_SYM should be resolved by SYM.

bfd/

PR ld/29086
* linker.c (bfd_wrapped_link_hash_lookup): Mark SYM is referenced
via __real_SYM.

include/

PR ld/29086
* bfdlink.h (bfd_link_hash_entry): Add ref_real.

ld/

PR ld/29086
* plugin.c (get_symbols): Resolve SYM definition to
LDPR_PREVAILING_DEF for __real_SYM reference.
* testsuite/ld-plugin/lto.exp: Run PR ld/29086 test.
* testsuite/ld-plugin/pr29086.c: New file.
bfd/linker.c
include/bfdlink.h
ld/plugin.c
ld/testsuite/ld-plugin/lto.exp
ld/testsuite/ld-plugin/pr29086.c [new file with mode: 0644]