#!/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 # Originally based on test-quick from Fam Zheng # # 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-10 --cxx=clang++-10 \ --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