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
This commit is contained in:
parent
001f81ad1e
commit
c7409aded4
|
@ -1,3 +1,12 @@
|
||||||
|
2016-10-20 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-11-15 Florian Weimer <fweimer@redhat.com>
|
2016-11-15 Florian Weimer <fweimer@redhat.com>
|
||||||
|
|
||||||
* sysdeps/s390/s390-64/setjmp.S (NEED_COMPAT_SYMBOLS): New macro.
|
* sysdeps/s390/s390-64/setjmp.S (NEED_COMPAT_SYMBOLS): New macro.
|
||||||
|
|
|
@ -6340,12 +6340,14 @@ echo >&5 "libc_undefs='$libc_undefs'"
|
||||||
# symbols (resolved by the linker), so filter out unknown symbols.
|
# symbols (resolved by the linker), so filter out unknown symbols.
|
||||||
# This will fail to produce the correct result if the compiler
|
# This will fail to produce the correct result if the compiler
|
||||||
# defaults to -fstack-protector but this produces an undefined symbol
|
# defaults to -fstack-protector but this produces an undefined symbol
|
||||||
# other than __stack_chk_fail. However, compilers like that have not
|
# other than __stack_chk_fail or __stack_chk_fail_local. However,
|
||||||
# been encountered in practice.
|
# compilers like that have not been encountered in practice.
|
||||||
libc_undefs=`echo "$libc_undefs" | egrep '^(foobar|__stack_chk_fail)$'`
|
libc_undefs=`echo "$libc_undefs" | \
|
||||||
|
egrep '^(foobar|__stack_chk_fail|__stack_chk_fail_local)$'`
|
||||||
case "$libc_undefs" in
|
case "$libc_undefs" in
|
||||||
foobar) libc_cv_predef_stack_protector=no ;;
|
foobar) libc_cv_predef_stack_protector=no ;;
|
||||||
'__stack_chk_fail
|
'__stack_chk_fail
|
||||||
|
foobar'|'__stack_chk_fail_local
|
||||||
foobar') libc_cv_predef_stack_protector=yes ;;
|
foobar') libc_cv_predef_stack_protector=yes ;;
|
||||||
*) as_fn_error $? "unexpected symbols in test: $libc_undefs" "$LINENO" 5 ;;
|
*) as_fn_error $? "unexpected symbols in test: $libc_undefs" "$LINENO" 5 ;;
|
||||||
esac
|
esac
|
||||||
|
|
|
@ -1667,12 +1667,14 @@ echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
|
||||||
# symbols (resolved by the linker), so filter out unknown symbols.
|
# symbols (resolved by the linker), so filter out unknown symbols.
|
||||||
# This will fail to produce the correct result if the compiler
|
# This will fail to produce the correct result if the compiler
|
||||||
# defaults to -fstack-protector but this produces an undefined symbol
|
# defaults to -fstack-protector but this produces an undefined symbol
|
||||||
# other than __stack_chk_fail. However, compilers like that have not
|
# other than __stack_chk_fail or __stack_chk_fail_local. However,
|
||||||
# been encountered in practice.
|
# compilers like that have not been encountered in practice.
|
||||||
libc_undefs=`echo "$libc_undefs" | egrep '^(foobar|__stack_chk_fail)$'`
|
libc_undefs=`echo "$libc_undefs" | \
|
||||||
|
egrep '^(foobar|__stack_chk_fail|__stack_chk_fail_local)$'`
|
||||||
case "$libc_undefs" in
|
case "$libc_undefs" in
|
||||||
foobar) libc_cv_predef_stack_protector=no ;;
|
foobar) libc_cv_predef_stack_protector=no ;;
|
||||||
'__stack_chk_fail
|
'__stack_chk_fail
|
||||||
|
foobar'|'__stack_chk_fail_local
|
||||||
foobar') libc_cv_predef_stack_protector=yes ;;
|
foobar') libc_cv_predef_stack_protector=yes ;;
|
||||||
*) AC_MSG_ERROR([unexpected symbols in test: $libc_undefs]) ;;
|
*) AC_MSG_ERROR([unexpected symbols in test: $libc_undefs]) ;;
|
||||||
esac],
|
esac],
|
||||||
|
|
Loading…
Reference in New Issue