coverage_fuzz_corpora
1 #!/usr/bin/env bash 2 3 set -euo pipefail 4 5 if [ -z "${LLVM_PROFILE_FILE:-}" ]; then 6 echo "This script is meant to be run inside with_coverage" >&2 7 exit 1 8 fi 9 10 coverage_dir=$(dirname "$LLVM_PROFILE_FILE") 11 12 TOPDIR=$(realpath "$(dirname "$0")/..") 13 cd "$TOPDIR" 14 15 # set an alternative target directory so it's possible to reuse cached artifacts between coverage 16 # runs of coverage and fuzzing. 17 export CARGO_TARGET_DIR=${CARGO_TARGET_DIR:-target-coverage} 18 19 for d in ./crates/*/fuzz; do 20 pushd "$(dirname "$d")" 21 crate=$(basename "$(dirname "$d")") 22 mkdir -p "$TOPDIR/target/debug/$crate" 23 mkdir -p "$coverage_dir/$crate" 24 for fuzzer in $(cargo fuzz list); do 25 # disable sanitizer to work in stable. Also make curve25519-dalek compilation much faster 26 cargo fuzz coverage "$fuzzer" --sanitizer=none 27 28 # we copy binary and coverage data where with_coverage expect it to be 29 cp "target-coverage/x86_64-unknown-linux-gnu/release/$fuzzer" "$TOPDIR/target/debug/$crate/$fuzzer" 30 mv "fuzz/coverage/$fuzzer/raw" "$coverage_dir/$crate/$fuzzer" 31 done 32 popd 33 done