Skip to content

Commit bdc2644

Browse files
committed
Merge #18107: build: Add cov_fuzz target
faf7d4f build: Add cov_fuzz target (MarcoFalke) fac71e3 build: link fuzz/test_runner.py for out-of-tree builds (MarcoFalke) faf2c5a build: Remove unused USE_COVERAGE (MarcoFalke) Pull request description: Only libFuzzer is supported right now, so clang is required. Thus, this needs a workaround such as bitcoin/bitcoin#12602 (comment) Can be tested with: ``` mkdir build && cd build ../configure --enable-fuzz --with-sanitizers=fuzzer --enable-lcov --enable-lcov-branch-coverage CC=clang CXX=clang++ make $MAKEJOBS make cov_fuzz ACKs for top commit: practicalswift: ACK faf7d4f Tree-SHA512: 6828f8f81d95f6781713d0b09d7eba2ffdb50217e09ca839db61791a4ed70024859c7a0cb01d9eede79166d574dd57ece01f9d9fe2610d4a72a4ca4a4ce0b838
2 parents 7eed413 + faf7d4f commit bdc2644

File tree

3 files changed

+21
-6
lines changed

3 files changed

+21
-6
lines changed

Makefile.am

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_FANCY_PLIST) $(OSX_INSTALLER_ICONS) \
6868
COVERAGE_INFO = baseline.info \
6969
test_bitcoin_filtered.info total_coverage.info \
7070
baseline_filtered.info functional_test.info functional_test_filtered.info \
71-
test_bitcoin_coverage.info test_bitcoin.info
71+
test_bitcoin_coverage.info test_bitcoin.info fuzz.info fuzz_coverage.info
7272

7373
dist-hook:
7474
-$(GIT) archive --format=tar HEAD -- src/clientversion.cpp | $(AMTAR) -C $(top_distdir) -xf -
@@ -199,6 +199,15 @@ baseline_filtered.info: baseline.info
199199
$(abs_builddir)/contrib/filter-lcov.py $(LCOV_FILTER_PATTERN) $< $@
200200
$(LCOV) -a $@ $(LCOV_OPTS) -o $@
201201

202+
fuzz.info: baseline_filtered.info
203+
@TIMEOUT=15 test/fuzz/test_runner.py qa-assets/fuzz_seed_corpus -l DEBUG
204+
$(LCOV) -c $(LCOV_OPTS) -d $(abs_builddir)/src --t fuzz-tests -o $@
205+
$(LCOV) -z $(LCOV_OPTS) -d $(abs_builddir)/src
206+
207+
fuzz_filtered.info: fuzz.info
208+
$(abs_builddir)/contrib/filter-lcov.py $(LCOV_FILTER_PATTERN) $< $@
209+
$(LCOV) -a $@ $(LCOV_OPTS) -o $@
210+
202211
test_bitcoin.info: baseline_filtered.info
203212
$(MAKE) -C src/ check
204213
$(LCOV) -c $(LCOV_OPTS) -d $(abs_builddir)/src -t test_bitcoin -o $@
@@ -217,12 +226,19 @@ functional_test_filtered.info: functional_test.info
217226
$(abs_builddir)/contrib/filter-lcov.py $(LCOV_FILTER_PATTERN) $< $@
218227
$(LCOV) -a $@ $(LCOV_OPTS) -o $@
219228

229+
fuzz_coverage.info: fuzz_filtered.info
230+
$(LCOV) -a $(LCOV_OPTS) baseline_filtered.info -a fuzz_filtered.info -o $@ | $(GREP) "\%" | $(AWK) '{ print substr($$3,2,50) "/" $$5 }' > coverage_percent.txt
231+
220232
test_bitcoin_coverage.info: baseline_filtered.info test_bitcoin_filtered.info
221233
$(LCOV) -a $(LCOV_OPTS) baseline_filtered.info -a test_bitcoin_filtered.info -o $@
222234

223235
total_coverage.info: test_bitcoin_filtered.info functional_test_filtered.info
224236
$(LCOV) -a $(LCOV_OPTS) baseline_filtered.info -a test_bitcoin_filtered.info -a functional_test_filtered.info -o $@ | $(GREP) "\%" | $(AWK) '{ print substr($$3,2,50) "/" $$5 }' > coverage_percent.txt
225237

238+
fuzz.coverage/.dirstamp: fuzz_coverage.info
239+
$(GENHTML) -s $(LCOV_OPTS) $< -o $(@D)
240+
@touch $@
241+
226242
test_bitcoin.coverage/.dirstamp: test_bitcoin_coverage.info
227243
$(GENHTML) -s $(LCOV_OPTS) $< -o $(@D)
228244
@touch $@
@@ -231,6 +247,8 @@ total.coverage/.dirstamp: total_coverage.info
231247
$(GENHTML) -s $(LCOV_OPTS) $< -o $(@D)
232248
@touch $@
233249

250+
cov_fuzz: fuzz.coverage/.dirstamp
251+
234252
cov: test_bitcoin.coverage/.dirstamp total.coverage/.dirstamp
235253

236254
endif
@@ -321,6 +339,6 @@ clean-docs:
321339
rm -rf doc/doxygen
322340

323341
clean-local: clean-docs
324-
rm -rf coverage_percent.txt test_bitcoin.coverage/ total.coverage/ test/tmp/ cache/ $(OSX_APP)
342+
rm -rf coverage_percent.txt test_bitcoin.coverage/ total.coverage/ fuzz.coverage/ test/tmp/ cache/ $(OSX_APP)
325343
rm -rf test/functional/__pycache__ test/functional/test_framework/__pycache__ test/cache share/rpcauth/__pycache__
326344
rm -rf osx_volname dist/ dpi36.background.tiff dpi72.background.tiff

build_msvc/bitcoin_config.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -304,9 +304,6 @@
304304
/* Define this symbol to build in assembly routines */
305305
//#define USE_ASM 1
306306

307-
/* Define this symbol if coverage is enabled */
308-
/* #undef USE_COVERAGE */
309-
310307
/* Define if dbus support should be compiled in */
311308
/* #undef USE_DBUS */
312309

configure.ac

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -649,7 +649,6 @@ if test x$use_lcov = xyes; then
649649
[AC_MSG_ERROR("lcov testing requested but --coverage linker flag does not work")])
650650
AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage"],
651651
[AC_MSG_ERROR("lcov testing requested but --coverage flag does not work")])
652-
AC_DEFINE(USE_COVERAGE, 1, [Define this symbol if coverage is enabled])
653652
CXXFLAGS="$CXXFLAGS -Og"
654653
fi
655654

@@ -1609,6 +1608,7 @@ AC_CONFIG_FILES([contrib/devtools/split-debug.sh],[chmod +x contrib/devtools/spl
16091608
AM_COND_IF([HAVE_DOXYGEN], [AC_CONFIG_FILES([doc/Doxyfile])])
16101609
AC_CONFIG_LINKS([contrib/filter-lcov.py:contrib/filter-lcov.py])
16111610
AC_CONFIG_LINKS([test/functional/test_runner.py:test/functional/test_runner.py])
1611+
AC_CONFIG_LINKS([test/fuzz/test_runner.py:test/fuzz/test_runner.py])
16121612
AC_CONFIG_LINKS([test/util/bitcoin-util-test.py:test/util/bitcoin-util-test.py])
16131613
AC_CONFIG_LINKS([test/util/rpcauth-test.py:test/util/rpcauth-test.py])
16141614

0 commit comments

Comments
 (0)