Add -static-pie to GCC driver to create static PIE
commit6d1ab23dc1fbc5cc0fde2d9d4e01026bf099a333
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 12 Sep 2017 16:30:28 +0000 (12 16:30 +0000)
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 12 Sep 2017 16:30:28 +0000 (12 16:30 +0000)
tree991254b7281354b7923b50ba07c1114a2364c58f
parentca76ee4f29edb09b8136403716f2d340455b830b
Add -static-pie to GCC driver to create static PIE

This patch adds -static-pie to GCC driver to create static PIE.  A static
position independent executable (PIE) is similar to static executable,
but can be loaded at any address without a dynamic linker.  All linker
input files must be compiled with -fpie or -fPIE and linker must support
--no-dynamic-linker to avoid linking with dynamic linker.  "-z text" is
also needed to prevent dynamic relocations in read-only segments.

PR driver/81498
* common.opt (-static-pie): New alias.
(shared): Negate static-pie.
(-no-pie): Update help text.
(-pie): Likewise.
(static-pie): New option.
* config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Add
-static-pie support.
(GNU_USER_TARGET_ENDFILE_SPEC): Likewise.
(LINK_EH_SPEC): Likewise.
(LINK_GCC_C_SEQUENCE_SPEC): Likewise.
* config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
* config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
* gcc.c (LINK_COMMAND_SPEC): Likewise.
(init_gcc_specs): Likewise.
(init_spec): Likewise.
(display_help): Update help message for -pie.
* doc/invoke.texi: Update -pie, -no-pie and -static.  Document
-static-pie.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@252034 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/common.opt
gcc/config/gnu-user.h
gcc/config/i386/gnu-user.h
gcc/config/i386/gnu-user64.h
gcc/doc/invoke.texi
gcc/gcc.c