https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70258

            Bug ID: 70258
           Summary: -fPIE isn't passed to lto by default when GCC is
                    configured with --enable-default-pie
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: lto
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hjl.tools at gmail dot com
  Target Milestone: ---

When GCC is configured with --enable-default-pie, I got

[hjl@gnu-skl-1 gcc]$ /export/build/gnu/gcc-pie/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/     
-fno-diagnostics-show-caret -fdiagnostics-color=never  -O0 -flto
-flto-partition=none -fuse-linker-plugin  -c -o c_lto_20081024_0.o
/export/gnu/import/git/sources/gcc/gcc/testsuite/gcc.dg/lto/20081024_0.c
[hjl@gnu-skl-1 gcc]$ /export/build/gnu/gcc-pie/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/ c_lto_20081024_0.o
-fno-diagnostics-show-caret -fdiagnostics-color=never  -O0 -flto
-flto-partition=none -fuse-linker-plugin -o gcc-dg-lto-20081024-01.exe -v
Reading specs from /export/build/gnu/gcc-pie/build-x86_64-linux/gcc/specs
COLLECT_GCC=/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/xgcc
COLLECT_LTO_WRAPPER=/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /export/gnu/import/git/sources/gcc/configure
--enable-languages=c,c++ --disable-bootstrap --disable-libcc1
--disable-libcilkrts --disable-libsanitizer --disable-libmpx
--prefix=/usr/gcc-6.0.0 --with-local-prefix=/usr/local
--enable-gnu-indirect-function --enable-clocale=gnu --with-system-zlib
--enable-default-pie --with-fpmath=sse
Thread model: posix
gcc version 6.0.0 20160316 (experimental) (GCC) 
COMPILER_PATH=/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/
LIBRARY_PATH=/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/:/lib/../lib64/:/usr/lib/../lib64/:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-fdiagnostics-color=never' '-B'
'/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/'
'-fno-diagnostics-show-caret' '-O0' '-flto' '-flto-partition=none'
'-fuse-linker-plugin' '-o' 'gcc-dg-lto-20081024-01.exe' '-v' '-mtune=generic'
'-march=x86-64'
 /export/build/gnu/gcc-pie/build-x86_64-linux/gcc/collect2 -plugin
/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/liblto_plugin.so
-plugin-opt=/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/lto-wrapper
-plugin-opt=-fresolution=/tmp/ccfxn1F0.res -plugin-opt=-pass-through=-lgcc
-plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc
-plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -flto
--eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie
-o gcc-dg-lto-20081024-01.exe /lib/../lib64/Scrt1.o /lib/../lib64/crti.o
/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/crtbeginS.o
-L/export/build/gnu/gcc-pie/build-x86_64-linux/gcc -L/lib/../lib64
-L/usr/lib/../lib64 c_lto_20081024_0.o -lgcc --as-needed -lgcc_s --no-as-needed
-lc -lgcc --as-needed -lgcc_s --no-as-needed
/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/crtendS.o /lib/../lib64/crtn.o
/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/xgcc @/tmp/cc5z5itP
Reading specs from /export/build/gnu/gcc-pie/build-x86_64-linux/gcc/specs
COLLECT_GCC=/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/xgcc
Target: x86_64-pc-linux-gnu
Configured with: /export/gnu/import/git/sources/gcc/configure
--enable-languages=c,c++ --disable-bootstrap --disable-libcc1
--disable-libcilkrts --disable-libsanitizer --disable-libmpx
--prefix=/usr/gcc-6.0.0 --with-local-prefix=/usr/local
--enable-gnu-indirect-function --enable-clocale=gnu --with-system-zlib
--enable-default-pie --with-fpmath=sse
Thread model: posix
gcc version 6.0.0 20160316 (experimental) (GCC) 
COLLECT_GCC_OPTIONS='-fdiagnostics-color=never' '-c' '-fmath-errno'
'-fsigned-zeros' '-ftrapping-math' '-fno-trapv' '-fno-strict-overflow'
'-fno-openmp' '-fno-openacc' '-mtune=generic' '-march=x86-64' '-O0' '-B'
'/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/'
'-fno-diagnostics-show-caret' '-O0' '-flto-partition=none'
'-fuse-linker-plugin' '-v' '-mtune=generic' '-march=x86-64' '-dumpdir' './'
'-dumpbase' 'gcc-dg-lto-20081024-01.exe' '-o' '/tmp/ccxq1b5Z.lto.o'
'-fresolution=/tmp/ccfxn1F0.res' '-flinker-output=pie'
 /export/build/gnu/gcc-pie/build-x86_64-linux/gcc/lto1 -quiet -dumpdir ./
