Relocatable linking of weak symbols with LTO

Joshua Conner
Fri Mar 29 21:30:00 GMT 2013

OK, thanks.  I submitted bug 15323.

- Josh

On 3/29/13 12:25 PM, H.J. Lu wrote:
> On Fri, Mar 29, 2013 at 11:54 AM, Joshua Conner <> wrote:
>> Hello -
>> I have a weak function that is input to an incremental link with -flto -r.
>> Then, when I re-link the output with another object file in which the same
>> function is declared non-weak, I get an error message:
>> `foo' referenced in section `.text.startup' of test-intermediate: defined in
>> discarded section `.text' of test.o (symbol from plugin)
>> collect2: error: ld returned 1 exit status
>> Here's the command lines I'm executing:
>>    gcc -flto -g -O2 -c -o test-weak.o test-weak.c # declares foo as weak
>>    gcc -flto -g -O2 -c -o test.o test.c # declares foo, not as weak
>>    gcc -flto -g -O2 -r -o test-intermediate test-weak.o -nostdlib
>> -nostartfiles
>>    gcc -flto -g -O2 -o test test-intermediate test.o
>> I can work around this with -fno-use-linker-plugin, but I would like to get
>> the benefit of whole-program optimization.  Is this just a limitation of the
>> linker plugin, that once I perform an incremental link with a weak symbol I
>> can't then try to overload it?
>> Thanks for any insight you can provide -
> Please open a binutils bug.

More information about the Binutils mailing list