1*df79fd56SRobert Foley#!/bin/bash -e 2*df79fd56SRobert Foley# 3*df79fd56SRobert Foley# This test will use TSan as part of a build and a make check. 4*df79fd56SRobert Foley# 5*df79fd56SRobert Foley# Copyright (c) 2020 Linaro 6*df79fd56SRobert Foley# Copyright (c) 2016 Red Hat Inc. 7*df79fd56SRobert Foley# 8*df79fd56SRobert Foley# Authors: 9*df79fd56SRobert Foley# Robert Foley <robert.foley@linaro.org> 10*df79fd56SRobert Foley# Originally based on test-quick from Fam Zheng <famz@redhat.com> 11*df79fd56SRobert Foley# 12*df79fd56SRobert Foley# This work is licensed under the terms of the GNU GPL, version 2 13*df79fd56SRobert Foley# or (at your option) any later version. See the COPYING file in 14*df79fd56SRobert Foley# the top-level directory. 15*df79fd56SRobert Foley 16*df79fd56SRobert Foley. common.rc 17*df79fd56SRobert Foley 18*df79fd56SRobert Foleysetup_tsan() 19*df79fd56SRobert Foley{ 20*df79fd56SRobert Foley requires clang tsan 21*df79fd56SRobert Foley tsan_log_dir="/tmp/qemu-test/build/tsan" 22*df79fd56SRobert Foley mkdir -p $tsan_log_dir > /dev/null || true 23*df79fd56SRobert Foley EXTRA_CONFIGURE_OPTS="${EXTRA_CONFIGURE_OPTS} --enable-tsan \ 24*df79fd56SRobert Foley --cc=clang-10 --cxx=clang++-10 \ 25*df79fd56SRobert Foley --disable-werror --extra-cflags=-O0" 26*df79fd56SRobert Foley # detect deadlocks is false currently simply because 27*df79fd56SRobert Foley # TSan crashes immediately with deadlock detector enabled. 28*df79fd56SRobert Foley # We have maxed out the history size to get the best chance of finding 29*df79fd56SRobert Foley # warnings during testing. 30*df79fd56SRobert Foley # Note, to get TSan to fail on warning, use exitcode=66 below. 31*df79fd56SRobert Foley tsan_opts="suppressions=/tmp/qemu-test/src/tests/tsan/suppressions.tsan\ 32*df79fd56SRobert Foley detect_deadlocks=false history_size=7\ 33*df79fd56SRobert Foley halt_on_error=0 exitcode=0 verbose=5\ 34*df79fd56SRobert Foley log_path=$tsan_log_dir/tsan_warning" 35*df79fd56SRobert Foley export TSAN_OPTIONS="$tsan_opts" 36*df79fd56SRobert Foley} 37*df79fd56SRobert Foley 38*df79fd56SRobert Foleycd "$BUILD_DIR" 39*df79fd56SRobert Foley 40*df79fd56SRobert FoleyTARGET_LIST=${TARGET_LIST:-$DEF_TARGET_LIST} \ 41*df79fd56SRobert Foleysetup_tsan 42*df79fd56SRobert Foleybuild_qemu 43*df79fd56SRobert Foleycheck_qemu 44*df79fd56SRobert Foleyinstall_qemu 45