mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-17 04:18:06 +00:00
add our own inline trace-pc-guard
This commit is contained in:
@ -297,7 +297,7 @@ ifeq "$(TEST_MMAP)" "1"
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
PROGS_ALWAYS = ./afl-cc ./afl-compiler-rt.o ./afl-compiler-rt-32.o ./afl-compiler-rt-64.o
|
PROGS_ALWAYS = ./afl-cc ./afl-compiler-rt.o ./afl-compiler-rt-32.o ./afl-compiler-rt-64.o
|
||||||
PROGS = $(PROGS_ALWAYS) ./afl-llvm-pass.so ./split-compares-pass.so ./split-switches-pass.so ./cmplog-routines-pass.so ./cmplog-instructions-pass.so ./afl-llvm-dict2file.so ./compare-transform-pass.so ./libLLVMInsTrim.so ./afl-ld-lto ./afl-llvm-lto-instrumentlist.so ./afl-llvm-lto-instrumentation.so ./SanitizerCoverageLTO.so
|
PROGS = $(PROGS_ALWAYS) ./afl-llvm-pass.so ./SanitizerCoveragePCGUARD.so ./split-compares-pass.so ./split-switches-pass.so ./cmplog-routines-pass.so ./cmplog-instructions-pass.so ./afl-llvm-dict2file.so ./compare-transform-pass.so ./libLLVMInsTrim.so ./afl-ld-lto ./afl-llvm-lto-instrumentlist.so ./afl-llvm-lto-instrumentation.so ./SanitizerCoverageLTO.so
|
||||||
|
|
||||||
# If prerequisites are not given, warn, do not build anything, and exit with code 0
|
# If prerequisites are not given, warn, do not build anything, and exit with code 0
|
||||||
ifeq "$(LLVMVER)" ""
|
ifeq "$(LLVMVER)" ""
|
||||||
@ -382,6 +382,9 @@ ifeq "$(LLVM_MIN_4_0_1)" "0"
|
|||||||
endif
|
endif
|
||||||
$(CXX) $(CLANG_CPPFL) -DLLVMInsTrim_EXPORTS -fno-rtti -fPIC -std=$(LLVM_STDCXX) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o
|
$(CXX) $(CLANG_CPPFL) -DLLVMInsTrim_EXPORTS -fno-rtti -fPIC -std=$(LLVM_STDCXX) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o
|
||||||
|
|
||||||
|
./SanitizerCoveragePCGUARD.so: instrumentation/SanitizerCoveragePCGUARD.so.cc instrumentation/afl-llvm-common.o | test_deps
|
||||||
|
$(CXX) $(CLANG_CPPFL) -fno-rtti -fPIC -std=$(LLVM_STDCXX) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o
|
||||||
|
|
||||||
./afl-llvm-lto-instrumentlist.so: instrumentation/afl-llvm-lto-instrumentlist.so.cc instrumentation/afl-llvm-common.o
|
./afl-llvm-lto-instrumentlist.so: instrumentation/afl-llvm-lto-instrumentlist.so.cc instrumentation/afl-llvm-common.o
|
||||||
ifeq "$(LLVM_LTO)" "1"
|
ifeq "$(LLVM_LTO)" "1"
|
||||||
$(CXX) $(CLANG_CPPFL) -fno-rtti -fPIC -std=$(LLVM_STDCXX) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o
|
$(CXX) $(CLANG_CPPFL) -fno-rtti -fPIC -std=$(LLVM_STDCXX) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o
|
||||||
|
@ -40,6 +40,9 @@ sending a mail to <afl-users+subscribe@googlegroups.com>.
|
|||||||
- We received an enhanced gcc_plugin module from AdaCore, thank you
|
- We received an enhanced gcc_plugin module from AdaCore, thank you
|
||||||
very much!!
|
very much!!
|
||||||
- not overriding -Ox or -fno-unroll-loops anymore
|
- not overriding -Ox or -fno-unroll-loops anymore
|
||||||
|
- we now have our own trace-pc-guard implementation. It is the same as
|
||||||
|
-fsanitize-coverage=trace-pc-guard from llvm 12, but: it is a) inline
|
||||||
|
and b) works from llvm 10+ on :)
|
||||||
- new llvm pass: dict2file via AFL_LLVM_DICT2FILE, create afl-fuzz
|
- new llvm pass: dict2file via AFL_LLVM_DICT2FILE, create afl-fuzz
|
||||||
-x dictionary of string comparisons found during compilation
|
-x dictionary of string comparisons found during compilation
|
||||||
- LTO autodict now also collects interesting cmp comparisons,
|
- LTO autodict now also collects interesting cmp comparisons,
|
||||||
|
1331
instrumentation/SanitizerCoveragePCGUARD.so.cc
Normal file
1331
instrumentation/SanitizerCoveragePCGUARD.so.cc
Normal file
File diff suppressed because it is too large
Load Diff
15
src/afl-cc.c
15
src/afl-cc.c
@ -501,11 +501,22 @@ static void edit_params(u32 argc, char **argv, char **envp) {
|
|||||||
|
|
||||||
if (instrument_mode == INSTRUMENT_PCGUARD) {
|
if (instrument_mode == INSTRUMENT_PCGUARD) {
|
||||||
|
|
||||||
#if LLVM_MAJOR >= 4
|
#if LLVM_MAJOR >= 10
|
||||||
|
cc_params[cc_par_cnt++] = "-Xclang";
|
||||||
|
cc_params[cc_par_cnt++] = "-load";
|
||||||
|
cc_params[cc_par_cnt++] = "-Xclang";
|
||||||
cc_params[cc_par_cnt++] =
|
cc_params[cc_par_cnt++] =
|
||||||
"-fsanitize-coverage=trace-pc-guard"; // edge coverage by default
|
alloc_printf("%s/SanitizerCoveragePCGUARD.so", obj_path);
|
||||||
#else
|
#else
|
||||||
|
#if LLVM_MAJOR >= 4
|
||||||
|
if (!be_quiet)
|
||||||
|
SAYF(
|
||||||
|
"Using unoptimized trace-pc-guard, upgrade to llvm 10+ for "
|
||||||
|
"enhanced version.\n");
|
||||||
|
cc_params[cc_par_cnt++] = "-fsanitize-coverage=trace-pc-guard";
|
||||||
|
#else
|
||||||
FATAL("pcguard instrumentation requires llvm 4.0.1+");
|
FATAL("pcguard instrumentation requires llvm 4.0.1+");
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user