diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2017-12-18 12:24:26 -0800 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2017-12-18 12:24:38 -0800 |
commit | 00c714df398b63934540d95ce3792596f7a94a6c (patch) | |
tree | f96ed5735a44f5a6afff6efafe5dc86f1b93fecb /configure | |
parent | 8e1472d2c1e25e6eabc2059170731365f6d5b3d1 (diff) | |
download | glibc-00c714df398b63934540d95ce3792596f7a94a6c.tar.gz glibc-00c714df398b63934540d95ce3792596f7a94a6c.tar.xz glibc-00c714df398b63934540d95ce3792596f7a94a6c.zip |
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.
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/configure b/configure index 9da9fb2736..7a8bd3f817 100755 --- a/configure +++ b/configure @@ -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. |