mirror of
https://github.com/Z3Prover/z3
synced 2025-04-15 13:28:47 +00:00
[TravisCI] Add ASan/LSan/UBSan suppression files and use them in
CI.
This commit is contained in:
parent
b63754e362
commit
64ee9f168d
|
@ -62,7 +62,8 @@ ENV \
|
||||||
|
|
||||||
# Build Z3
|
# Build Z3
|
||||||
RUN mkdir -p "${Z3_SRC_DIR}" && \
|
RUN mkdir -p "${Z3_SRC_DIR}" && \
|
||||||
mkdir -p "${Z3_SRC_DIR}/contrib/ci/scripts"
|
mkdir -p "${Z3_SRC_DIR}/contrib/ci/scripts" && \
|
||||||
|
mkdir -p "${Z3_SRC_DIR}/contrib/ci/suppressions/sanitizers"
|
||||||
# Deliberately leave out `contrib`
|
# Deliberately leave out `contrib`
|
||||||
ADD /cmake ${Z3_SRC_DIR}/cmake/
|
ADD /cmake ${Z3_SRC_DIR}/cmake/
|
||||||
ADD /doc ${Z3_SRC_DIR}/doc/
|
ADD /doc ${Z3_SRC_DIR}/doc/
|
||||||
|
@ -89,7 +90,13 @@ RUN ${Z3_SRC_DIR}/contrib/ci/scripts/test_z3_docs.sh
|
||||||
# Test examples
|
# Test examples
|
||||||
ADD \
|
ADD \
|
||||||
/contrib/ci/scripts/test_z3_examples_cmake.sh \
|
/contrib/ci/scripts/test_z3_examples_cmake.sh \
|
||||||
|
/contrib/ci/scripts/sanitizer_env.sh \
|
||||||
${Z3_SRC_DIR}/contrib/ci/scripts/
|
${Z3_SRC_DIR}/contrib/ci/scripts/
|
||||||
|
ADD \
|
||||||
|
/contrib/suppressions/sanitizers/asan.txt \
|
||||||
|
/contrib/suppressions/sanitizers/lsan.txt \
|
||||||
|
/contrib/suppressions/sanitizers/ubsan.txt \
|
||||||
|
${Z3_SRC_DIR}/contrib/suppressions/sanitizers/
|
||||||
RUN ${Z3_SRC_DIR}/contrib/ci/scripts/test_z3_examples_cmake.sh
|
RUN ${Z3_SRC_DIR}/contrib/ci/scripts/test_z3_examples_cmake.sh
|
||||||
|
|
||||||
# Run unit tests
|
# Run unit tests
|
||||||
|
|
19
contrib/ci/scripts/sanitizer_env.sh
Normal file
19
contrib/ci/scripts/sanitizer_env.sh
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# This script is intended to be included by other
|
||||||
|
# scripts and should not be executed directly
|
||||||
|
|
||||||
|
: ${Z3_SRC_DIR?"Z3_SRC_DIR must be specified"}
|
||||||
|
: ${ASAN_BUILD?"ASAN_BUILD must be specified"}
|
||||||
|
: ${UBSAN_BUILD?"UBSAN_BUILD must be specified"}
|
||||||
|
|
||||||
|
if [ "X${ASAN_BUILD}" = "X1" ]; then
|
||||||
|
# Use suppression files
|
||||||
|
export LSAN_OPTIONS="print_suppressions=1,suppressions=${Z3_SRC_DIR}/contrib/suppressions/sanitizers/lsan.txt"
|
||||||
|
export ASAN_OPTIONS="print_suppressions=1,suppressions=${Z3_SRC_DIR}/contrib/suppressions/sanitizers/asan.txt"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "X${UBSAN_BUILD}" = "X1" ]; then
|
||||||
|
# `halt_on_error=1,abort_on_error=1` means that on the first UBSan error
|
||||||
|
# the program will terminate by calling `abort(). Without this UBSan will
|
||||||
|
# allow execution to continue. We also use a suppression file.
|
||||||
|
export UBSAN_OPTIONS="halt_on_error=1,abort_on_error=1,print_suppressions=1,suppressions=${Z3_SRC_DIR}/contrib/suppressions/sanitizers/ubsan.txt"
|
||||||
|
fi
|
|
@ -21,6 +21,9 @@ source ${SCRIPT_DIR}/set_compiler_flags.sh
|
||||||
# Set CMake generator args
|
# Set CMake generator args
|
||||||
source ${SCRIPT_DIR}/set_generator_args.sh
|
source ${SCRIPT_DIR}/set_generator_args.sh
|
||||||
|
|
||||||
|
# Sanitizer environment variables
|
||||||
|
source ${SCRIPT_DIR}/sanitizer_env.sh
|
||||||
|
|
||||||
cd "${Z3_BUILD_DIR}"
|
cd "${Z3_BUILD_DIR}"
|
||||||
|
|
||||||
# Build and run C example
|
# Build and run C example
|
||||||
|
|
|
@ -16,6 +16,9 @@ if [ "X${RUN_SYSTEM_TESTS}" != "X1" ]; then
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Sanitizer environment variables
|
||||||
|
source ${SCRIPT_DIR}/sanitizer_env.sh
|
||||||
|
|
||||||
Z3_EXE="${Z3_BUILD_DIR}/z3"
|
Z3_EXE="${Z3_BUILD_DIR}/z3"
|
||||||
Z3_LIB_DIR="${Z3_BUILD_DIR}"
|
Z3_LIB_DIR="${Z3_BUILD_DIR}"
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,9 @@ set -o pipefail
|
||||||
# Set CMake generator args
|
# Set CMake generator args
|
||||||
source ${SCRIPT_DIR}/set_generator_args.sh
|
source ${SCRIPT_DIR}/set_generator_args.sh
|
||||||
|
|
||||||
|
# Sanitizer environment variables
|
||||||
|
source ${SCRIPT_DIR}/sanitizer_env.sh
|
||||||
|
|
||||||
cd "${Z3_BUILD_DIR}"
|
cd "${Z3_BUILD_DIR}"
|
||||||
|
|
||||||
function build_unit_tests() {
|
function build_unit_tests() {
|
||||||
|
|
7
contrib/suppressions/README.md
Normal file
7
contrib/suppressions/README.md
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# Suppression files
|
||||||
|
|
||||||
|
This directory contains suppression files used by various
|
||||||
|
program analysis tools.
|
||||||
|
|
||||||
|
Suppression files tell a program analysis tool to suppress
|
||||||
|
various warnings/errors.
|
3
contrib/suppressions/maintainers.txt
Normal file
3
contrib/suppressions/maintainers.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Maintainers
|
||||||
|
|
||||||
|
- Dan Liew (@delcypher)
|
4
contrib/suppressions/sanitizers/README.md
Normal file
4
contrib/suppressions/sanitizers/README.md
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
# Sanitizer supression files
|
||||||
|
|
||||||
|
This directory contains files used to suppress
|
||||||
|
ASan/LSan/UBSan warnings/errors.
|
1
contrib/suppressions/sanitizers/asan.txt
Normal file
1
contrib/suppressions/sanitizers/asan.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
# AddressSanitizer suppression file
|
1
contrib/suppressions/sanitizers/lsan.txt
Normal file
1
contrib/suppressions/sanitizers/lsan.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
# LeakSanitizer suppression file
|
1
contrib/suppressions/sanitizers/ubsan.txt
Normal file
1
contrib/suppressions/sanitizers/ubsan.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
# UndefinedBehavior sanitizer suppression file
|
Loading…
Reference in a new issue