fix LTO document id feature, warnings for INSTRUMENT_FILE

This commit is contained in:
van Hauser
2020-08-02 15:00:49 +02:00
parent 349fed3fcd
commit 6041b1c486
2 changed files with 37 additions and 20 deletions

View File

@ -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 &&

View File

@ -164,32 +164,41 @@ 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) {
for (std::list<std::string>::iterator it = myInstrumentList.begin();
it != myInstrumentList.end(); ++it) {
/* We don't check for filename equality here because
* filenames might actually be full paths. Instead we
* check that the actual filename ends in the filename
* specified in the list. */
if (instFilename.str().length() >= it->length()) {
/* We don't check for filename equality here because
* filenames might actually be full paths. Instead we
* check that the actual filename ends in the filename
* specified in the list. */
if (instFilename.str().length() >= it->length()) {
if (fnmatch(("*" + *it).c_str(), instFilename.str().c_str(), 0) ==
0) {
if (fnmatch(("*" + *it).c_str(), instFilename.str().c_str(), 0) ==
0) {
instrumentFunction = true;
break;
}
instrumentFunction = true;
break;
}
@ -197,6 +206,13 @@ 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;
}
/* Either we couldn't figure out our location or the location is