git repos / blockattack-game

blame: source/misc/embedded_libs/fmt-11.0.2/test/fuzzing/build.sh

normal view · raw

f8deb5b9 Poul Sander 2022-01-15 13:55 1
#!/bin/sh
f8deb5b9 Poul Sander 2022-01-15 13:55 2
#
f8deb5b9 Poul Sander 2022-01-15 13:55 3
# Creates fuzzer builds of various kinds
f8deb5b9 Poul Sander 2022-01-15 13:55 4
# - oss-fuzz emulated mode (makes sure a simulated invocation by oss-fuzz works)
f8deb5b9 Poul Sander 2022-01-15 13:55 5
# - libFuzzer build (you will need clang)
f8deb5b9 Poul Sander 2022-01-15 13:55 6
# - afl build (you will need afl)
f8deb5b9 Poul Sander 2022-01-15 13:55 7
#
f8deb5b9 Poul Sander 2022-01-15 13:55 8
#
f8deb5b9 Poul Sander 2022-01-15 13:55 9
# Copyright (c) 2019 Paul Dreik
f8deb5b9 Poul Sander 2022-01-15 13:55 10
#
f8deb5b9 Poul Sander 2022-01-15 13:55 11
# For the license information refer to format.h.
f8deb5b9 Poul Sander 2022-01-15 13:55 12
f8deb5b9 Poul Sander 2022-01-15 13:55 13
set -e
f8deb5b9 Poul Sander 2022-01-15 13:55 14
me=$(basename $0)
f8deb5b9 Poul Sander 2022-01-15 13:55 15
root=$(readlink -f "$(dirname "$0")/../..")
f8deb5b9 Poul Sander 2022-01-15 13:55 16
f8deb5b9 Poul Sander 2022-01-15 13:55 17
f8deb5b9 Poul Sander 2022-01-15 13:55 18
echo $me: root=$root
f8deb5b9 Poul Sander 2022-01-15 13:55 19
f8deb5b9 Poul Sander 2022-01-15 13:55 20
here=$(pwd)
f8deb5b9 Poul Sander 2022-01-15 13:55 21
f8deb5b9 Poul Sander 2022-01-15 13:55 22
CXXFLAGSALL="-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION= -g"
f8deb5b9 Poul Sander 2022-01-15 13:55 23
CMAKEFLAGSALL="$root -GNinja -DCMAKE_BUILD_TYPE=Debug -DFMT_DOC=Off -DFMT_TEST=Off -DFMT_FUZZ=On -DCMAKE_CXX_STANDARD=17"
f8deb5b9 Poul Sander 2022-01-15 13:55 24
f8deb5b9 Poul Sander 2022-01-15 13:55 25
CLANG=clang++-11
f8deb5b9 Poul Sander 2022-01-15 13:55 26
f8deb5b9 Poul Sander 2022-01-15 13:55 27
# For performance analysis of the fuzzers.
f8deb5b9 Poul Sander 2022-01-15 13:55 28
builddir=$here/build-fuzzers-perfanalysis
f8deb5b9 Poul Sander 2022-01-15 13:55 29
mkdir -p $builddir
f8deb5b9 Poul Sander 2022-01-15 13:55 30
cd $builddir
f8deb5b9 Poul Sander 2022-01-15 13:55 31
CXX="ccache g++" CXXFLAGS="$CXXFLAGSALL -g" cmake \
f8deb5b9 Poul Sander 2022-01-15 13:55 32
$CMAKEFLAGSALL \
f8deb5b9 Poul Sander 2022-01-15 13:55 33
-DFMT_FUZZ_LINKMAIN=On \
f8deb5b9 Poul Sander 2022-01-15 13:55 34
-DCMAKE_BUILD_TYPE=Release
f8deb5b9 Poul Sander 2022-01-15 13:55 35
f8deb5b9 Poul Sander 2022-01-15 13:55 36
cmake --build $builddir
f8deb5b9 Poul Sander 2022-01-15 13:55 37
f8deb5b9 Poul Sander 2022-01-15 13:55 38
# Builds the fuzzers as oss-fuzz does.
f8deb5b9 Poul Sander 2022-01-15 13:55 39
builddir=$here/build-fuzzers-ossfuzz
f8deb5b9 Poul Sander 2022-01-15 13:55 40
mkdir -p $builddir
f8deb5b9 Poul Sander 2022-01-15 13:55 41
cd $builddir
f8deb5b9 Poul Sander 2022-01-15 13:55 42
CXX=$CLANG \
f8deb5b9 Poul Sander 2022-01-15 13:55 43
CXXFLAGS="$CXXFLAGSALL -fsanitize=fuzzer-no-link" cmake \
f8deb5b9 Poul Sander 2022-01-15 13:55 44
cmake $CMAKEFLAGSALL \
f8deb5b9 Poul Sander 2022-01-15 13:55 45
-DFMT_FUZZ_LINKMAIN=Off \
f8deb5b9 Poul Sander 2022-01-15 13:55 46
-DFMT_FUZZ_LDFLAGS="-fsanitize=fuzzer"
f8deb5b9 Poul Sander 2022-01-15 13:55 47
f8deb5b9 Poul Sander 2022-01-15 13:55 48
cmake --build $builddir
f8deb5b9 Poul Sander 2022-01-15 13:55 49
f8deb5b9 Poul Sander 2022-01-15 13:55 50
f8deb5b9 Poul Sander 2022-01-15 13:55 51
# Builds fuzzers for local fuzzing with libfuzzer with asan+usan.
f8deb5b9 Poul Sander 2022-01-15 13:55 52
builddir=$here/build-fuzzers-libfuzzer
f8deb5b9 Poul Sander 2022-01-15 13:55 53
mkdir -p $builddir
f8deb5b9 Poul Sander 2022-01-15 13:55 54
cd $builddir
f8deb5b9 Poul Sander 2022-01-15 13:55 55
CXX=$CLANG \
f8deb5b9 Poul Sander 2022-01-15 13:55 56
CXXFLAGS="$CXXFLAGSALL -fsanitize=fuzzer-no-link,address,undefined" cmake \
f8deb5b9 Poul Sander 2022-01-15 13:55 57
cmake $CMAKEFLAGSALL \
f8deb5b9 Poul Sander 2022-01-15 13:55 58
-DFMT_FUZZ_LINKMAIN=Off \
f8deb5b9 Poul Sander 2022-01-15 13:55 59
-DFMT_FUZZ_LDFLAGS="-fsanitize=fuzzer"
f8deb5b9 Poul Sander 2022-01-15 13:55 60
f8deb5b9 Poul Sander 2022-01-15 13:55 61
cmake --build $builddir
f8deb5b9 Poul Sander 2022-01-15 13:55 62
f8deb5b9 Poul Sander 2022-01-15 13:55 63
# Builds a fast fuzzer for making coverage fast.
f8deb5b9 Poul Sander 2022-01-15 13:55 64
builddir=$here/build-fuzzers-fast
f8deb5b9 Poul Sander 2022-01-15 13:55 65
mkdir -p $builddir
f8deb5b9 Poul Sander 2022-01-15 13:55 66
cd $builddir
f8deb5b9 Poul Sander 2022-01-15 13:55 67
CXX=$CLANG \
f8deb5b9 Poul Sander 2022-01-15 13:55 68
CXXFLAGS="$CXXFLAGSALL -fsanitize=fuzzer-no-link -O3" cmake \
f8deb5b9 Poul Sander 2022-01-15 13:55 69
cmake $CMAKEFLAGSALL \
f8deb5b9 Poul Sander 2022-01-15 13:55 70
-DFMT_FUZZ_LINKMAIN=Off \
f8deb5b9 Poul Sander 2022-01-15 13:55 71
-DFMT_FUZZ_LDFLAGS="-fsanitize=fuzzer" \
f8deb5b9 Poul Sander 2022-01-15 13:55 72
 -DCMAKE_BUILD_TYPE=Release
