mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-29 14:59:39 -04:00
build: turn on --enable-c++17 by --enable-fuzz
Fuzzing code uses C++17 specific code (e.g. std::optional), so it is not possible to compile with --enable-fuzz and without --enable-c++17. Thus, turn on --enable-c++17 whenever --enable-fuzz is used.
This commit is contained in:
parent
01b45b2e01
commit
0012471391
4 changed files with 7 additions and 7 deletions
|
@ -14,4 +14,4 @@ export RUN_UNIT_TESTS=false
|
||||||
export RUN_FUNCTIONAL_TESTS=false
|
export RUN_FUNCTIONAL_TESTS=false
|
||||||
export RUN_FUZZ_TESTS=true
|
export RUN_FUZZ_TESTS=true
|
||||||
export GOAL="install"
|
export GOAL="install"
|
||||||
export BITCOIN_CONFIG="--enable-fuzz --with-sanitizers=fuzzer,address,undefined --enable-c++17 CC=clang CXX=clang++"
|
export BITCOIN_CONFIG="--enable-fuzz --with-sanitizers=fuzzer,address,undefined CC=clang CXX=clang++"
|
||||||
|
|
|
@ -15,4 +15,4 @@ export RUN_FUNCTIONAL_TESTS=false
|
||||||
export RUN_FUZZ_TESTS=true
|
export RUN_FUZZ_TESTS=true
|
||||||
export FUZZ_TESTS_CONFIG="--valgrind"
|
export FUZZ_TESTS_CONFIG="--valgrind"
|
||||||
export GOAL="install"
|
export GOAL="install"
|
||||||
export BITCOIN_CONFIG="--enable-fuzz --with-sanitizers=fuzzer --enable-c++17 CC=clang CXX=clang++"
|
export BITCOIN_CONFIG="--enable-fuzz --with-sanitizers=fuzzer CC=clang CXX=clang++"
|
||||||
|
|
|
@ -69,7 +69,7 @@ AC_ARG_ENABLE([c++17],
|
||||||
[use_cxx17=no])
|
[use_cxx17=no])
|
||||||
|
|
||||||
dnl Require C++11 or C++17 compiler (no GNU extensions)
|
dnl Require C++11 or C++17 compiler (no GNU extensions)
|
||||||
if test "x$use_cxx17" = xyes; then
|
if test "x$use_cxx17" = xyes -o "x$enable_fuzz" = xyes ; then
|
||||||
AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory])
|
AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory])
|
||||||
else
|
else
|
||||||
AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory])
|
AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory])
|
||||||
|
|
|
@ -8,7 +8,7 @@ To quickly get started fuzzing Bitcoin Core using [libFuzzer](https://llvm.org/d
|
||||||
$ git clone https://github.com/bitcoin/bitcoin
|
$ git clone https://github.com/bitcoin/bitcoin
|
||||||
$ cd bitcoin/
|
$ cd bitcoin/
|
||||||
$ ./autogen.sh
|
$ ./autogen.sh
|
||||||
$ CC=clang CXX=clang++ ./configure --enable-fuzz --with-sanitizers=address,fuzzer,undefined --enable-c++17
|
$ CC=clang CXX=clang++ ./configure --enable-fuzz --with-sanitizers=address,fuzzer,undefined
|
||||||
# macOS users: If you have problem with this step then make sure to read "macOS hints for
|
# macOS users: If you have problem with this step then make sure to read "macOS hints for
|
||||||
# libFuzzer" on https://github.com/bitcoin/bitcoin/blob/master/doc/fuzzing.md#macos-hints-for-libfuzzer
|
# libFuzzer" on https://github.com/bitcoin/bitcoin/blob/master/doc/fuzzing.md#macos-hints-for-libfuzzer
|
||||||
$ make
|
$ make
|
||||||
|
@ -103,7 +103,7 @@ You may also need to take care of giving the correct path for `clang` and
|
||||||
Full configure that was tested on macOS Catalina with `brew` installed `llvm`:
|
Full configure that was tested on macOS Catalina with `brew` installed `llvm`:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./configure --enable-fuzz --with-sanitizers=fuzzer,address,undefined CC=/usr/local/opt/llvm/bin/clang CXX=/usr/local/opt/llvm/bin/clang++ --disable-asm --enable-c++17
|
./configure --enable-fuzz --with-sanitizers=fuzzer,address,undefined CC=/usr/local/opt/llvm/bin/clang CXX=/usr/local/opt/llvm/bin/clang++ --disable-asm
|
||||||
```
|
```
|
||||||
|
|
||||||
Read the [libFuzzer documentation](https://llvm.org/docs/LibFuzzer.html) for more information. This [libFuzzer tutorial](https://github.com/google/fuzzing/blob/master/tutorial/libFuzzerTutorial.md) might also be of interest.
|
Read the [libFuzzer documentation](https://llvm.org/docs/LibFuzzer.html) for more information. This [libFuzzer tutorial](https://github.com/google/fuzzing/blob/master/tutorial/libFuzzerTutorial.md) might also be of interest.
|
||||||
|
@ -121,7 +121,7 @@ $ git clone https://github.com/google/afl
|
||||||
$ make -C afl/
|
$ make -C afl/
|
||||||
$ make -C afl/llvm_mode/
|
$ make -C afl/llvm_mode/
|
||||||
$ ./autogen.sh
|
$ ./autogen.sh
|
||||||
$ CC=$(pwd)/afl/afl-clang-fast CXX=$(pwd)/afl/afl-clang-fast++ ./configure --enable-fuzz --enable-c++17
|
$ CC=$(pwd)/afl/afl-clang-fast CXX=$(pwd)/afl/afl-clang-fast++ ./configure --enable-fuzz
|
||||||
$ make
|
$ make
|
||||||
# For macOS you may need to ignore x86 compilation checks when running "make". If so,
|
# For macOS you may need to ignore x86 compilation checks when running "make". If so,
|
||||||
# try compiling using: AFL_NO_X86=1 make
|
# try compiling using: AFL_NO_X86=1 make
|
||||||
|
@ -148,7 +148,7 @@ $ git clone https://github.com/google/honggfuzz
|
||||||
$ cd honggfuzz/
|
$ cd honggfuzz/
|
||||||
$ make
|
$ make
|
||||||
$ cd ..
|
$ cd ..
|
||||||
$ CC=$(pwd)/honggfuzz/hfuzz_cc/hfuzz-clang CXX=$(pwd)/honggfuzz/hfuzz_cc/hfuzz-clang++ ./configure --enable-fuzz --with-sanitizers=address,undefined --enable-c++17
|
$ CC=$(pwd)/honggfuzz/hfuzz_cc/hfuzz-clang CXX=$(pwd)/honggfuzz/hfuzz_cc/hfuzz-clang++ ./configure --enable-fuzz --with-sanitizers=address,undefined
|
||||||
$ make
|
$ make
|
||||||
$ mkdir -p inputs/
|
$ mkdir -p inputs/
|
||||||
$ honggfuzz/honggfuzz -i inputs/ -- src/test/fuzz/process_message
|
$ honggfuzz/honggfuzz -i inputs/ -- src/test/fuzz/process_message
|
||||||
|
|
Loading…
Add table
Reference in a new issue