mirror of https://gitee.com/openkylin/qemu.git
build-sys: add --enable-sanitizers
Typical slowdown introduced by AddressSanitizer is 2x. UBSan shouldn't have much impact on runtime cost. Enable it by default when --enable-debug, unless --disable-sanitizers. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20180116151152.4040-3-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
6c549dc141
commit
247724cb30
|
@ -342,6 +342,7 @@ rdma=""
|
||||||
gprof="no"
|
gprof="no"
|
||||||
debug_tcg="no"
|
debug_tcg="no"
|
||||||
debug="no"
|
debug="no"
|
||||||
|
sanitizers="no"
|
||||||
fortify_source=""
|
fortify_source=""
|
||||||
strip_opt="yes"
|
strip_opt="yes"
|
||||||
tcg_interpreter="no"
|
tcg_interpreter="no"
|
||||||
|
@ -993,6 +994,10 @@ for opt do
|
||||||
strip_opt="no"
|
strip_opt="no"
|
||||||
fortify_source="no"
|
fortify_source="no"
|
||||||
;;
|
;;
|
||||||
|
--enable-sanitizers) sanitizers="yes"
|
||||||
|
;;
|
||||||
|
--disable-sanitizers) sanitizers="no"
|
||||||
|
;;
|
||||||
--enable-sparse) sparse="yes"
|
--enable-sparse) sparse="yes"
|
||||||
;;
|
;;
|
||||||
--disable-sparse) sparse="no"
|
--disable-sparse) sparse="no"
|
||||||
|
@ -1474,6 +1479,7 @@ Advanced options (experts only):
|
||||||
--firmwarepath=PATH search PATH for firmware files
|
--firmwarepath=PATH search PATH for firmware files
|
||||||
--with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
|
--with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
|
||||||
--enable-debug enable common debug build options
|
--enable-debug enable common debug build options
|
||||||
|
--enable-sanitizers enable default sanitizers
|
||||||
--disable-strip disable stripping binaries
|
--disable-strip disable stripping binaries
|
||||||
--disable-werror disable compilation abort on warning
|
--disable-werror disable compilation abort on warning
|
||||||
--disable-stack-protector disable compiler-provided stack protection
|
--disable-stack-protector disable compiler-provided stack protection
|
||||||
|
@ -5200,6 +5206,23 @@ if compile_prog "" "" ; then
|
||||||
have_utmpx=yes
|
have_utmpx=yes
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# checks for sanitizers
|
||||||
|
|
||||||
|
write_c_skeleton
|
||||||
|
|
||||||
|
have_asan=no
|
||||||
|
have_ubsan=no
|
||||||
|
|
||||||
|
if test "$sanitizers" = "yes" ; then
|
||||||
|
if compile_prog "$CPU_CFLAGS -Werror -fsanitize=address" ""; then
|
||||||
|
have_asan=yes
|
||||||
|
fi
|
||||||
|
if compile_prog "$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then
|
||||||
|
have_ubsan=yes
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
##########################################
|
##########################################
|
||||||
# End of CC checks
|
# End of CC checks
|
||||||
# After here, no more $cc or $ld runs
|
# After here, no more $cc or $ld runs
|
||||||
|
@ -5224,6 +5247,13 @@ else
|
||||||
CFLAGS="-O2 $CFLAGS"
|
CFLAGS="-O2 $CFLAGS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "$have_asan" = "yes"; then
|
||||||
|
CFLAGS="-fsanitize=address $CFLAGS"
|
||||||
|
fi
|
||||||
|
if test "$have_ubsan" = "yes"; then
|
||||||
|
CFLAGS="-fsanitize=undefined $CFLAGS"
|
||||||
|
fi
|
||||||
|
|
||||||
##########################################
|
##########################################
|
||||||
# Do we have libnfs
|
# Do we have libnfs
|
||||||
if test "$libnfs" != "no" ; then
|
if test "$libnfs" != "no" ; then
|
||||||
|
|
Loading…
Reference in New Issue