1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

Pass -no-pie to GCC only if GCC defaults to PIE [BZ #22614]

After --enable-static-pie is added to configure, libc_cv_pie_default is
set to yes when either --enable-static-pie is used to configure glibc
or GCC defaults to PIE.  We should set no-pie-ldflag to -no-pie, which
is supported on GCC 6 and later, only if GCC defaults to PIE, not when
--enable-static-pie is used to configure glibc.

Tested on x32 with --enable-static-pie using GCC 5 and without
--enable-static-pie using GCC 7.

	[BZ #22614]
	* Makeconfig (no-pie-ldflag): Set to -no-pie only if
	$(cc-pie-default) == yes.
	* config.make.in (cc-pie-default): New.
	* configure.ac (libc_cv_pie_default): Renamed to ...
	(libc_cv_cc_pie_default): This.
	(libc_cv_pie_default): Set to $libc_cv_cc_pie_default.
	* configure: Regenerated.
This commit is contained in:
H.J. Lu
2017-12-18 12:24:26 -08:00
parent 8e1472d2c1
commit 00c714df39
5 changed files with 28 additions and 9 deletions

13
configure vendored
View File

@ -596,6 +596,7 @@ static_nss
profile
libc_cv_multidir
libc_cv_pie_default
libc_cv_cc_pie_default
libc_cv_pic_default
shared
static
@ -6748,22 +6749,24 @@ $as_echo "$libc_cv_pic_default" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -fPIE is default" >&5
$as_echo_n "checking whether -fPIE is default... " >&6; }
if ${libc_cv_pie_default+:} false; then :
if ${libc_cv_cc_pie_default+:} false; then :
$as_echo_n "(cached) " >&6
else
libc_cv_pie_default=yes
libc_cv_cc_pie_default=yes
cat > conftest.c <<EOF
#if defined __PIE__ || defined __pie__ || defined PIE || defined pie
# error PIE is default.
#endif
EOF
if eval "${CC-cc} -S conftest.c 2>&5 1>&5"; then
libc_cv_pie_default=no
libc_cv_cc_pie_default=no
fi
rm -f conftest.*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_pie_default" >&5
$as_echo "$libc_cv_pie_default" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_pie_default" >&5
$as_echo "$libc_cv_cc_pie_default" >&6; }
libc_cv_pie_default=$libc_cv_cc_pie_default
# Set the `multidir' variable by grabbing the variable from the compiler.