-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathMakefile
More file actions
56 lines (41 loc) · 2.35 KB
/
Copy pathMakefile
File metadata and controls
56 lines (41 loc) · 2.35 KB
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
AFL_CC ?= afl-clang-fast
LIBFUZZER_CC ?= clang
CFLAGS ?= -g
ARES_FLAGS ?= -Isrc/exec/ezld/include -g3
LIBFUZZER_FLAGS ?= $(ARES_FLAGS) -fsanitize=address -fsanitize=fuzzer
AFL_FLAGS ?= $(ARES_FLAGS) -O2 -fsanitize=address
EXEC_SRC = src/exec/core.c src/exec/emulate.c src/exec/callsan.c src/exec/dev.c
SRC = $(EXEC_SRC) src/exec/vendor/commander.c src/exec/cli.c src/exec/elf.c
AFLSRC = $(EXEC_SRC) src/exec/afl.c
FUZZER_SRC = $(EXEC_SRC) src/exec/libfuzzer.c
TEST_SRC = $(EXEC_SRC) src/test/test.c src/unity/src/unity.c
LIBEZLD = src/exec/ezld/bin/libezld.a
BIN_DIR = bin
TARGETS = $(BIN_DIR)/ares $(BIN_DIR)/ares_afl $(BIN_DIR)/ares_libfuzzer $(BIN_DIR)/ares_test
all: $(BIN_DIR)/ares
$(BIN_DIR):
mkdir -p $(BIN_DIR)
$(BIN_DIR)/ares: $(SRC) $(LIBEZLD) | $(BIN_DIR)
$(CC) $(CFLAGS) $(ARES_FLAGS) $(SRC) $(LIBEZLD) -o $@
$(BIN_DIR)/ares_afl: $(AFLSRC) $(LIBEZLD) | $(BIN_DIR)
$(AFL_CC) $(CFLAGS) $(AFL_FLAGS) $(AFLSRC) $(LIBEZLD) -o $@
$(BIN_DIR)/ares_libfuzzer: $(FUZZER_SRC) $(LIBEZLD) | $(BIN_DIR)
$(LIBFUZZER_CC) $(CFLAGS) $(LIBFUZZER_FLAGS) $(LIBEZLD) $(FUZZER_SRC) -o $@
src/test/test_main.c: $(TEST_SRC)
./src/test/gen_main.sh src/test/test.c > src/test/test_main.c
$(BIN_DIR)/ares_test: $(TEST_SRC) src/test/test_main.c $(LIBEZLD) | $(BIN_DIR)
$(CC) $(CFLAGS) $(ARES_FLAGS) $(TEST_SRC) src/test/test_main.c $(LIBEZLD) -o $@ -Isrc/unity/src
$(BIN_DIR)/ares_test_roundtrip: $(TEST_SRC) src/test/test_roundtrip.c $(LIBEZLD) | $(BIN_DIR)
$(CC) $(CFLAGS) $(ARES_FLAGS) $(TEST_SRC) src/test/test_roundtrip.c $(LIBEZLD) -o $@ -Isrc/unity/src -O3 -flto -g3 -fno-omit-frame-pointer -g3
$(BIN_DIR)/ares_test_cov: $(TEST_SRC) src/test/test_main.c $(LIBEZLD) | $(BIN_DIR)
clang $(CFLAGS) $(ARES_FLAGS) $(TEST_SRC) src/test/test_main.c $(LIBEZLD) -fprofile-instr-generate -fcoverage-mapping -o $@ -Isrc/unity/src
test_coverage: $(BIN_DIR)/ares_test_cov
LLVM_PROFILE_FILE="./$(BIN_DIR)/ares_test_cov.profraw" ./$(BIN_DIR)/ares_test_cov
llvm-profdata merge -output=./$(BIN_DIR)/ares_test_cov.profdata ./$(BIN_DIR)/ares_test_cov.profraw
llvm-cov export --format=lcov ./$(BIN_DIR)/ares_test_cov -instr-profile=./$(BIN_DIR)/ares_test_cov.profdata > lcov.info
$(LIBEZLD):
cd src/exec/ezld && make library
clean:
rm -f $(BIN_DIR)/ares $(BIN_DIR)/ares_afl $(BIN_DIR)/ares_libfuzzer $(BIN_DIR)/ares_test $(BIN_DIR)/ares_test_cov
cd src/exec/ezld && make clean
.PHONY: clean test_coverage all