mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-17 20:28:08 +00:00
update llvm recommendations
This commit is contained in:
@ -47,6 +47,7 @@ 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_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 | grep -E -q '^[0-2]\.|^3.[0-7]\.' && echo 1 || echo 0 )
|
LLVM_UNSUPPORTED = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^[0-2]\.|^3.[0-7]\.' && echo 1 || echo 0 )
|
||||||
LLVM_TOO_NEW = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[7-9]' && echo 1 || echo 0 )
|
LLVM_TOO_NEW = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[7-9]' && echo 1 || echo 0 )
|
||||||
|
LLVM_TOO_OLD = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^[1-9]\.|^1[012]\.' && echo 1 || echo 0 )
|
||||||
LLVM_NEW_API = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[0-9]' && echo 1 || echo 0 )
|
LLVM_NEW_API = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[0-9]' && echo 1 || echo 0 )
|
||||||
LLVM_NEWER_API = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[6-9]' && echo 1 || echo 0 )
|
LLVM_NEWER_API = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[6-9]' && echo 1 || echo 0 )
|
||||||
LLVM_13_OK = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[3-9]' && echo 1 || echo 0 )
|
LLVM_13_OK = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[3-9]' && echo 1 || echo 0 )
|
||||||
@ -69,6 +70,12 @@ ifeq "$(LLVM_TOO_NEW)" "1"
|
|||||||
$(warning you are using an in-development llvm version - this might break llvm_mode!)
|
$(warning you are using an in-development llvm version - this might break llvm_mode!)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq "$(LLVM_TOO_OLD)" "1"
|
||||||
|
$(warning you are using an outdated LLVM version! Please use at least LLVM 13 or newer!)
|
||||||
|
$(shell sleep 2)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# No switching the meaning of LLVM_TOO_OLD
|
||||||
LLVM_TOO_OLD=1
|
LLVM_TOO_OLD=1
|
||||||
|
|
||||||
ifeq "$(LLVM_MAJOR)" "9"
|
ifeq "$(LLVM_MAJOR)" "9"
|
||||||
@ -87,11 +94,6 @@ ifeq "$(LLVM_NEWER_API)" "1"
|
|||||||
LLVM_STDCXX = c++17
|
LLVM_STDCXX = c++17
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq "$(LLVM_TOO_OLD)" "1"
|
|
||||||
$(info [!] llvm_mode detected an old version of llvm, upgrade to at least 9 or preferable 11!)
|
|
||||||
$(shell sleep 1)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq "$(LLVM_HAVE_LTO)" "1"
|
ifeq "$(LLVM_HAVE_LTO)" "1"
|
||||||
$(info [+] llvm_mode detected llvm 11+, enabling afl-lto LTO implementation)
|
$(info [+] llvm_mode detected llvm 11+, enabling afl-lto LTO implementation)
|
||||||
LLVM_LTO = 1
|
LLVM_LTO = 1
|
||||||
|
@ -7,7 +7,7 @@ For the GCC-based instrumentation, see
|
|||||||
|
|
||||||
## 1) Introduction
|
## 1) Introduction
|
||||||
|
|
||||||
! llvm_mode works with llvm versions 3.8 up to 13 !
|
! llvm_mode works with llvm versions 3.8 up to 17 - but 13+ is recommended !
|
||||||
|
|
||||||
The code in this directory allows you to instrument programs for AFL++ using
|
The code in this directory allows you to instrument programs for AFL++ using
|
||||||
true compiler-level instrumentation, instead of the more crude assembly-level
|
true compiler-level instrumentation, instead of the more crude assembly-level
|
||||||
|
17
src/afl-cc.c
17
src/afl-cc.c
@ -384,12 +384,16 @@ static u8 fortify_set = 0, asan_set = 0, x_set = 0, bit_mode = 0,
|
|||||||
non_dash = 0;
|
non_dash = 0;
|
||||||
|
|
||||||
#ifndef MAX_PARAMS_NUM
|
#ifndef MAX_PARAMS_NUM
|
||||||
#define MAX_PARAMS_NUM 2048
|
#define MAX_PARAMS_NUM 2048
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void process_params(u32 argc, char **argv) {
|
static void process_params(u32 argc, char **argv) {
|
||||||
|
|
||||||
if (cc_par_cnt + argc >= MAX_PARAMS_NUM) { FATAL("Too many command line parameters, please increase MAX_PARAMS_NUM."); }
|
if (cc_par_cnt + argc >= MAX_PARAMS_NUM) {
|
||||||
|
|
||||||
|
FATAL("Too many command line parameters, please increase MAX_PARAMS_NUM.");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
if (lto_mode && argc > 1) {
|
if (lto_mode && argc > 1) {
|
||||||
|
|
||||||
@ -2350,6 +2354,15 @@ int main(int argc, char **argv, char **envp) {
|
|||||||
"AFL_LLVM_CMPLOG and "
|
"AFL_LLVM_CMPLOG and "
|
||||||
"AFL_LLVM_DICT2FILE+AFL_LLVM_DICT2FILE_NO_MAIN.\n\n");
|
"AFL_LLVM_DICT2FILE+AFL_LLVM_DICT2FILE_NO_MAIN.\n\n");
|
||||||
|
|
||||||
|
if (LLVM_MAJOR < 13) {
|
||||||
|
|
||||||
|
SAYF(
|
||||||
|
"Warning: It is highly recommended to use at least LLVM version 13 "
|
||||||
|
"(or better, higher) rather than %d!\n\n",
|
||||||
|
LLVM_MAJOR);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1283,7 +1283,7 @@ int main(int argc, char **argv_orig, char **envp) {
|
|||||||
|
|
||||||
WARNF(
|
WARNF(
|
||||||
"Note that the MOpt mode is not maintained and is not as effective "
|
"Note that the MOpt mode is not maintained and is not as effective "
|
||||||
"normal havoc mode.");
|
"as normal havoc mode.");
|
||||||
|
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user