aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiroslav Rezanina <mrezanin@redhat.com>2014-07-02 10:05:24 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2014-07-10 17:06:29 +0200
commit3b463a3fa8f7690ffa3ef273993dff349b3a73d3 (patch)
tree236dbc78833c71db403091f84a525dd32ea13b34
parent30e5210a706ca6b52cbefa8b71e40ae614ffd6e5 (diff)
Enforce stack protector usage
If --enable-stack-protector is used is used, configure script try to use --fstack-protector-strong. In case it's not supported, --fstack-protector-all is enabled. If both protectors are not supported, configure does not use any protector at all without any notification. This patch reports error when user requests stack protector to be used and both protector modes are not supported. Behavior is not changed in case user do not use any of --enable-stack-protector/--disable-stack-protector. Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com> [Fix non-POSIX operator in test. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rwxr-xr-xconfigure9
1 files changed, 8 insertions, 1 deletions
diff --git a/configure b/configure
index 7dd43fdc70..f7685b565c 100755
--- a/configure
+++ b/configure
@@ -1489,8 +1489,9 @@ for flag in $gcc_flags; do
fi
done
-if test "$stack_protector" != "no" ; then
+if test "$stack_protector" != "no"; then
gcc_flags="-fstack-protector-strong -fstack-protector-all"
+ sp_on=0
for flag in $gcc_flags; do
# We need to check both a compile and a link, since some compiler
# setups fail only on a .c->.o compile and some only at link time
@@ -1498,9 +1499,15 @@ if test "$stack_protector" != "no" ; then
compile_prog "-Werror $flag" ""; then
QEMU_CFLAGS="$QEMU_CFLAGS $flag"
LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
+ sp_on=1
break
fi
done
+ if test "$stack_protector" = yes; then
+ if test $sp_on = 0; then
+ error_exit "Stack protector not supported"
+ fi
+ fi
fi
# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and