http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60395
Bug ID: 60395 Summary: LTO link fails when -fno-builtin is specified Product: gcc Version: 4.8.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: lto Assignee: unassigned at gcc dot gnu.org Reporter: patrick at motec dot com.au Attached are three test cases which demonstrate: 1. Successful link with "-Os -flto -nostdlib" 2. Successful link with "-Os -fno-builtin -nostdlib" 3. Failed link with "-Os -flto -fno-builtin -nostdlib" Test case attached. Full "-v" log for the failed link: Using built-in specs. COLLECT_GCC=powerpc-eabispe-gcc COLLECT_LTO_WRAPPER=/home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/4.8.2/lto-wrapper Target: powerpc-eabispe Configured with: /home/patrick/src/e7/toolchain/src/gcc-4.8.2/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/toolchain/../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.8.2 (GCC) COLLECT_GCC_OPTIONS='-v' '-Os' '-flto' '-fno-builtin' '-nostdlib' '-o' 'test3' '-mcpu=8540' /home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/4.8.2/cc1 -quiet -v test.c -quiet -dumpbase test.c -mcpu=8540 -auxbase test -Os -version -flto -fno-builtin -o /tmp/ccKQLXfn.s GNU C (GCC) version 4.8.2 (powerpc-eabispe) compiled by GNU C version 4.8.1, GMP version 5.0.1, MPFR version 3.1.2, MPC version 0.9 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring nonexistent directory "/home/patrick/src/e7/toolchain/../prex_sysroot/usr/local/include" #include "..." search starts here: #include <...> search starts here: /home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/include /home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/include-fixed /home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/../../../../powerpc-eabispe/include /home/patrick/src/e7/toolchain/../prex_sysroot/usr/include End of search list. GNU C (GCC) version 4.8.2 (powerpc-eabispe) compiled by GNU C version 4.8.1, GMP version 5.0.1, MPFR version 3.1.2, MPC version 0.9 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 1cf996be489ceb10fd0eea05167fda0c COLLECT_GCC_OPTIONS='-v' '-Os' '-flto' '-fno-builtin' '-nostdlib' '-o' 'test3' '-mcpu=8540' /home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/../../../../powerpc-eabispe/bin/as -me500 -many -mbig -o /tmp/cc651b3O.o /tmp/ccKQLXfn.s COLLECT_GCC_OPTIONS='-v' '-Os' '-flto' '-fno-builtin' '-nostdlib' '-o' 'test3' '-mcpu=8540' /home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/4.8.2/cc1 -quiet -v string.c -quiet -dumpbase string.c -mcpu=8540 -auxbase string -Os -version -flto -fno-builtin -o /tmp/ccKQLXfn.s GNU C (GCC) version 4.8.2 (powerpc-eabispe) compiled by GNU C version 4.8.1, GMP version 5.0.1, MPFR version 3.1.2, MPC version 0.9 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring nonexistent directory "/home/patrick/src/e7/toolchain/../prex_sysroot/usr/local/include" #include "..." search starts here: #include <...> search starts here: /home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/include /home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/include-fixed /home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/../../../../powerpc-eabispe/include /home/patrick/src/e7/toolchain/../prex_sysroot/usr/include End of search list. GNU C (GCC) version 4.8.2 (powerpc-eabispe) compiled by GNU C version 4.8.1, GMP version 5.0.1, MPFR version 3.1.2, MPC version 0.9 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 1cf996be489ceb10fd0eea05167fda0c COLLECT_GCC_OPTIONS='-v' '-Os' '-flto' '-fno-builtin' '-nostdlib' '-o' 'test3' '-mcpu=8540' /home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/../../../../powerpc-eabispe/bin/as -me500 -many -mbig -o /tmp/ccYvBHUg.o /tmp/ccKQLXfn.s COMPILER_PATH=/home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/4.8.2/:/home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/4.8.2/:/home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/:/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/:/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/:/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/../../../../powerpc-eabispe/bin/ LIBRARY_PATH=/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/:/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/../../../../powerpc-eabispe/lib/ COLLECT_GCC_OPTIONS='-v' '-Os' '-flto' '-fno-builtin' '-nostdlib' '-o' 'test3' '-mcpu=8540' /home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/4.8.2/collect2 -plugin /home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/4.8.2/liblto_plugin.so -plugin-opt=/home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/4.8.2/lto-wrapper -plugin-opt=-fresolution=/tmp/ccl3CrNI.res -flto --sysroot=/home/patrick/src/e7/toolchain/../prex_sysroot --eh-frame-hdr -V -dn -Bstatic -o test3 -L/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2 -L/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/../../../../powerpc-eabispe/lib /tmp/cc651b3O.o /tmp/ccYvBHUg.o GNU ld (GNU Binutils) 2.24 Supported emulations: elf32ppc elf32ppclinux elf32ppcsim elf64ppc powerpc-eabispe-gcc @/tmp/ccla6gRR.args Using built-in specs. COLLECT_GCC=powerpc-eabispe-gcc Target: powerpc-eabispe Configured with: /home/patrick/src/e7/toolchain/src/gcc-4.8.2/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/toolchain/../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.8.2 (GCC) COLLECT_GCC_OPTIONS='-c' '-mcpu=8540' '-v' '-Os' '-nostdlib' '-mcpu=8540' '-dumpdir' './' '-dumpbase' 'test3.wpa' '-fltrans-output-list=/tmp/ccrNJKXp.ltrans.out' '-fwpa' '-fresolution=/tmp/ccl3CrNI.res' /home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/4.8.2/lto1 -quiet -dumpdir ./ -dumpbase test3.wpa -mcpu=8540 -mcpu=8540 -auxbase cc651b3O -Os -version -fltrans-output-list=/tmp/ccrNJKXp.ltrans.out -fwpa -fresolution=/tmp/ccl3CrNI.res @/tmp/ccesTw9p GNU GIMPLE (GCC) version 4.8.2 (powerpc-eabispe) compiled by GNU C version 4.8.1, GMP version 5.0.1, MPFR version 3.1.2, MPC version 0.9 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 GNU GIMPLE (GCC) version 4.8.2 (powerpc-eabispe) compiled by GNU C version 4.8.1, GMP version 5.0.1, MPFR version 3.1.2, MPC version 0.9 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 COMPILER_PATH=/home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/4.8.2/:/home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/4.8.2/:/home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/:/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/:/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/:/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/../../../../powerpc-eabispe/bin/:/home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/4.8.2/:/home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/4.8.2/:/home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/:/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/:/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/:/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/../../../../powerpc-eabispe/bin/ LIBRARY_PATH=/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/:/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/../../../../powerpc-eabispe/lib/ COLLECT_GCC_OPTIONS='-c' '-mcpu=8540' '-v' '-Os' '-nostdlib' '-mcpu=8540' '-dumpdir' './' '-dumpbase' 'test3.wpa' '-fltrans-output-list=/tmp/ccrNJKXp.ltrans.out' '-fwpa' '-fresolution=/tmp/ccl3CrNI.res' powerpc-eabispe-gcc @/tmp/ccEkKUGL.args Using built-in specs. COLLECT_GCC=powerpc-eabispe-gcc Target: powerpc-eabispe Configured with: /home/patrick/src/e7/toolchain/src/gcc-4.8.2/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/toolchain/../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.8.2 (GCC) COLLECT_GCC_OPTIONS='-c' '-mcpu=8540' '-v' '-Os' '-nostdlib' '-mcpu=8540' '-dumpdir' './' '-dumpbase' 'test3.ltrans0' '-fltrans' '-o' '/tmp/ccrNJKXp.ltrans0.ltrans.o' /home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/4.8.2/lto1 -quiet -dumpdir ./ -dumpbase test3.ltrans0 -mcpu=8540 -mcpu=8540 -auxbase-strip /tmp/ccrNJKXp.ltrans0.ltrans.o -Os -version -fltrans @/tmp/ccNxJAQt -o /tmp/ccrWTSMV.s GNU GIMPLE (GCC) version 4.8.2 (powerpc-eabispe) compiled by GNU C version 4.8.1, GMP version 5.0.1, MPFR version 3.1.2, MPC version 0.9 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 GNU GIMPLE (GCC) version 4.8.2 (powerpc-eabispe) compiled by GNU C version 4.8.1, GMP version 5.0.1, MPFR version 3.1.2, MPC version 0.9 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 COLLECT_GCC_OPTIONS='-c' '-mcpu=8540' '-v' '-Os' '-nostdlib' '-mcpu=8540' '-dumpdir' './' '-dumpbase' 'test3.ltrans0' '-fltrans' '-o' '/tmp/ccrNJKXp.ltrans0.ltrans.o' /home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/../../../../powerpc-eabispe/bin/as -me500 -many -mbig -o /tmp/ccrNJKXp.ltrans0.ltrans.o /tmp/ccrWTSMV.s COMPILER_PATH=/home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/4.8.2/:/home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/4.8.2/:/home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/:/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/:/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/:/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/../../../../powerpc-eabispe/bin/:/home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/4.8.2/:/home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/4.8.2/:/home/patrick/src/e7/toolchain/stage2/libexec/gcc/powerpc-eabispe/:/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/:/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/:/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/../../../../powerpc-eabispe/bin/ LIBRARY_PATH=/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/:/home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/../../../../powerpc-eabispe/lib/ COLLECT_GCC_OPTIONS='-c' '-mcpu=8540' '-v' '-Os' '-nostdlib' '-mcpu=8540' '-dumpdir' './' '-dumpbase' 'test3.ltrans0' '-fltrans' '-o' '/tmp/ccrNJKXp.ltrans0.ltrans.o' /home/patrick/src/e7/toolchain/stage2/lib/gcc/powerpc-eabispe/4.8.2/../../../../powerpc-eabispe/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000001800054 `memset' referenced in section `.text' of /tmp/ccrNJKXp.ltrans0.ltrans.o: defined in discarded section `.text' of /tmp/ccYvBHUg.o (symbol from plugin) collect2: error: ld returned 1 exit status