| #!/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 |