1#!/usr/bin/env bash 2 3set -eux 4cd $(dirname $0)/.. 5 6export CARGO_TARGET_DIR=$(pwd)/target 7 8cargo test --doc 9 10pushd ./example 11cargo rustc \ 12 --release \ 13 -- \ 14 -Cpasses='sancov' \ 15 -Cllvm-args=-sanitizer-coverage-level=3 \ 16 -Cllvm-args=-sanitizer-coverage-trace-compares \ 17 -Cllvm-args=-sanitizer-coverage-inline-8bit-counters \ 18 -Cllvm-args=-sanitizer-coverage-stack-depth \ 19 -Cllvm-args=-sanitizer-coverage-trace-geps \ 20 -Cllvm-args=-sanitizer-coverage-prune-blocks=0 \ 21 -Zsanitizer=address 22(! $CARGO_TARGET_DIR/release/example -runs=100000) 23popd 24 25pushd ./example_arbitrary 26cargo rustc \ 27 --release \ 28 -- \ 29 -Cpasses='sancov' \ 30 -Cllvm-args=-sanitizer-coverage-level=3 \ 31 -Cllvm-args=-sanitizer-coverage-trace-compares \ 32 -Cllvm-args=-sanitizer-coverage-inline-8bit-counters \ 33 -Cllvm-args=-sanitizer-coverage-stack-depth \ 34 -Cllvm-args=-sanitizer-coverage-trace-geps \ 35 -Cllvm-args=-sanitizer-coverage-prune-blocks=0 \ 36 -Zsanitizer=address 37(! $CARGO_TARGET_DIR/release/example_arbitrary -runs=10000000) 38RUST_LIBFUZZER_DEBUG_PATH=$(pwd)/debug_output \ 39 $CARGO_TARGET_DIR/release/example_arbitrary \ 40 $(ls ./crash-* | head -n 1) 41cat $(pwd)/debug_output 42grep -q Rgb $(pwd)/debug_output 43popd 44 45pushd ./example_mutator 46cargo rustc \ 47 --release \ 48 -- \ 49 -Cpasses='sancov' \ 50 -Cllvm-args=-sanitizer-coverage-level=3 \ 51 -Cllvm-args=-sanitizer-coverage-trace-compares \ 52 -Cllvm-args=-sanitizer-coverage-inline-8bit-counters \ 53 -Cllvm-args=-sanitizer-coverage-stack-depth \ 54 -Cllvm-args=-sanitizer-coverage-trace-geps \ 55 -Cllvm-args=-sanitizer-coverage-prune-blocks=0 \ 56 -Zsanitizer=address 57(! $CARGO_TARGET_DIR/release/example_mutator -runs=10000000) 58popd 59 60echo "All good!" 61