[Patch] ld plugin: Fix known_used with CLAIM_FILE_HOOK_V2 for elf_link_add_archive_symbols [GCC PR122432]
Tobias Burnus
tburnus@baylibre.com
Tue Oct 28 00:35:12 GMT 2025
Hi HJ,
H.J. Lu wrote:
> I can't reproduce the issue. If the common symbol comes first is an issue,
> you can create a testcase with 2 separate sources:
>
> 1. a.c only with a common symbol.
> 2. b.c uses the common symbol.
Unfortunately, it is not that simple - I have now played
around with several variants – and the real problem is that
'h = archive_symbol_lookup (…)'
tends to be NULL for common symbols. And when turning it
into non-NULL, it tends to be
h->type == bfd_link_hash_undefined
which then gives a call to add_archive_element, which in
turn calls the hook with known_used = true.
For the here failing testcase of the PR, I get for /liblocoa.a:
psb_d_oacc_mlt_v_2_ → h == NULL
mpi_fortran_argv_null_ → h->type == bfd_link_hash_common
→ hook call with known_used = false;
second loop
... several with include[i] = 0 until i=10:
__psb_d_oacc_vect_mod_MOD___def_init_psb_d_oacc_vect_mod_Psb_d_vect_oacc
For all i >= 10 now include[i] = true;
Then a third loop: All remaining symbols get include[i] = true.
* * *
Without the common symbol, the large program has first h == NULL
until __psb_d_oacc_vect_mod_MOD___def_init_psb_d_oacc_vect_mod_Psb_d_vect_oacc
which is bfd_link_undefine - and for which add_archive_element
is called.
* * *
> Without a testcase
There *is* a testcase attached tohttps://gcc.gnu.org/PR122432
> and others can't reproduce the issue, it is
> very hard to tell if your patch is correct or not.
As you started the discussion at PR122432, I continued there.
I hope my annotations on how to check for the correctness help.
* * *
> Please first create a binutils bug report.
I am happy to create a new binutils bug – but I am not sure when. As,
currently, the discussion is in the GCC PR, I am unsure when it makes
most sense to open the Binutils bug and continue there.
Tobias
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://sourceware.org/pipermail/binutils/attachments/20251028/a419f990/attachment.htm>
More information about the Binutils
mailing list