diff options
author | Kostya Serebryany <kcc@google.com> | 2016-09-18 21:47:08 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2016-09-18 21:47:08 +0000 |
commit | b706b481ba7125f1e0549e1cefcc9d375466c704 (patch) | |
tree | 639b6ba5d843e86252fb85238a83cf40c7038c41 /llvm/lib/Fuzzer/FuzzerInternal.h | |
parent | f33a6b713b7388da39dab1aa49e2a0aabf518b14 (diff) | |
download | bcm5719-llvm-b706b481ba7125f1e0549e1cefcc9d375466c704.tar.gz bcm5719-llvm-b706b481ba7125f1e0549e1cefcc9d375466c704.zip |
[libFuzzer] add -print_coverage=1 flag to print coverage directly from libFuzzer
llvm-svn: 281866
Diffstat (limited to 'llvm/lib/Fuzzer/FuzzerInternal.h')
-rw-r--r-- | llvm/lib/Fuzzer/FuzzerInternal.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerInternal.h b/llvm/lib/Fuzzer/FuzzerInternal.h index 4d05c08f0dd..e4ac4413b63 100644 --- a/llvm/lib/Fuzzer/FuzzerInternal.h +++ b/llvm/lib/Fuzzer/FuzzerInternal.h @@ -108,6 +108,7 @@ void PrintHexArray(const uint8_t *Data, size_t Size, void PrintASCII(const uint8_t *Data, size_t Size, const char *PrintAfter = ""); void PrintASCII(const Unit &U, const char *PrintAfter = ""); void PrintASCII(const Word &W, const char *PrintAfter = ""); +void PrintPC(const char *SymbolizedFMT, const char *FallbackFMT, uintptr_t PC); std::string Hash(const Unit &U); void SetTimer(int Seconds); void SetSigSegvHandler(); @@ -243,6 +244,7 @@ struct FuzzingOptions { bool OutputCSV = false; bool PrintNewCovPcs = false; bool PrintFinalStats = false; + bool PrintCoverage = false; bool DetectLeaks = true; bool TruncateUnits = false; bool PruneCorpus = true; @@ -385,6 +387,8 @@ class TracePC { void PrintModuleInfo(); + void PrintCoverage(); + private: bool UseCounters = false; size_t TotalCoverage = 0; @@ -408,6 +412,9 @@ private: static const size_t kNumCounters = 1 << 14; uint8_t Counters[kNumCounters]; + static const size_t kNumPCs = 1 << 20; + uintptr_t PCs[kNumPCs]; + ValueBitMap CounterMap; ValueBitMap TotalCoverageMap; }; |