Help with LTO linking in gcc 4.6.0
Patrick Oppenlander
pattyo.lists@gmail.com
Tue Apr 5 03:29:00 GMT 2011
Hi all,
I'm running into a problem using LTO for linking when using the
-nostdlib option.
If I perform the same link with the same object files without using
-flto the link is successful.
Here is the successful case:
$ powerpc-eabispe-gcc -nostdlib -Os -o prog main.o foo.o crt0.o
`powerpc-eabispe-gcc -print-libgcc-file-name`
Here is the unsuccessful case:
$ powerpc-eabispe-gcc -nostdlib -flto -fuse-linker-plugin -Os -o prog
main.o foo.o crt0.o `powerpc-eabispe-gcc -print-libgcc-file-name`
/tmp/ccJRW7xo.ltrans0.ltrans.o: In function `_Z3fooi.constprop.0.1466':
ccJRW7xo.ltrans0.o:(.text+0x74): undefined reference to `_rest32gpr_30_x'
collect2: ld returned 1 exit status
This problem does not occur if -nostdlib isn't specified. This suggests
to me that gcc is somehow handling libgcc differently if it is specified
on the command line??
Is this my (stupid?) error or have I stumbled across a gcc bug?
If it helps I can bundle up my contrived example and send it to anyone
who can help. The compiler in question is a powerpc cross compiler. Here
is the output from gcc -v.
$ powerpc-eabispe-gcc -v
Using built-in specs.
COLLECT_GCC=powerpc-eabispe-gcc
COLLECT_LTO_WRAPPER=/home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/4.6.0/lto-wrapper
Target: powerpc-eabispe
Configured with: /home/patrick/src/e7/toolchain/src/gcc-4.6.0/configure
--prefix=/home/patrick/src/e7/toolchain/stage2
--build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu
--target=powerpc-eabispe --enable-languages=c,c++
--with-sysroot=/home/patrick/src/e7/prex_sysroot --disable-nls
--disable-werror --with-newlib
--with-gmp=/home/patrick/src/e7/toolchain/stage2
--with-mpfr=/home/patrick/src/e7/toolchain/stage2 --disable-shared
--disable-debug --disable-libssp --with-cpu=8540
Thread model: single
gcc version 4.6.0 (GCC)
Thanks,
Patrick
More information about the Gcc-help
mailing list