summary refs log tree commit diff
path: root/configure
diff options
context:
space:
mode:
authorDenis Kaganovich <mahatma@eu.by>2016-10-20 22:01:39 +0200
committerMike Frysinger <vapier@gentoo.org>2016-11-15 14:15:19 -0500
commitc7409aded44634411a19b0b7178b7faa237835e6 (patch)
treea3fbfec4d7a785a397fe9bb2fed98c7dbf86b855 /configure
parent001f81ad1e792dddd75aa8a6f9d1d9b0ba8dc16e (diff)
downloadglibc-c7409aded44634411a19b0b7178b7faa237835e6.tar.gz
glibc-c7409aded44634411a19b0b7178b7faa237835e6.tar.xz
glibc-c7409aded44634411a19b0b7178b7faa237835e6.zip
configure: accept __stack_chk_fail_local for ssp support too [BZ #20662]
When glibc is compiled with gcc 6.2 that has been configured with
--enable-default-pie and --enable-default-ssp, the configure script
fails to detect that the compiler has ssp turned on by default when
being built for i686-linux-gnu.

This is because gcc is emitting __stack_chk_fail_local but the
script is only looking for __stack_chk_fail.  Support both.

Example output:
checking whether x86_64-pc-linux-gnu-gcc -m32 -Wl,-O1 -Wl,--as-needed
implicitly enables -fstack-protector... no
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure8
1 files changed, 5 insertions, 3 deletions
diff --git a/configure b/configure
index e80e0ad56c..d9f8c06bca 100755
--- a/configure
+++ b/configure
@@ -6340,12 +6340,14 @@ echo >&5 "libc_undefs='$libc_undefs'"
 # symbols (resolved by the linker), so filter out unknown symbols.
 # This will fail to produce the correct result if the compiler
 # defaults to -fstack-protector but this produces an undefined symbol
-# other than __stack_chk_fail.  However, compilers like that have not
-# been encountered in practice.
-libc_undefs=`echo "$libc_undefs" | egrep '^(foobar|__stack_chk_fail)$'`
+# other than __stack_chk_fail or __stack_chk_fail_local. However,
+# compilers like that have not been encountered in practice.
+libc_undefs=`echo "$libc_undefs" | \
+  egrep '^(foobar|__stack_chk_fail|__stack_chk_fail_local)$'`
 case "$libc_undefs" in
 foobar) libc_cv_predef_stack_protector=no ;;
 '__stack_chk_fail
+foobar'|'__stack_chk_fail_local
 foobar') libc_cv_predef_stack_protector=yes ;;
 *) as_fn_error $? "unexpected symbols in test: $libc_undefs" "$LINENO" 5 ;;
 esac