@@ -6,6 +6,7 @@ Q1 = $(V:1=)
6
6
Q = $(Q1:0=@ )
7
7
ECHO1 = $(V:1=@ : )
8
8
ECHO = $(ECHO1:0=@ echo )
9
+ FUZZ_OUTPUT_DIR = $(shell pwd) /fuzz/output
9
10
10
11
SOEXT := $(shell ruby -e 'puts RbConfig::CONFIG["SOEXT"]')
11
12
@@ -42,6 +43,32 @@ build/static/%.o: src/%.c Makefile $(HEADERS)
42
43
$(Q ) mkdir -p $(@D )
43
44
$(Q ) $(CC ) $(DEBUG_FLAGS ) -DYP_STATIC $(CPPFLAGS ) $(CFLAGS ) -c -o $@ $<
44
45
46
+ build/fuzz.% : $(SOURCES ) fuzz/% .c fuzz/fuzz.c
47
+ $(ECHO ) " building $* fuzzer"
48
+ $(ECHO ) " building main fuzz binary"
49
+ $(Q ) AFL_HARDEN=1 afl-clang-lto $(DEBUG_FLAGS ) $(CPPFLAGS ) $(CFLAGS ) $(FUZZ_FLAGS ) -O0 -fsanitize-ignorelist=fuzz/asan.ignore -fsanitize=fuzzer,address -ggdb3 -std=c99 -Iinclude -o $@ $^
50
+ $(ECHO ) " building cmplog binary"
51
+ $(Q ) AFL_HARDEN=1 AFL_LLVM_CMPLOG=1 afl-clang-lto $(DEBUG_FLAGS ) $(CPPFLAGS ) $(CFLAGS ) $(FUZZ_FLAGS ) -O0 -fsanitize-ignorelist=fuzz/asan.ignore -fsanitize=fuzzer,address -ggdb3 -std=c99 -Iinclude -o $@ .cmplog $^
52
+
53
+ build/fuzz.heisenbug.% : $(SOURCES ) fuzz/% .c fuzz/heisenbug.c
54
+ $(Q ) AFL_HARDEN=1 afl-clang-lto $(DEBUG_FLAGS ) $(CPPFLAGS ) $(CFLAGS ) $(FUZZ_FLAGS ) -O0 -fsanitize-ignorelist=fuzz/asan.ignore -fsanitize=fuzzer,address -ggdb3 -std=c99 -Iinclude -o $@ $^
55
+
56
+ fuzz-debug :
57
+ $(ECHO ) " entering debug shell"
58
+ $(Q ) docker run -it --rm -e HISTFILE=/yarp/fuzz/output/.bash_history -v $(shell pwd) :/yarp -v $(FUZZ_OUTPUT_DIR ) :/fuzz_output yarp/fuzz
59
+
60
+ fuzz-docker-build : fuzz/docker/Dockerfile
61
+ $(ECHO ) " building docker image"
62
+ $(Q ) docker build -t yarp/fuzz fuzz/docker/
63
+
64
+ fuzz-run-% : FORCE fuzz-docker-build
65
+ $(ECHO ) " running $* fuzzer"
66
+ $(Q ) docker run --rm -v $(shell pwd) :/yarp yarp/fuzz /bin/bash -c " FUZZ_FLAGS=\" $( FUZZ_FLAGS) \" make build/fuzz.$* "
67
+ $(ECHO ) " starting AFL++ run"
68
+ $(Q ) mkdir -p $(FUZZ_OUTPUT_DIR ) /$*
69
+ $(Q ) docker run -it --rm -v $(shell pwd) :/yarp -v $(FUZZ_OUTPUT_DIR ) :/fuzz_output yarp/fuzz /bin/bash -c " ./fuzz/$* .sh /fuzz_output/$* "
70
+ FORCE :
71
+
45
72
clean :
46
73
$(Q ) rm -f -r build
47
74
0 commit comments