-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
35 lines (26 loc) · 1.02 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
CXX := clang++
CXXFLAGS := -fno-exceptions -Werror -Wall -fno-omit-frame-pointer -Wstring-conversion -DNDEBUG -fprofile-instr-generate -fcoverage-mapping -fsanitize=address -g
all: fuzzer
fuzzer: fuzzer.o message.pb.o
$(CXX) $(CXXFLAGS) -fsanitize=fuzzer -o fuzzer \
-Wl,-rpath,/usr/local/lib fuzzer.o message.pb.o \
-L/usr/local/lib -lprotobuf-mutator-libfuzzer -lprotobuf-mutator -lprotobuf -pthread
fuzzer.o: message.pb.h
$(CXX) $(CXXFLAGS) -fsanitize=fuzzer-no-link -std=gnu++11 \
-I/usr/local/include/libprotobuf-mutator -I. \
-c main.cc -o fuzzer.o
message.pb.o: message.pb.cc
$(CXX) $(CXXFLAGS) -fsanitize-coverage=0 -std=gnu++11 -fno-coverage-mapping \
-I. \
-c message.pb.cc
message.pb.h message.pb.cc:
protoc --cpp_out=. message.proto
run: fuzzer
./fuzzer -runs=500000
coverage: fuzzer
./fuzzer -runs=50000
llvm-profdata merge -sparse default.profraw -o default.profdata
llvm-cov show ./fuzzer -instr-profile=default.profdata
.PHONY: clean
clean:
rm fuzzer default.* *.o *.pb.*