On Tue, Dec 30, 2014 at 10:23 PM, Magnus Granberg <zo...@gentoo.org> wrote: > fredag 14 november 2014 23.31.48 skrev Magnus Granberg: >> måndag 10 november 2014 21.26.39 skrev Magnus Granberg: >> > > Rainer >> > >> > Thanks Rainer for the nits and comments. >> > Have updated the patches and Changelogs. >> > But i still use PIE_DRIVER_SELF_SPECS, do you have a ide where move it so >> > i don't need to duplicate that stuff or how to do it? >> > >> > Magnus G >> > >> > 2014-11-10 Magnus Granberg <zo...@gentoo.org> >> > >> > /gcc >> > * config/gnu-user.h (PIE_DRIVER_SELF_SPECS) and >> > (GNU_DRIVER_SELF_SPECS): Define. >> > * config/i386/gnu-user-common.h (DRIVER_SELF_SPECS): Define >> > * configure.ac: Add new option. >> > * configure, config.in: Rebuild. >> > * Makefile.in (ALL_CFLAGS) and (ALL_CXXFLAGS): Disable PIE. >> > * doc/install.texi: New configure option. >> > * doc/invoke.texi: Add note to PIE. >> > * doc/sourcebuild.texi: New effective target. >> > gcc/testsuite >> > * gcc/default-pie.c: New test >> > * gcc.dg/tree-ssa/ssa-store-ccp-3.c: Skip if default_pie >> > * g++.dg/other/anon5.C: Skip if default_pie >> > * lib/target-supports.exp (check_effective_target_default_pie): >> > New proc. >> > /libgcc >> > * Makefile.in (CRTSTUFF_CFLAGS): Disable PIE. >> >> Can this be included for GCC 5 ? >> >> /Magnus G. > One more ping on this. The patches where sent before stage 1 closed but i > did't get any feed back from it > Have updete the patchses for gcc 5.0 20141228 snapshot. > Bootstrapped and tested on x86_64-unknown-linux-gnu (Gentoo) > /Magnus
Looking at the actual implementation I wonder why it's not similar to how darwin gets at it default (not sure how it does). Also looking at how DRIVER_SELF_SPECS is used I wonder if the functionality can be enabled with a simple --with-specs="%{pie|fpic|fPIC|fpie|fPIE|fno-pic|fno-PIC|fno-pie|fno-PIE|shared|static|nostdlib|nodefaultlibs|nostartfiles:;:-fPIE -pie}" at configure time (using CONFIGURE_SPECS). I have no idea if the above is really the proper spec to use - why do you include static, nostdlib, nodefaultlibs and nostartfiles for example? Similar, if I say gcc -pie -c t.c we will end up with a non-PIE object, and linking with -fPIE will end up with a DYN_EXEC object. I believe you want to treat link and compile arguments separately (and adjust the link spec for linking). I also would have said that elfos.h is more appropriate than gnu-user.h, but ... That said, the patch looks more like a hack (and see above how to achieve the same without a patch(?)), not like a proper implementation of a PIE default. Joseph may have an idea where the proper place for a spec-wise default PIE is. Thanks, Richard. > 2014-12-30 Magnus Granberg <zo...@gentoo.org> > > /gcc > * config/gnu-user.h (PIE_DRIVER_SELF_SPECS): Define. > * config/i386/gnu-user-common.h (DRIVER_SELF_SPECS): Define and > add PIE_DRIVER_SELF_SPECS. > * configure.ac: Add new option. > * configure, config.in: Rebuild. > * Makefile.in (ALL_CFLAGS) and (ALL_CXXFLAGS): Disable PIE. > * doc/install.texi: New configure option. > * doc/invoke.texi: Add note to PIE. > * doc/sourcebuild.texi: New effective target. > gcc/testsuite > * gcc/default-pie.c: New test > * gcc.dg/tree-ssa/ssa-store-ccp-3.c: Skip if default_pie > * g++.dg/other/anon5.C: Skip if default_pie > * lib/target-supports.exp (check_effective_target_default_pie): > New proc. > /libgcc > * Makefile.in (CRTSTUFF_CFLAGS): Disable PIE. >