fix LTO document id feature, warnings for INSTRUMENT_FILE
MODIFY
llvm_mode/afl-llvm-lto-instrumentation.so.cc
llvm_mode/afl-llvm-lto-instrumentation.so.cc
@@ -206,8 +206,8 @@ bool AFLLTOPass::runOnModule(Module &M) {
if (debug)
fprintf(stderr,
- "DEBUG: Function %s is not the instrument file listed\n",
- F.getName().str().c_str());
+ "DEBUG: Function %s is not in a source file that was specified "
+ "in the instrument file list\n", F.getName().str().c_str());
continue;
}
@@ -660,10 +660,11 @@ bool AFLLTOPass::runOnModule(Module &M) {
}
- if (documentFile) fclose(documentFile);
-
}
+ if (documentFile) fclose(documentFile);
+ documentFile = NULL;
+
// save highest location ID to global variable
// do this after each function to fail faster
if (!be_quiet && afl_global_id > MAP_SIZE &&

MODIFY
llvm_mode/afl-llvm-lto-instrumentlist.so.cc
llvm_mode/afl-llvm-lto-instrumentlist.so.cc
@@ -164,15 +164,26 @@ bool AFLcheckIfInstrument::runOnModule(Module &M) {
}
+ if (instFilename.str().empty()) {
+
+ if (!be_quiet)
+ WARNF(
+ "Function %s has no source file name information and will "
+ "not be instrumented.",
+ F.getName().str().c_str());
+ continue;
+
+ }
+
}
- (void)instLine;
+ //(void)instLine;
+ fprintf(stderr, "xxx %s %s\n", F.getName().str().c_str(),
+ instFilename.str().c_str());
if (debug)
SAYF(cMGN "[D] " cRST "function %s is in file %s\n",
F.getName().str().c_str(), instFilename.str().c_str());
- /* Continue only if we know where we actually are */
- if (!instFilename.str().empty()) {
for (std::list<std::string>::iterator it = myInstrumentList.begin();
it != myInstrumentList.end(); ++it) {
@@ -195,7 +206,12 @@ bool AFLcheckIfInstrument::runOnModule(Module &M) {
}
- }
+ } else {
+
+ if (!be_quiet)
+ WARNF("No debug information found for function %s, recompile with -g",
+ F.getName().str().c_str());
+ continue;
}

fix LTO document id feature, warnings for INSTRUMENT_FILE