summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Fuzzer/FuzzerInternal.h
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2016-09-18 21:47:08 +0000
committerKostya Serebryany <kcc@google.com>2016-09-18 21:47:08 +0000
commitb706b481ba7125f1e0549e1cefcc9d375466c704 (patch)
tree639b6ba5d843e86252fb85238a83cf40c7038c41 /llvm/lib/Fuzzer/FuzzerInternal.h
parentf33a6b713b7388da39dab1aa49e2a0aabf518b14 (diff)
downloadbcm5719-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.h7
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;
};
OpenPOWER on IntegriCloud