diff options
author | Kostya Serebryany <kcc@google.com> | 2016-11-30 21:53:32 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2016-11-30 21:53:32 +0000 |
commit | 1cba0a96e7def030a89bd1bf10c355e515b0957b (patch) | |
tree | 38fb4bd954f2db20c97d0484c8a9939c7052eccb /llvm/lib/Fuzzer/FuzzerTracePC.cpp | |
parent | 5abac1769f36e4f7d9d6c3a408a1356490fc76e0 (diff) | |
download | bcm5719-llvm-1cba0a96e7def030a89bd1bf10c355e515b0957b.tar.gz bcm5719-llvm-1cba0a96e7def030a89bd1bf10c355e515b0957b.zip |
[libFuzzer] extend -print_coverage to print the comma-separated list of covered dirs. Note: the Windows stub for DirName is left unimplemented
llvm-svn: 288276
Diffstat (limited to 'llvm/lib/Fuzzer/FuzzerTracePC.cpp')
-rw-r--r-- | llvm/lib/Fuzzer/FuzzerTracePC.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerTracePC.cpp b/llvm/lib/Fuzzer/FuzzerTracePC.cpp index eabf0d087f4..8d58a6d3a91 100644 --- a/llvm/lib/Fuzzer/FuzzerTracePC.cpp +++ b/llvm/lib/Fuzzer/FuzzerTracePC.cpp @@ -131,7 +131,8 @@ void TracePC::PrintCoverage() { } std::map<std::string, std::vector<uintptr_t>> CoveredPCsPerModule; std::map<std::string, uintptr_t> ModuleOffsets; - std::set<std::string> CoveredFiles, CoveredFunctions, CoveredLines; + std::set<std::string> CoveredDirs, CoveredFiles, CoveredFunctions, + CoveredLines; Printf("COVERAGE:\n"); for (size_t i = 1; i < GetNumPCs(); i++) { if (!PCs[i]) continue; @@ -150,12 +151,21 @@ void TracePC::PrintCoverage() { CoveredPCsPerModule[Module].push_back(PcOffset); CoveredFunctions.insert(FunctionStr); CoveredFiles.insert(FileStr); + CoveredDirs.insert(DirName(FileStr)); if (!CoveredLines.insert(FileStr + ":" + LineStr).second) continue; Printf("COVERED: %s %s:%s\n", FunctionStr.c_str(), FileStr.c_str(), LineStr.c_str()); } + std::string CoveredDirsStr; + for (auto &Dir : CoveredDirs) { + if (!CoveredDirsStr.empty()) + CoveredDirsStr += ","; + CoveredDirsStr += Dir; + } + Printf("COVERED_DIRS: %s\n", CoveredDirsStr.c_str()); + for (auto &M : CoveredPCsPerModule) { std::set<std::string> UncoveredFiles, UncoveredFunctions; std::map<std::string, std::set<int> > UncoveredLines; // Func+File => lines |