[PATCH v1 1/1] bfd: elflink: upstream change to garbage collection sweep causes mb regression
Michael Eager
eager@eagercon.com
Tue Oct 3 18:44:23 GMT 2023
On 9/25/23 07:41, Neal Frager via Binutils wrote:
> Upstream change for PR13177 now clears the def_regular during gc_sweep of a
> section. (All other archs in binutils/bfd/elf32-*.c received an update
> to a warning about unresolvable relocations - this warning is not present
> in binutils/bfd/elf32-microblaze.c, but this warning check would not
> prevent the error being seen).
>
> The visible issue with this change is when running a c++ application
> in Petalinux which links libstdc++.so for exception handling it segfaults
> on execution.
>
> This does not occur if static linking libstdc++.a, so its during the
> relocations for a shared lib with garbage collection this occurs.
>
> Signed-off-by: Neal Frager <neal.frager@amd.com>
> ---
> bfd/elflink.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/bfd/elflink.c b/bfd/elflink.c
> index ca162145f7e..0524019641e 100644
> --- a/bfd/elflink.c
> +++ b/bfd/elflink.c
> @@ -6608,7 +6608,6 @@ elf_gc_sweep_symbol (struct elf_link_hash_entry *h, void *data)
>
> inf = (struct elf_gc_sweep_symbol_info *) data;
> (*inf->hide_symbol) (inf->info, h, true);
> - h->def_regular = 0;
> h->ref_regular = 0;
> h->ref_regular_nonweak = 0;
> }
Neal --
It isn't clear what problem this patch addresses.
What update was applied to bfd/elf32-*.c for other archs?
This patch modifies code which is shared by all architectures, applied
in a patch in 2011. If there is a problem with this code, it seems that
the failure would have been seen on other architectures long ago, not
just MicroBlaze.
It seems likely that applying this patch would break other archs.
Please provide a test case which shows this problem.
--
Michael Eager
More information about the Binutils
mailing list