]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
configure: accept __stack_chk_fail_local for ssp support too [BZ #20662]
authorDenis Kaganovich <mahatma@eu.by>
Thu, 20 Oct 2016 20:01:39 +0000 (22:01 +0200)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 6 Apr 2017 13:52:42 +0000 (10:52 -0300)
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

(cherry picked from commit c7409aded44634411a19b0b7178b7faa237835e6)

ChangeLog
configure
configure.ac

index 66bbb17fd35b0f64dec6027e0eec101c4db51cdd..c06114015b6e97f3f3846b396a72ecc0cc0779cc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2017-04-06  Denis Kaganovich  <mahatma@eu.by>
+           Magnus Granberg  <zorry@gentoo.org>
+           Mike Frysinger  <vapier@gentoo.org>
+
+       [BZ #20662]
+       * configure.ac (libc_cv_predef_stack_protector): Also check for
+       __stack_chk_fail_local symbols.
+       * configure: Regenerated.
+
 2016-08-26  Florian Weimer  <fweimer@redhat.com>
 
        [BZ #20432]
index 8fe59377eacfdb9e4c4d1618053f6fa6719aac65..ee49f286af3e42b93dc209630e84dad1a3c7914a 100755 (executable)
--- a/configure
+++ b/configure
@@ -6252,12 +6252,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
index 3c766b7409f7e3f389b4e1a7857125dd64abd2ab..5932138bbd5ef877d8aab3642488176985e79bab 100644 (file)
@@ -1603,12 +1603,14 @@ echo >&AS_MESSAGE_LOG_FD "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 ;;
 *) AC_MSG_ERROR([unexpected symbols in test: $libc_undefs]) ;;
 esac],