f8deb5b9 Poul Sander 2022-01-15 13:55 73
f8deb5b9 Poul Sander 2022-01-15 13:55 74
cmake --build $builddir
f8deb5b9 Poul Sander 2022-01-15 13:55 75
f8deb5b9 Poul Sander 2022-01-15 13:55 76
f8deb5b9 Poul Sander 2022-01-15 13:55 77
# Builds fuzzers for local fuzzing with afl.
f8deb5b9 Poul Sander 2022-01-15 13:55 78
builddir=$here/build-fuzzers-afl
f8deb5b9 Poul Sander 2022-01-15 13:55 79
mkdir -p $builddir
f8deb5b9 Poul Sander 2022-01-15 13:55 80
cd $builddir
f8deb5b9 Poul Sander 2022-01-15 13:55 81
CXX="afl-g++" \
f8deb5b9 Poul Sander 2022-01-15 13:55 82
CXXFLAGS="$CXXFLAGSALL -fsanitize=address,undefined" \
f8deb5b9 Poul Sander 2022-01-15 13:55 83
cmake $CMAKEFLAGSALL \
f8deb5b9 Poul Sander 2022-01-15 13:55 84
-DFMT_FUZZ_LINKMAIN=On
f8deb5b9 Poul Sander 2022-01-15 13:55 85
f8deb5b9 Poul Sander 2022-01-15 13:55 86
cmake --build $builddir
f8deb5b9 Poul Sander 2022-01-15 13:55 87
f8deb5b9 Poul Sander 2022-01-15 13:55 88
f8deb5b9 Poul Sander 2022-01-15 13:55 89
echo $me: all good
f8deb5b9 Poul Sander 2022-01-15 13:55 90
1970-01-01 00:00 91