On Tue, Jul 18, 2017 at 05:36:49AM -0700, H.J. Lu wrote: > I am working on compiling libc.a in glibc with -fPIE and building static > PIE. This creates static executable with PIE: > > gcc -nostdlib -nostartfiles -static -o > /export/build/gnu/glibc-static-pie/build-x86_64-linux/elf/sln -pie > -Wl,--no-dynamic-linker > /export/build/gnu/glibc-static-pie/build-x86_64-linux/csu/crt1.o > /export/build/gnu/glibc-static-pie/build-x86_64-linux/csu/crti.o `gcc > --print-file-name=crtbeginS.o` > /export/build/gnu/glibc-static-pie/build-x86_64-linux/elf/sln.o > /export/build/gnu/glibc-static-pie/build-x86_64-linux/elf/static-stubs.o > -Wl,--start-group > /export/build/gnu/glibc-static-pie/build-x86_64-linux/libc.a -lgcc > -Wl,--end-group `gcc --print-file-name=crtendS.o` > /export/build/gnu/glibc-static-pie/build-x86_64-linux/csu/crtn.o > > Currently, it only works with gcc configured with -disable-default-pie. > With --enable-default-pie, I got > > [hjl@gnu-tools-1 build-x86_64-linux]$ /usr/gcc-7.1.1-x32-pie/bin/gcc > -nostdlib -nostartfiles -static -o /tmp/sln -pie > -Wl,--no-dynamic-linker > /export/build/gnu/glibc-static-pie/build-x86_64-linux/csu/crt1.o > /export/build/gnu/glibc-static-pie/build-x86_64-linux/csu/crti.o `gcc > --print-file-name=crtbeginS.o` > /export/build/gnu/glibc-static-pie/build-x86_64-linux/elf/sln.o > /export/build/gnu/glibc-static-pie/build-x86_64-linux/elf/static-stubs.o > -Wl,--start-group > /export/build/gnu/glibc-static-pie/build-x86_64-linux/libc.a -lgcc > -Wl,--end-group `gcc --print-file-name=crtendS.o` > /export/build/gnu/glibc-static-pie/build-x86_64-linux/csu/crtn.o > /export/build/gnu/glibc-static-pie/build-x86_64-linux/libc.a(dl-support.o): > In function `elf_machine_load_address': > /export/gnu/import/git/sources/glibc/elf/../sysdeps/x86_64/dl-machine.h:59: > undefined reference to `_DYNAMIC' > /export/build/gnu/glibc-static-pie/build-x86_64-linux/libc.a(dl-support.o): > In function `elf_get_dynamic_info': > /export/gnu/import/git/sources/glibc/elf/get-dynamic-info.h:48: > undefined reference to `_DYNAMIC' > collect2: error: ld returned 1 exit status > [hjl@gnu-tools-1 build-x86_64-linux]$ > > Will your change fix it?
You have got to be joking! How should I know whether something will work with some hare-brained scheme of yours? One that seemingly requires you to specify startup files by hand! -- Alan Modra Australia Development Lab, IBM