mirror of
https://github.com/qemu/qemu.git
synced 2024-11-24 03:13:44 +08:00
d6d1a65cca
SafeStack is a stack protection technique implemented in llvm. It is enabled with a -fsanitize flag. iotests are currently disabled when any -fsanitize option is used, because such options tend to produce additional warnings and false positives. While common -fsanitize options are used to verify the code and not added in production, SafeStack's main use is in production environments to protect against stack smashing. Since SafeStack does not print any warning or false positive, enable iotests when SafeStack is the only -fsanitize option used. This is likely going to be a production binary and we want to make sure it works correctly. Signed-off-by: Daniele Buono <dbuono@linux.vnet.ibm.com> Message-id: 20200529205122.714-5-dbuono@linux.vnet.ibm.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
64 lines
1.6 KiB
Bash
Executable File
64 lines
1.6 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Honor the SPEED environment variable, just like we do it for the qtests.
|
|
if [ "$SPEED" = "slow" ]; then
|
|
format_list="raw qcow2"
|
|
group=
|
|
elif [ "$SPEED" = "thorough" ]; then
|
|
format_list="raw qcow2 qed vmdk vpc"
|
|
group=
|
|
else
|
|
format_list=qcow2
|
|
group="-g auto"
|
|
fi
|
|
|
|
if [ "$#" -ne 0 ]; then
|
|
format_list="$@"
|
|
fi
|
|
|
|
if grep -q "CONFIG_GPROF=y" config-host.mak 2>/dev/null ; then
|
|
echo "GPROF is enabled ==> Not running the qemu-iotests."
|
|
exit 0
|
|
fi
|
|
|
|
# Disable tests with any sanitizer except for SafeStack
|
|
CFLAGS=$( grep "CFLAGS.*-fsanitize" config-host.mak 2>/dev/null )
|
|
SANITIZE_FLAGS=""
|
|
#Remove all occurrencies of -fsanitize=safe-stack
|
|
for i in ${CFLAGS}; do
|
|
if [ "${i}" != "-fsanitize=safe-stack" ]; then
|
|
SANITIZE_FLAGS="${SANITIZE_FLAGS} ${i}"
|
|
fi
|
|
done
|
|
if echo ${SANITIZE_FLAGS} | grep -q "\-fsanitize" 2>/dev/null; then
|
|
# Have a sanitize flag that is not allowed, stop
|
|
echo "Sanitizers are enabled ==> Not running the qemu-iotests."
|
|
exit 0
|
|
fi
|
|
|
|
if [ -z "$(find . -name 'qemu-system-*' -print)" ]; then
|
|
echo "No qemu-system binary available ==> Not running the qemu-iotests."
|
|
exit 0
|
|
fi
|
|
|
|
if ! command -v bash >/dev/null 2>&1 ; then
|
|
echo "bash not available ==> Not running the qemu-iotests."
|
|
exit 0
|
|
fi
|
|
|
|
if ! (sed --version | grep 'GNU sed') > /dev/null 2>&1 ; then
|
|
if ! command -v gsed >/dev/null 2>&1; then
|
|
echo "GNU sed not available ==> Not running the qemu-iotests."
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
cd tests/qemu-iotests
|
|
|
|
ret=0
|
|
for fmt in $format_list ; do
|
|
./check -makecheck -$fmt $group || ret=1
|
|
done
|
|
|
|
exit $ret
|