blob: 475a640768d835279d6458c660d0ba46ce84a6b9 [file] [log] [blame]
#!/usr/bin/env bash
set -x
set -e
set -u
HERE="$(cd $(dirname $0) && pwd)"
. ${HERE}/buildbot_functions.sh
ROOT=`pwd`
PLATFORM=`uname`
export PATH="/usr/local/bin:$PATH"
CHECK_LIBCXX=${CHECK_LIBCXX:-0}
CHECK_LLD=${CHECK_LLD:-1}
MAKE_JOBS=${MAX_MAKE_JOBS:-$(nproc)}
LLVM=$ROOT/llvm
LIBFUZZER=$LLVM/lib/Fuzzer
# No assertions. Need to clean up the existing assertion failures first.
# Also, the Fuzzer does not provide reproducers on assertion failures yet.
CMAKE_COMMON_OPTIONS="-GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=OFF -DLLVM_PARALLEL_LINK_JOBS=8 -DLIBFUZZER_ENABLE_TESTS=ON"
CLOBBER=fuzzer-test-suite
STAGE1_CLOBBER="RUNDIR-* $LIBFUZZER"
clobber
# Make sure asan intercepts SIGABRT so that the fuzzer can print the test cases
# for assertion failures.
# export ASAN_OPTIONS=handle_abort=1:strip_path_prefix=build/llvm/
buildbot_update
# Stage 1
build_stage1_clang
# export ASAN_SYMBOLIZER_PATH="${llvm_symbolizer_path}"
export PATH="$(readlink -f ${STAGE1_DIR}/bin):$PATH"
echo @@@BUILD_STEP check-fuzzer@@@
(cd ${STAGE1_DIR} && ninja check-fuzzer) || echo @@@STEP_FAILURE@@@
echo @@@BUILD_STEP get fuzzer-test-suite @@@
[ ! -e fuzzer-test-suite ] && git clone https://github.com/google/fuzzer-test-suite.git
(cd fuzzer-test-suite && git pull)
RunFuzzerTest() {
echo @@@BUILD_STEP test "$1" fuzzer@@@
ln -sf $LIBFUZZER .
export FUZZING_ENGINE=fsanitize_fuzzer
`pwd`/fuzzer-test-suite/build-and-test.sh "$1"
echo
}
ulimit -t 3600
export JOBS=${MAKE_JOBS}
RunFuzzerTest libxml2-v2.9.2 || echo @@@STEP_FAILURE@@@
RunFuzzerTest libpng-1.2.56 || echo @@@STEP_FAILURE@@@
RunFuzzerTest libssh-2017-1272 || echo @@@STEP_FAILURE@@@
RunFuzzerTest re2-2014-12-09 || echo @@@STEP_FAILURE@@@
RunFuzzerTest c-ares-CVE-2016-5180 || echo @@@STEP_FAILURE@@@
RunFuzzerTest openssl-1.0.1f || echo @@@STEP_FAILURE@@@
RunFuzzerTest openssl-1.0.2d || echo @@@STEP_FAILURE@@@
RunFuzzerTest proj4-2017-08-14 || echo @@@STEP_FAILURE@@@
#RunFuzzerTest woff2-2016-05-06 || echo @@@STEP_WARNINGS@@@ # Often can't find the bug in the given time.