[Bug lto/85801] LTO linking fails to reconcile symbol from common an data sections (-fPIE -Wl,--as-needed -flto): unresolvable R_ARM_REL32 relocation against symbol `progname'
rguenther at suse dot de
gcc-bugzilla@gcc.gnu.org
Wed May 16 12:24:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85801
--- Comment #3 from rguenther at suse dot de <rguenther at suse dot de> ---
On Wed, 16 May 2018, hjl.tools at gmail dot com wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85801
>
> --- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> ---
> (In reply to Richard Biener from comment #1)
> > I think this is valid from an ELF perspective. But ca you really expect
> > char *progname to resolve to the library copy? In fact the linker resolution
> > here is
> >
> > 1
> > t2.o 4
> > 207 b42c927210240321 PREVAILING_DEF main
> > 349 b42c927210240321 PREVAILING_DEF_IRONLY_EXP progname
> > 351 b42c927210240321 RESOLVED_DYN stderr
> > 347 b42c927210240321 UNDEF my_name
> >
> > and thus it correctly(?) resolves to a non-exported local copy
> > (GNU ld 2.30 branch). Note that without --as-needed I get
>
> This looks normal to me and works on x86. Linker plugin determined that
> program is defined in IR and visible externally:
>
> /* This is the prevailing definition of the symbol, with no
> references from regular objects. It is only referenced from IR
> code, but the symbol is exported and may be referenced from
> a dynamic object (not seen at link time). */
> LDPR_PREVAILING_DEF_IRONLY_EXP
>
> The final resolution is performed by the non-LTO part of linker. Since
> program is COMMOM, the definition in libxfs.so is used. It sounds like
> a linker backend bug.
I see. But why's the resolution dependent on --as-needed?
More information about the Gcc-bugs
mailing list