collect2 picks wrong target-ld (was: ld: bad -plugin option)

Georg-Johann Lay avr@gjlay.de
Thu Dec 1 16:21:00 GMT 2011


Georg-Johann Lay wrote:
> Georg-Johann Lay wrote:
>> Hi, I am running into this error from ld since I removed --disable-lto from the
>> configure.  I used --disable-lto some time because of problems with LTO.
>>
>> Anyways, I'd like to build with LTO again and get this really not-very-specific
>> error
>>
>> /home/georg/install/gcc-4.7/lib/gcc/avr/4.7.0/../../../../avr/bin/ld: bad
>> -plugin option
>> collect2: error: ld returned 1 exit status
> 
> Calling ld directly yields:
> 
> $ /home/georg/install/gcc-4.7/lib/gcc/avr/4.7.0/../../../../avr/bin/ld --help |
> grep -i plug
>   -plugin PLUGIN              Load named plugin
>   -plugin-opt ARG             Send arg to last-loaded plugin
> /home/georg/install/gcc-4.7/lib/gcc/avr/4.7.0/../../../../avr/bin/ld: supported
> targets: elf32-avr elf32-little elf32-big plugin srec symbolsrec verilog tekhex
> binary ihex
> 
> So there is nothing wrong with the install.
> 
> $ ll /home/georg/install/gcc-4.7/libexec/gcc/avr/4.7.0/liblto_plugin.so
> /home/georg/install/gcc-4.7/libexec/gcc/avr/4.7.0/liblto_plugin.so ->
> liblto_plugin.so.0.0.0
> 
> 
> $ ls -al /home/georg/install/gcc-4.7/libexec/gcc/avr/4.7.0/liblto*
>  /home/georg/install/gcc-4.7/libexec/gcc/avr/4.7.0/liblto_plugin.la
>  /home/georg/install/gcc-4.7/libexec/gcc/avr/4.7.0/liblto_plugin.so ->
> liblto_plugin.so.0.0.0
>  /home/georg/install/gcc-4.7/libexec/gcc/avr/4.7.0/liblto_plugin.so.0 ->
> liblto_plugin.so.0.0.0
>  /home/georg/install/gcc-4.7/libexec/gcc/avr/4.7.0/liblto_plugin.so.0.0.0
> 
> Confused,
> 
> Johann
> 

collect2 calls the wring linker (avr-ld).

It calls avr-ld from $PATH instead of the linker as installed in the toolchain
and with --prefix.

--prefix is not in $PATH but binutils are configured with the same --prefix and
installed before GCC way configured.

I'd expect that a toolchain installation is self-contained and that if there is
a complete toolchain the tools can be called by their absolute paths?

Similarly, collect2 in $BUILD calls avr-ld it finds in $PATH instead of the
avr-ld installed at --prefix.

Is this a bug or a feature?

Johann



More information about the Gcc-help mailing list