| 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 |
|