
* sample implementation of tracking enforcement (incomplete) * helpful compiler output * make it look like a real compiler output * ensure that the macro may be used outside of libafl * separate index/novelty tracking funcs * default const generic values so that we don't need to change this everywhere * fix tests * rollback unnecessary specification of stdmapobserver * register metadata in doc tests * doc fixes * doc cleanup * doc cleanup 2 * reduce implementor overhead to zero * renaming/docs fixes * asref isn't reflexive?? * generalization stage updates * add better documentation about require_{indices,novelties}_tracking * remaining generic updates * round one CI pass (knowingly introduces breaking changes) * typo * round 2 clippy * rollback: libafl_frida changes * fmt * moar porting * fix remaining fuzzers * fix windows build, maybe * fixup libafl_libfuzzer * fmt nighlty all the things * attempt to fix some broken additions * fix fmt * oops * fix new invocation * minimizer scheduler fixes * fix accounting * rename * fix * Fix build * Sort generics * Move more generics into the right place * Rename A -> C * Fix test * Fix test some more * Fix doc some more * critical formatting * More A->C * CanTrack harder --------- Co-authored-by: Dominik Maier <dmnk@google.com>
71 lines
2.3 KiB
Bash
Executable File
71 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
|
cd "$SCRIPT_DIR/.." || exit 1
|
|
# TODO: This should be rewritten in rust, a Makefile, or some platform-independent language
|
|
|
|
if [[ -z "${RUN_ON_CI}" ]]; then
|
|
fuzzers=$(find ./fuzzers -mindepth 1 -maxdepth 1 -type d)
|
|
backtrace_fuzzers=$(find ./fuzzers/backtrace_baby_fuzzers -mindepth 1 -maxdepth 1 -type d)
|
|
else
|
|
cargo build -p build_and_test_fuzzers
|
|
fuzzers=$(cargo run -p build_and_test_fuzzers -- "remotes/origin/main" "HEAD^")
|
|
backtrace_fuzzers=""
|
|
export PROFILE=dev
|
|
export PROFILE_DIR=debug
|
|
fi
|
|
|
|
fuzzers=$(echo "$fuzzers" | tr ' ' '\n')
|
|
backtrace_fuzzers=$(echo "$backtrace_fuzzers" | tr ' ' '\n')
|
|
|
|
libafl=$(pwd)
|
|
|
|
# build with a shared target dir for all fuzzers. this should speed up
|
|
# compilation a bit, and allows for easier artifact management (caching and
|
|
# cargo clean).
|
|
export CARGO_TARGET_DIR="$libafl/target"
|
|
mkdir -p "$CARGO_TARGET_DIR"
|
|
|
|
git submodule init && git submodule update
|
|
|
|
# override default profile settings for speed
|
|
# export RUSTFLAGS="-C prefer-dynamic"
|
|
for profile in DEV RELEASE; # loop for all profiles
|
|
do
|
|
export CARGO_PROFILE_"$profile"_OPT_LEVEL=z # optimize for size
|
|
# runs into shared target dir bug:
|
|
# [pid 351769] openat(AT_FDCWD, "LibAFL/target/release/deps/libc-dbff77a14da5d893.libc.5deb7d4a-cgu.0.rcgu.dwo", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
|
# error: failed to build archive: No such file or directory
|
|
# export CARGO_PROFILE_"$profile"_SPLIT_DEBUGINFO=unpacked # minimize debug info
|
|
# export CARGO_PROFILE_"$profile"_PANIC=abort
|
|
# export CARGO_PROFILE_"$profile"_INCREMENTAL=true
|
|
done
|
|
|
|
# shellcheck disable=SC2116
|
|
for fuzzer in $(echo "$fuzzers" "$backtrace_fuzzers");
|
|
do
|
|
# skip nyx test on non-linux platforms
|
|
if [[ $fuzzer == *"nyx_"* ]]; then
|
|
continue
|
|
fi
|
|
|
|
cd "$fuzzer" || exit 1
|
|
# Clippy checks
|
|
echo "[*] Checking fmt for $fuzzer"
|
|
cargo +nightly fmt --all || exit 1
|
|
|
|
if [ -e ./Makefile.toml ]; then
|
|
echo "[*] Building $fuzzer"
|
|
cargo make build || exit 1
|
|
echo "[+] Done building $fuzzer"
|
|
else
|
|
echo "[*] Building $fuzzer"
|
|
cargo build || exit 1
|
|
echo "[+] Done building $fuzzer"
|
|
fi
|
|
|
|
# no cleaning -- this is a local test, we want to cache here
|
|
cd "$libafl" || exit 1
|
|
echo ""
|
|
done
|