fix cmplog with lto
MODIFY
llvm_mode/afl-clang-fast.c
llvm_mode/afl-clang-fast.c
@@ -305,6 +305,11 @@ static void edit_params(u32 argc, char **argv, char **envp) {
if (lto_mode) {
+ if (cmplog_mode)
+ unsetenv("AFL_LLVM_LTO_AUTODICTIONARY");
+ else
+ setenv("AFL_LLVM_LTO_AUTODICTIONARY", "1", 1);
+
cc_params[cc_par_cnt++] = alloc_printf("-fuse-ld=%s", AFL_REAL_LD);
cc_params[cc_par_cnt++] = "-Wl,--allow-multiple-definition";
/*
@@ -392,6 +397,7 @@ static void edit_params(u32 argc, char **argv, char **envp) {
continue;
if (lto_mode && !strncmp(cur, "-fuse-ld=", 9)) continue;
+ if (lto_mode && !strncmp(cur, "--ld-path=", 10)) continue;
cc_params[cc_par_cnt++] = cur;

MODIFY
llvm_mode/afl-llvm-lto-instrumentation.so.cc
llvm_mode/afl-llvm-lto-instrumentation.so.cc
@@ -86,7 +86,7 @@ class AFLLTOPass : public ModulePass {
bool runOnModule(Module &M) override;
protected:
- int afl_global_id = 1, autodictionary = 1;
+ int afl_global_id = 1, autodictionary = 0;
uint32_t function_minimum_size = 1;
uint32_t inst_blocks = 0, inst_funcs = 0, total_instr = 0;
uint64_t map_addr = 0x10000;
@@ -133,6 +133,8 @@ bool AFLLTOPass::runOnModule(Module &M) {
}
+ if (getenv("AFL_LLVM_LTO_AUTODICTIONARY")) autodictionary = 1;
+
if (getenv("AFL_LLVM_MAP_DYNAMIC")) map_addr = 0;
if (getenv("AFL_LLVM_SKIPSINGLEBLOCK")) function_minimum_size = 2;

fix cmplog with lto