diff options
-rw-r--r-- | GNUmakefile | 2 | ||||
-rw-r--r-- | GNUmakefile.llvm | 10 | ||||
-rw-r--r-- | TODO.md | 1 | ||||
-rw-r--r-- | docs/Changelog.md | 1 | ||||
-rw-r--r-- | src/afl-fuzz-state.c | 1 |
5 files changed, 12 insertions, 3 deletions
diff --git a/GNUmakefile b/GNUmakefile index 8b09c51a..072bd09d 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -387,7 +387,7 @@ test_x86: @echo "[*] Testing the PATH environment variable..." @test "$${PATH}" != "$${PATH#.:}" && { echo "Please remove current directory '.' from PATH to avoid recursion of 'as', thanks!"; echo; exit 1; } || : @echo "[*] Checking for the ability to compile x86 code..." - @echo 'main() { __asm__("xorb %al, %al"); }' | $(CC) $(CFLAGS) $(LDFLAGS) -w -x c - -o .test1 || ( echo; echo "Oops, looks like your compiler can't generate x86 code."; echo; echo "Don't panic! You can use the LLVM or QEMU mode, but see docs/INSTALL first."; echo "(To ignore this error, set AFL_NO_X86=1 and try again.)"; echo; exit 1 ) + @echo 'int main() { __asm__("xorb %al, %al"); }' | $(CC) $(CFLAGS) $(LDFLAGS) -w -x c - -o .test1 || ( echo; echo "Oops, looks like your compiler can't generate x86 code."; echo; echo "Don't panic! You can use the LLVM or QEMU mode, but see docs/INSTALL first."; echo "(To ignore this error, set AFL_NO_X86=1 and try again.)"; echo; exit 1 ) @rm -f .test1 else test_x86: diff --git a/GNUmakefile.llvm b/GNUmakefile.llvm index 538ca4a2..e775ca98 100644 --- a/GNUmakefile.llvm +++ b/GNUmakefile.llvm @@ -46,7 +46,7 @@ LLVMVER = $(shell $(LLVM_CONFIG) --version 2>/dev/null | sed 's/git//' | sed 's LLVM_MAJOR = $(shell $(LLVM_CONFIG) --version 2>/dev/null | sed 's/\..*//' ) LLVM_MINOR = $(shell $(LLVM_CONFIG) --version 2>/dev/null | sed 's/.*\.//' | sed 's/git//' | sed 's/svn//' | sed 's/ .*//' ) LLVM_UNSUPPORTED = $(shell $(LLVM_CONFIG) --version 2>/dev/null | egrep -q '^[0-2]\.|^3.[0-7]\.' && echo 1 || echo 0 ) -LLVM_TOO_NEW = $(shell $(LLVM_CONFIG) --version 2>/dev/null | egrep -q '^1[4-9]' && echo 1 || echo 0 ) +LLVM_TOO_NEW = $(shell $(LLVM_CONFIG) --version 2>/dev/null | egrep -q '^1[5-9]' && echo 1 || echo 0 ) LLVM_NEW_API = $(shell $(LLVM_CONFIG) --version 2>/dev/null | egrep -q '^1[0-9]' && echo 1 || echo 0 ) LLVM_10_OK = $(shell $(LLVM_CONFIG) --version 2>/dev/null | egrep -q '^1[1-9]|^10\.[1-9]|^10\.0.[1-9]' && echo 1 || echo 0 ) LLVM_HAVE_LTO = $(shell $(LLVM_CONFIG) --version 2>/dev/null | egrep -q '^1[1-9]' && echo 1 || echo 0 ) @@ -86,6 +86,12 @@ ifeq "$(LLVM_TOO_OLD)" "1" $(shell sleep 1) endif +ifeq "$(LLVM_MAJOR)" "15" + $(info [!] llvm_mode detected llvm 15, which is currently broken for LTO plugins.) + LLVM_LTO = 0 + LLVM_HAVE_LTO = 0 +endif + ifeq "$(LLVM_HAVE_LTO)" "1" $(info [+] llvm_mode detected llvm 11+, enabling afl-lto LTO implementation) LLVM_LTO = 1 @@ -93,7 +99,7 @@ ifeq "$(LLVM_HAVE_LTO)" "1" endif ifeq "$(LLVM_LTO)" "0" - $(info [+] llvm_mode detected llvm < 11, afl-lto LTO will not be build.) + $(info [+] llvm_mode detected llvm < 11 or llvm 15, afl-lto LTO will not be build.) endif ifeq "$(LLVM_APPLE_XCODE)" "1" diff --git a/TODO.md b/TODO.md index 8e77ee10..99d2c419 100644 --- a/TODO.md +++ b/TODO.md @@ -2,6 +2,7 @@ ## Should + - better documentation for custom mutators - better autodetection of shifting runtime timeout values - Update afl->pending_not_fuzzed for MOpt - afl-plot to support multiple plot_data diff --git a/docs/Changelog.md b/docs/Changelog.md index b6271a22..b18bf30f 100644 --- a/docs/Changelog.md +++ b/docs/Changelog.md @@ -33,6 +33,7 @@ sending a mail to <afl-users+subscribe@googlegroups.com>. - fix custom mutator post_process functionality - document and auto-activate pizza mode on condition - afl-cc: + - due a bug in lld of llvm 15 LTO instrumentation wont work atm :-( - converted all passed to use the new llvm pass manager for llvm 11+ - AFL++ PCGUARD mode is not available for 10.0.1 anymore (11+ only) - trying to stay on top on all these #$&ยง!! changes in llvm 15 ... diff --git a/src/afl-fuzz-state.c b/src/afl-fuzz-state.c index 47e39762..98217438 100644 --- a/src/afl-fuzz-state.c +++ b/src/afl-fuzz-state.c @@ -592,6 +592,7 @@ void afl_state_deinit(afl_state_t *afl) { if (afl->sync_id) { ck_free(afl->out_dir); } if (afl->pass_stats) { ck_free(afl->pass_stats); } if (afl->orig_cmp_map) { ck_free(afl->orig_cmp_map); } + if (afl->cmplog_binary) { ck_free(afl->cmplog_binary); } afl_free(afl->queue_buf); afl_free(afl->out_buf); |