#!/bin/sh set -e fuzzer="$1" if [ -z "$fuzzer" ]; then echo usage: $0 fuzzer exit 1 fi # Rebuild the project with coverage enabled make distclean export CC=clang export CXX=clang++ export CFLAGS=" \ -O1 -gline-tables-only \ -fsanitize=fuzzer-no-link \ -fprofile-instr-generate -fcoverage-mapping \ -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION" sh autogen.sh --without-python make -j5 rm default.profraw # Process corpus once cd fuzz make $fuzzer ./$fuzzer -runs=1 corpus/$fuzzer # Generate HTML report llvm-profdata merge default.profraw -o default.profdata llvm-cov show -format=html -output-dir=report \ -instr-profile default.profdata \ ../.libs/libxml2.so rm default.profraw default.profdata