[Bug lto/83967] LTO removes C functions declared as weak in assembler(depending on files order in linking)
hjl.tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Fri Jan 26 18:51:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83967
--- Comment #12 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Richard Biener from comment #8)
> and then I get
>
> > gcc-7 t2.s t1.c -flto
> /tmp/ccGhH7Cp.o:(.data+0x0): undefined reference to `Handler'
> collect2: error: ld returned 1 exit status
> > gcc-7 t1.c t2.s -flto
>
> in the working case:
>
> 1
> t1.o 4
> 190 16b2980a71930688 PREEMPTED_REG Handler
> 198 16b2980a71930688 PREVAILING_DEF_IRONLY i
> 194 16b2980a71930688 PREVAILING_DEF main
> 202 16b2980a71930688 RESOLVED_EXEC Dispatch
>
> in the failing case (GNU ld):
>
> 1
> t1.o 4
> 190 801577c96f9ccef3 PREVAILING_DEF_IRONLY Handler
> 198 801577c96f9ccef3 PREVAILING_DEF_IRONLY i
> 194 801577c96f9ccef3 PREVAILING_DEF main
> 202 801577c96f9ccef3 RESOLVED_EXEC Dispatch
>
> which works with gold:
>
> 1
> t1.o 4
> 190 680bbd652c7cfe04 PREVAILING_DEF Handler
> 198 680bbd652c7cfe04 PREVAILING_DEF_IRONLY i
> 194 680bbd652c7cfe04 PREVAILING_DEF main
> 202 680bbd652c7cfe04 RESOLVED_EXEC Dispatch
>
> HJ? This is with binutils 2.29.1, thus confirmed but as a GNU ld issue.
Yes, I can reproduce it with binutils 2.29.1. But it was fixed in
2.30.
More information about the Gcc-bugs
mailing list