-dumpbase gcc-dg-lto-20081024-01.exe -mtune=generic -march=x86-64
-mtune=generic -march=x86-64 -auxbase-strip /tmp/ccxq1b5Z.lto.o -O0 -O0
-version -fdiagnostics-color=never -fmath-errno -fsigned-zeros -ftrapping-math
-fno-trapv -fno-strict-overflow -fno-openmp -fno-openacc
-fno-diagnostics-show-caret -flto-partition=none -fuse-linker-plugin
-fresolution=/tmp/ccfxn1F0.res -flinker-output=pie @/tmp/cc40jC1Z -o
/tmp/ccXhR3pP.s
GNU GIMPLE (GCC) version 6.0.0 20160316 (experimental) (x86_64-pc-linux-gnu)
        compiled by GNU C version 5.3.1 20160212 (Red Hat 5.3.1-4), GMP version
6.0.0, MPFR version 3.1.3, MPC version 1.0.2, isl version 0.14 or 0.13
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
GNU GIMPLE (GCC) version 6.0.0 20160316 (experimental) (x86_64-pc-linux-gnu)
        compiled by GNU C version 5.3.1 20160212 (Red Hat 5.3.1-4), GMP version
6.0.0, MPFR version 3.1.3, MPC version 1.0.2, isl version 0.14 or 0.13
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
COLLECT_GCC_OPTIONS='-fdiagnostics-color=never' '-c' '-fmath-errno'
'-fsigned-zeros' '-ftrapping-math' '-fno-trapv' '-fno-strict-overflow'
'-fno-openmp' '-fno-openacc' '-mtune=generic' '-march=x86-64' '-O0' '-B'
'/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/'
'-fno-diagnostics-show-caret' '-O0' '-flto-partition=none'
'-fuse-linker-plugin' '-v' '-mtune=generic' '-march=x86-64' '-dumpdir' './'
'-dumpbase' 'gcc-dg-lto-20081024-01.exe' '-o' '/tmp/ccxq1b5Z.lto.o'
'-fresolution=/tmp/ccfxn1F0.res' '-flinker-output=pie'
 /export/build/gnu/gcc-pie/build-x86_64-linux/gcc/as -v --64 -o
/tmp/ccxq1b5Z.lto.o /tmp/ccXhR3pP.s
GNU assembler version 2.26.51.0.2 (x86_64-pc-linux-gnu) using BFD version
(Linux/GNU Binutils) 2.26.51.0.2.20160316
COMPILER_PATH=/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/:/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/
LIBRARY_PATH=/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/:/lib/../lib64/../lib64/:/usr/lib/../lib64/../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/:/lib/../lib64/:/usr/lib/../lib64/:/lib/:/usr/lib/:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-fdiagnostics-color=never' '-c' '-fmath-errno'
'-fsigned-zeros' '-ftrapping-math' '-fno-trapv' '-fno-strict-overflow'
'-fno-openmp' '-fno-openacc' '-mtune=generic' '-march=x86-64' '-O0' '-B'
'/export/build/gnu/gcc-pie/build-x86_64-linux/gcc/'
'-fno-diagnostics-show-caret' '-O0' '-flto-partition=none'
'-fuse-linker-plugin' '-v' '-mtune=generic' '-march=x86-64' '-dumpdir' './'
'-dumpbase' 'gcc-dg-lto-20081024-01.exe' '-o' '/tmp/ccxq1b5Z.lto.o'
'-fresolution=/tmp/ccfxn1F0.res' '-flinker-output=pie'
/usr/local/bin/ld: /tmp/ccxq1b5Z.lto.o: relocation R_X86_64_32 against `.bss'
can not be used when making a shared object; recompile with -fPIC
/tmp/ccxq1b5Z.lto.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
[hjl@gnu-skl-1 gcc]$ 

The problem is -fPIE isn't passed to lto.

Reply via email to