xref: /qemu/tests/docker/test-tsan (revision df79fd5667fb99c6fdfa0d295cb020e9e3eef1e7)
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