Skip to content

Commit 8c1d734

Browse files
committed
Improve fuzzer's coverage
1 parent 7e07380 commit 8c1d734

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

tests/sphincsplus/fuzzer/Makefile

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ CC=clang
44
LLVM_PROFDATA=llvm-profdata
55
LLVM_COV=llvm-cov
66

7-
NPROC?=30
7+
NPROC?=16
88

99
SOURCES_DIR = ref
10+
COVERAGE_DIR=coverage
11+
CORPUS_DIR=corpus
1012

1113
SOURCES = \
1214
../../../c/$(SOURCES_DIR)/params.c \
@@ -73,6 +75,8 @@ ifeq ($(OS),MacOS)
7375
COVERAGE_FLAGS+=-Wl,-U,_LLVMFuzzerCustomMutator -Wl,-U,_LLVMFuzzerInitialize
7476
endif
7577

78+
EXTERNAL_HEADERS=../../../deps/ckb-c-stdlib-20210801/ckb_exec.h
79+
7680
all: build/fuzzer build/cover
7781

7882
build/fuzzer: sphincs_plus_fuzzer.c $(SOURCES) $(HEADERS)
@@ -83,8 +87,23 @@ build/cover: sphincs_plus_cover.c sphincs_plus_fuzzer.c $(SOURCES) $(HEADERS)
8387
$(CC) $(COVERAGE_FLAGS) -o $@ $(SOURCES) $< sphincs_plus_fuzzer.c
8488

8589
start-fuzzer: build/fuzzer
86-
mkdir -p build/corpus
87-
cd build && ./fuzzer -max_len=8000000 -jobs=$(NPROC) corpus
90+
cd build && mkdir -p $(CORPUS_DIR)
91+
cd build && ./fuzzer -max_len=8000000 -jobs=$(NPROC) $(CORPUS_DIR)
92+
93+
show: build/$(COVERAGE_DIR)/fuzzer.profdata
94+
cd build && mkdir -p $(COVERAGE_DIR)
95+
cd build && $(LLVM_COV) show --instr-profile=$(COVERAGE_DIR)/fuzzer.profdata cover
96+
97+
report: build/$(COVERAGE_DIR)/fuzzer.profdata build/cover $(EXTERNAL_HEADERS)
98+
$(LLVM_COV) report --show-functions --instr-profile=$(COVERAGE_DIR)/fuzzer.profdata build/cover $(EXTERNAL_HEADERS)
99+
100+
%.profraw: build/cover
101+
LLVM_PROFILE_FILE=$@ build/cover build/$(CORPUS_DIR)/*
102+
103+
%.profdata: %.profraw
104+
$(LLVM_PROFDATA) merge --sparse $< -o $@
105+
106+
.PRECIOUS: build/$(COVERAGE_DIR)/fuzzer.profraw build/$(COVERAGE_DIR)/fuzzer.profdata
88107

89108
clean:
90109
rm -rf build/*

0 commit comments

Comments
 (0)