| #!/bin/bash -e |
| # |
| # This test will use TSan as part of a build and a make check. |
| # |
| # Copyright (c) 2020 Linaro |
| # Copyright (c) 2016 Red Hat Inc. |
| # |
| # Authors: |
| # Robert Foley <robert.foley@linaro.org> |
| # Originally based on test-quick from Fam Zheng <famz@redhat.com> |
| # |
| # This work is licensed under the terms of the GNU GPL, version 2 |
| # or (at your option) any later version. See the COPYING file in |
| # the top-level directory. |
| |
| . common.rc |
| |
| setup_tsan() |
| { |
| requires_binary clang |
| tsan_log_dir="/tmp/qemu-test/build/tsan" |
| mkdir -p $tsan_log_dir > /dev/null || true |
| EXTRA_CONFIGURE_OPTS="${EXTRA_CONFIGURE_OPTS} --enable-tsan \ |
| --cc=clang --cxx=clang++ \ |
| --disable-werror --extra-cflags=-O0" |
| # detect deadlocks is false currently simply because |
| # TSan crashes immediately with deadlock detector enabled. |
| # We have maxed out the history size to get the best chance of finding |
| # warnings during testing. |
| # Note, to get TSan to fail on warning, use exitcode=66 below. |
| tsan_opts="suppressions=/tmp/qemu-test/src/tests/tsan/suppressions.tsan\ |
| detect_deadlocks=false history_size=7\ |
| halt_on_error=0 exitcode=0 verbose=5\ |
| log_path=$tsan_log_dir/tsan_warning" |
| export TSAN_OPTIONS="$tsan_opts" |
| } |
| |
| cd "$BUILD_DIR" |
| |
| TARGET_LIST=${TARGET_LIST:-$DEF_TARGET_LIST} \ |
| setup_tsan |
| build_qemu |
| check_qemu |
| install_qemu |