This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug driver/81523] -static -pie behaves differently depending on if --enable-default-pie is used
- From: "aldyh at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 13 Sep 2017 16:42:12 +0000
- Subject: [Bug driver/81523] -static -pie behaves differently depending on if --enable-default-pie is used
- Auto-submitted: auto-generated
- References: <bug-81523-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81523
--- Comment #7 from Aldy Hernandez <aldyh at gcc dot gnu.org> ---
Author: aldyh
Date: Wed Sep 13 16:41:41 2017
New Revision: 252351
URL: https://gcc.gnu.org/viewcvs?rev=252351&root=gcc&view=rev
Log:
PR driver/81523: Make -static override -pie
-static and -pie together behave differently depending on whether GCC is
configured with --enable-default-pie. On x86, "-static -pie" fails to
create executable when --enable-default-pie isn't used, but creates a
static executable when --enable-default-pie is used. This patch makes
-static completely override -pie to create a static executable, regardless
if --enable-default-pie is used to configure GCC.
gcc/
PR driver/81523
* gcc.c (NO_PIE_SPEC): Delete.
(PIE_SPEC): Define as !no-pie/pie. Move static|shared|r
exclusion..
(LINK_PIE_SPEC): ..to here.
(LINK_COMMAND_SPEC): Support -no-pie.
* config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Correct
chain of crtbegin*.o selection, update for PIE_SPEC changes and
format.
(GNU_USER_TARGET_ENDFILE_SPEC): Similarly.
* config/sol2.h (STARTFILE_CRTBEGIN_SPEC): Similarly.
(ENDFILE_CRTEND_SPEC): Similarly.
gcc/testsuite/
PR driver/81523
* gcc.dg/pie-7.c: New test.
* gcc.dg/pie-static-1.c: Likewise.
* gcc.dg/pie-static-2.c: Likewise.
Added:
branches/range-gen2/gcc/testsuite/gcc.dg/pie-7.c
branches/range-gen2/gcc/testsuite/gcc.dg/pie-static-1.c
branches/range-gen2/gcc/testsuite/gcc.dg/pie-static-2.c
Modified:
branches/range-gen2/gcc/ChangeLog
branches/range-gen2/gcc/config/gnu-user.h
branches/range-gen2/gcc/config/sol2.h
branches/range-gen2/gcc/gcc.c
branches/range-gen2/gcc/testsuite/ChangeLog