This is the mail archive of the mailing list for the binutils project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Relocatable linking of weak symbols with LTO

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 -

Joshua Conner

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]