From da422fa49d508e33b8f1b2bd9b8f719b831b199b Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 25 Apr 2022 10:51:39 -0700 Subject: 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 | 1 + 1 file changed, 1 insertion(+) (limited to 'bfd/linker.c') diff --git a/bfd/linker.c b/bfd/linker.c index 088c1d0..e9ebdba 100644 --- a/bfd/linker.c +++ b/bfd/linker.c @@ -599,6 +599,7 @@ bfd_wrapped_link_hash_lookup (bfd *abfd, n[1] = '\0'; strcat (n, l + sizeof REAL - 1); h = bfd_link_hash_lookup (info->hash, n, create, true, follow); + h->ref_real = 1; free (n); return h; } -- cgit v1.1