[PATCH][1-3] New configure option to enable Position independent executable as default.
Ryan Hill
dirtyepic@gentoo.org
Sun Nov 17 15:59:00 GMT 2013
On Wed, 13 Nov 2013 23:28:45 +0100
Magnus Granberg <zorry@gentoo.org> wrote:
> Hi
> This patchset will add a new configure options --enable-default-pie.
> With the new option enable will make it pass -fPIE and -pie from the gcc and
> g++ frontend. Have only add the support for two targets but should work on
> more targes. In configure.ac we add the new option. We can't compile the
> compiler or the crt stuff with -fPIE it will brake the PCH and the crtbegin
> and crtend files. The disabling is done in the Makefiles. The needed spec is
> added to DRIVER_SELF_SPECS. We disable all the profiling test for the linking
> will fail.Tested on x86_64 linux (Gentoo).
>
> /Magnus Granberg
Hey Magnus. Some nits:
> --- a/gcc/configure.ac 2013-09-25 18:10:35.000000000 +0200
> +++ b/gcc/configure.ac 2013-10-22 21:26:56.287602139 +0200
> @@ -5434,6 +5434,31 @@ if test x"${LINKER_HASH_STYLE}" != x; th
> [The linker hash style])
> fi
>
> +# Check whether --enable-default-pie was given and target have the support.
> +AC_ARG_ENABLE(default-pie,
> +[AS_HELP_STRING([--enable-default-pie], [Enable Position independent executable as default.
Help strings begin with a lowercase letter and do not end with a period. "enable
Position Independent Executables by default".
> + If we have suppot for it when compiling and linking.
> + Linux targets supported i?86 and x86_64.])],
I would drop these lines.
> +enable_default_pie=$enableval,
> +enable_default_pie=no)
> +if test x$enable_default_pie = xyes; then
> + AC_MSG_CHECKING(if $target support to default with -fPIE and link with -pie as default)
"if $target supports default PIE"
> + enable_default_pie=no
> + case $target in
> + i?86*-*-linux* | x86_64*-*-linux*)
> + enable_default_pie=yes
> + ;;
> + *)
> + ;;
> + esac
> + AC_MSG_RESULT($enable_default_pie)
> +fi
> +if test x$enable_default_pie == xyes ; then
> + AC_DEFINE(ENABLE_DEFAULT_PIE, 1,
> + [Define if your target support default-pie and you have enable it.])
"supports default PIE and it is enabled."
> +fi
> +AC_SUBST([enable_default_pie])
> +
> # Configure the subdirectories
> # AC_CONFIG_SUBDIRS($subdirs)
>
> --- a/gcc/doc/install.texi 2013-10-01 19:29:40.000000000 +0200
> +++ b/gcc/doc/install.texi 2013-11-09 15:40:20.831402110 +0100
> @@ -1421,6 +1421,11 @@ do a @samp{make -C gcc gnatlib_and_tools
> Specify that the run-time libraries for stack smashing protection
> should not be built.
>
> +@item --enable-default-pie
> +We will turn on @option{-fPIE} and @option{-pie} as default when
> +compileing and linking if the support is there. We only support
> +i?86-*-linux* and x86-64-*-linux* as target for now.
"Turn on @option{-fPIE} and @option{-pie} by default if supported.
Currently supported targets are i?86-*-linux* and x86-64-*-linux*."
Also two spaces between sentences.
> --- a/gcc/doc/invoke.texi 2012-03-01 10:57:59.000000000 +0100
> +++ b/gcc/doc/invoke.texi 2012-07-30 00:57:03.766847851 +0200
> @@ -9457,6 +9480,12 @@ For predictable results, you must also s
> that were used to generate code (@option{-fpie}, @option{-fPIE},
> or model suboptions) when you specify this option.
>
> +NOTE: With configure --enable-default-pie this option is enabled by default
Extra space (also in the hunk for fPIE).
> +for C, C++, ObjC, ObjC++, if none of @option{-fno-PIE}, @option{-fno-pie},
> +@option{-fPIC}, @option{-fpic}, @option{-fno-PIC}, @option{-fno-pic},
> +@option{-nostdlib}, @option{-nostartfiles}, @option{-shared},
> +@option{-nodefaultlibs}, nor @option{static} are found.
Looks like nodefaultlibs is missing from PIE_DRIVER_SELF_SPECS or this needs
to be updated.
Thanks!
--
Ryan Hill psn: dirtyepic_sk
gcc-porting/toolchain/wxwidgets @ gentoo.org
47C3 6D62 4864 0E49 8E9E 7F92 ED38 BD49 957A 8463
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20131117/2d578d74/attachment.sig>
More information about the Gcc-patches
mailing list