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