@@ -37,34 +37,35 @@ export LDFLAGS="-flto=thin"
37
37
38
38
if [ " $ARCHITECTURE " = " i386" ]; then
39
39
# Temporary workaround for building sqlite for 32-bit. Due to https://github.com/google/oss-fuzz/pull/10466#issuecomment-1576658462
40
- export FIX_32BIT=" -m32"
40
+ export FIX_32BIT=" -m32"
41
41
fi
42
42
43
- export CPPFLAGS=" -DBOOST_MULTI_INDEX_ENABLE_SAFE_MODE ${FIX_32BIT :- } "
43
+ export CPPFLAGS=" -DBOOST_MULTI_INDEX_ENABLE_SAFE_MODE"
44
44
45
45
(
46
46
cd depends
47
47
sed -i --regexp-extended ' /.*rm -rf .*extract_dir.*/d' ./funcs.mk # Keep extracted source
48
48
make HOST=$BUILD_TRIPLET DEBUG=1 NO_QT=1 NO_BDB=1 NO_ZMQ=1 NO_UPNP=1 NO_NATPMP=1 NO_USDT=1 \
49
49
AR=llvm-ar NM=llvm-nm RANLIB=llvm-ranlib STRIP=llvm-strip \
50
- CPPFLAGS=" $CPPFLAGS " CXXFLAGS=" $CXXFLAGS " LDFLAGS=" $LDFLAGS " -j$( nproc)
50
+ CC= " $CC ${FIX_32BIT :- } " CXX= " $CXX ${FIX_32BIT :- } " CPPFLAGS=" $CPPFLAGS " CXXFLAGS=" $CXXFLAGS " LDFLAGS=" $LDFLAGS " -j$( nproc)
51
51
)
52
52
53
53
# Build the fuzz targets
54
54
55
- sed -i " s|PROVIDE_FUZZ_MAIN_FUNCTION|NEVER_PROVIDE_MAIN_FOR_OSS_FUZZ|g" " ./configure.ac"
56
- ./autogen.sh
55
+ sed -i " s|PROVIDE_FUZZ_MAIN_FUNCTION|NEVER_PROVIDE_MAIN_FOR_OSS_FUZZ|g" " ./src/test/fuzz/util/CMakeLists.txt"
56
+ mkdir build
57
+ cd build
57
58
58
59
# OSS-Fuzz will provide CC, CXX, etc. So only set:
59
- # * --enable-fuzz , see https://github.com/bitcoin/bitcoin/blob/master/doc/fuzzing.md
60
- # * CONFIG_SITE , see https://github.com/bitcoin/bitcoin/blob/master/depends/README.md
60
+ # * -DFUZZ=ON , see https://github.com/bitcoin/bitcoin/blob/master/doc/fuzzing.md
61
+ # * --toolchain , see https://github.com/bitcoin/bitcoin/blob/master/depends/README.md
61
62
if [ " $SANITIZER " = " memory" ]; then
62
- CONFIG_SITE= " $PWD / depends/$BUILD_TRIPLET /share/config.site " ./configure --enable-fuzz SANITIZER_LDFLAGS =" $LIB_FUZZING_ENGINE " --disable-hardening --with-asm=no
63
+ cmake -S .. --toolchain depends/${ BUILD_TRIPLET} /share/toolchain.cmake -DCMAKE_BUILD_TYPE=None -DFUZZ=ON -DSANITIZER_LDFLAGS =" $LIB_FUZZING_ENGINE " -DHARDENING=OFF -DASM=OFF
63
64
else
64
- CONFIG_SITE= " $PWD / depends/$BUILD_TRIPLET /share/config.site " ./configure --enable-fuzz SANITIZER_LDFLAGS =" $LIB_FUZZING_ENGINE "
65
+ cmake -S .. --toolchain depends/${ BUILD_TRIPLET} /share/toolchain.cmake -DCMAKE_BUILD_TYPE=None -DFUZZ=ON -DSANITIZER_LDFLAGS =" $LIB_FUZZING_ENGINE "
65
66
fi
66
67
67
- make -j$( nproc)
68
+ cmake --build . -j$( nproc)
68
69
69
70
WRITE_ALL_FUZZ_TARGETS_AND_ABORT=" /tmp/a" " ./src/test/fuzz/fuzz" || true
70
71
readarray FUZZ_TARGETS < " /tmp/a"
81
82
# replace the string in the source code and re-invoke 'make'. This is slower,
82
83
# so use the hack.
83
84
export MAGIC_STR=" b5813eee2abc9d3358151f298b75a72264ffa119d2f71ae7fefa15c4b70b4bc5b38e87e3107a730f25891ea428b2b4fabe7a84f5bfa73c79e0479e085e4ff157"
84
- sed -i " s|std::getenv(\" FUZZ\" )|\" $MAGIC_STR \" |g" " ./src/test/fuzz/fuzz.cpp"
85
+ sed -i " s|std::getenv(\" FUZZ\" )|\" $MAGIC_STR \" |g" " .. /src/test/fuzz/fuzz.cpp"
85
86
make -j$( nproc)
86
87
87
88
# Replace the magic string with the actual name of each fuzz target
@@ -90,11 +91,11 @@ for fuzz_target in ${FUZZ_TARGETS[@]}; do
90
91
91
92
chmod +x " $OUT /$fuzz_target "
92
93
(
93
- cd assets/fuzz_seed_corpus
94
+ cd ../ assets/fuzz_seed_corpus
94
95
if [ -d " $fuzz_target " ]; then
95
96
zip --recurse-paths --quiet --junk-paths " $OUT /${fuzz_target} _seed_corpus.zip" " ${fuzz_target} "
96
97
fi
97
98
)
98
99
done
99
100
100
- cp assets/fuzz_dicts/* .dict $OUT /
101
+ cp ../ assets/fuzz_dicts/* .dict $OUT /
0 commit comments