mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-08 16:21:32 +00:00
more robust search for clang for afl-clang-fast
This commit is contained in:
parent
12a7059ae8
commit
4b88e059ef
@ -82,8 +82,8 @@ endif
|
|||||||
# this seems to be busted on some distros, so using the one in $PATH is
|
# this seems to be busted on some distros, so using the one in $PATH is
|
||||||
# probably better.
|
# probably better.
|
||||||
|
|
||||||
CC = $(LLVM_BINDIR)/clang
|
CC ?= $(LLVM_BINDIR)/clang
|
||||||
CXX = $(LLVM_BINDIR)/clang++
|
CXX ?= $(LLVM_BINDIR)/clang++
|
||||||
|
|
||||||
ifeq "$(shell test -e $(CC) || echo 1 )" "1"
|
ifeq "$(shell test -e $(CC) || echo 1 )" "1"
|
||||||
# llvm-config --bindir may not providing a valid path, so ...
|
# llvm-config --bindir may not providing a valid path, so ...
|
||||||
@ -146,13 +146,27 @@ ifeq "$(shell echo 'int main() {return 0; }' | $(CC) -x c - -fuse-ld=`command -v
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
CLANG_BIN = $(basename $(CC))
|
||||||
|
CLANGPP_BIN = $(basename $(CXX))
|
||||||
|
ifeq "$(shell test -e $(CLANG_BIN) || echo 1 )" "1"
|
||||||
|
CLANG_BIN = $(CC)
|
||||||
|
CLANGPP_BIN = $(CXX)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq "$(CC)" "$(LLVM_BINDIR)/clang"
|
||||||
|
USE_BINDIR = 1
|
||||||
|
else
|
||||||
|
USE_BINDIR = 0
|
||||||
|
endif
|
||||||
|
|
||||||
CFLAGS ?= -O3 -funroll-loops -D_FORTIFY_SOURCE=2
|
CFLAGS ?= -O3 -funroll-loops -D_FORTIFY_SOURCE=2
|
||||||
override CFLAGS += -Wall \
|
override CFLAGS += -Wall \
|
||||||
-g -Wno-pointer-sign -I ../include/ \
|
-g -Wno-pointer-sign -I ../include/ \
|
||||||
-DAFL_PATH=\"$(HELPER_PATH)\" -DBIN_PATH=\"$(BIN_PATH)\" \
|
-DAFL_PATH=\"$(HELPER_PATH)\" -DBIN_PATH=\"$(BIN_PATH)\" \
|
||||||
-DLLVM_BINDIR=\"$(LLVM_BINDIR)\" -DVERSION=\"$(VERSION)\" \
|
-DLLVM_BINDIR=\"$(LLVM_BINDIR)\" -DVERSION=\"$(VERSION)\" \
|
||||||
-DLLVM_VERSION=\"$(LLVMVER)\" -DAFL_CLANG_FLTO=\"$(AFL_CLANG_FLTO)\" \
|
-DLLVM_VERSION=\"$(LLVMVER)\" -DAFL_CLANG_FLTO=\"$(AFL_CLANG_FLTO)\" \
|
||||||
-DAFL_REAL_LD=\"$(AFL_REAL_LD)\" -DAFL_CLANG_FUSELD=\"$(AFL_CLANG_FUSELD)\" -Wno-unused-function
|
-DAFL_REAL_LD=\"$(AFL_REAL_LD)\" -DAFL_CLANG_FUSELD=\"$(AFL_CLANG_FUSELD)\" \
|
||||||
|
-DCLANG_BIN=\"$(CC)\" -DCLANGPP_BIN=\"$(CXX)\" -DUSE_BINDIR=$(USE_BINDIR) -Wno-unused-function
|
||||||
ifdef AFL_TRACE_PC
|
ifdef AFL_TRACE_PC
|
||||||
$(info Compile option AFL_TRACE_PC is deprecated, just set AFL_LLVM_INSTRUMENT=PCGUARD to activate when compiling targets )
|
$(info Compile option AFL_TRACE_PC is deprecated, just set AFL_LLVM_INSTRUMENT=PCGUARD to activate when compiling targets )
|
||||||
endif
|
endif
|
||||||
|
@ -159,7 +159,6 @@ static void find_obj(u8 *argv0) {
|
|||||||
static void edit_params(u32 argc, char **argv, char **envp) {
|
static void edit_params(u32 argc, char **argv, char **envp) {
|
||||||
|
|
||||||
u8 fortify_set = 0, asan_set = 0, x_set = 0, bit_mode = 0;
|
u8 fortify_set = 0, asan_set = 0, x_set = 0, bit_mode = 0;
|
||||||
u8 has_llvm_config = 0;
|
|
||||||
u8 *name;
|
u8 *name;
|
||||||
|
|
||||||
cc_params = ck_alloc((argc + 128) * sizeof(u8 *));
|
cc_params = ck_alloc((argc + 128) * sizeof(u8 *));
|
||||||
@ -170,8 +169,6 @@ static void edit_params(u32 argc, char **argv, char **envp) {
|
|||||||
else
|
else
|
||||||
++name;
|
++name;
|
||||||
|
|
||||||
has_llvm_config = (strlen(LLVM_BINDIR) > 0);
|
|
||||||
|
|
||||||
if (instrument_mode == INSTRUMENT_LTO)
|
if (instrument_mode == INSTRUMENT_LTO)
|
||||||
if (lto_flag[0] != '-')
|
if (lto_flag[0] != '-')
|
||||||
FATAL(
|
FATAL(
|
||||||
@ -181,19 +178,19 @@ static void edit_params(u32 argc, char **argv, char **envp) {
|
|||||||
if (!strcmp(name, "afl-clang-fast++") || !strcmp(name, "afl-clang-lto++")) {
|
if (!strcmp(name, "afl-clang-fast++") || !strcmp(name, "afl-clang-lto++")) {
|
||||||
|
|
||||||
u8 *alt_cxx = getenv("AFL_CXX");
|
u8 *alt_cxx = getenv("AFL_CXX");
|
||||||
if (has_llvm_config)
|
if (USE_BINDIR)
|
||||||
snprintf(llvm_fullpath, sizeof(llvm_fullpath), "%s/clang++", LLVM_BINDIR);
|
snprintf(llvm_fullpath, sizeof(llvm_fullpath), "%s/clang++", LLVM_BINDIR);
|
||||||
else
|
else
|
||||||
sprintf(llvm_fullpath, "clang++");
|
sprintf(llvm_fullpath, CLANGPP_BIN);
|
||||||
cc_params[0] = alt_cxx && *alt_cxx ? alt_cxx : (u8 *)llvm_fullpath;
|
cc_params[0] = alt_cxx && *alt_cxx ? alt_cxx : (u8 *)llvm_fullpath;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
u8 *alt_cc = getenv("AFL_CC");
|
u8 *alt_cc = getenv("AFL_CC");
|
||||||
if (has_llvm_config)
|
if (USE_BINDIR)
|
||||||
snprintf(llvm_fullpath, sizeof(llvm_fullpath), "%s/clang", LLVM_BINDIR);
|
snprintf(llvm_fullpath, sizeof(llvm_fullpath), "%s/clang", LLVM_BINDIR);
|
||||||
else
|
else
|
||||||
sprintf(llvm_fullpath, "clang");
|
sprintf(llvm_fullpath, CLANG_BIN);
|
||||||
cc_params[0] = alt_cc && *alt_cc ? alt_cc : (u8 *)llvm_fullpath;
|
cc_params[0] = alt_cc && *alt_cc ? alt_cc : (u8 *)llvm_fullpath;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user