summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Fuzzer/FuzzerTracePC.cpp
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2016-09-23 01:20:07 +0000
committerKostya Serebryany <kcc@google.com>2016-09-23 01:20:07 +0000
commit87a598e19f506885caf08f8d8763a753ebf758d2 (patch)
tree976d8ee893a10cff3aa3c728a5ad6dbb7fbc9e00 /llvm/lib/Fuzzer/FuzzerTracePC.cpp
parentceb71c2f433ac90829f17ee957c58dd98fb26c3e (diff)
downloadbcm5719-llvm-87a598e19f506885caf08f8d8763a753ebf758d2.tar.gz
bcm5719-llvm-87a598e19f506885caf08f8d8763a753ebf758d2.zip
[libFuzzer] simplify the TracePC logic
llvm-svn: 282222
Diffstat (limited to 'llvm/lib/Fuzzer/FuzzerTracePC.cpp')
-rw-r--r--llvm/lib/Fuzzer/FuzzerTracePC.cpp33
1 files changed, 12 insertions, 21 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerTracePC.cpp b/llvm/lib/Fuzzer/FuzzerTracePC.cpp
index 5c038cde67f..0df8aba18f6 100644
--- a/llvm/lib/Fuzzer/FuzzerTracePC.cpp
+++ b/llvm/lib/Fuzzer/FuzzerTracePC.cpp
@@ -19,31 +19,22 @@
namespace fuzzer {
TracePC TPC;
-const size_t TracePC::kNumCounters;
-const size_t TracePC::kNumPCs;
void TracePC::HandleTrace(uintptr_t *Guard, uintptr_t PC) {
uintptr_t Idx = *Guard;
if (!Idx) return;
- if (UseCounters) {
- uint8_t Counter = Counters[Idx % kNumCounters];
- if (Counter == 0) {
+ uint8_t Counter = Counters[Idx % kNumCounters];
+ if (Counter == 0) {
+ AddNewPCID(Idx);
+ if (!PCs[Idx]) {
+ TotalPCCoverage++;
PCs[Idx] = PC;
- if (TotalCoverageMap.AddValue(Idx)) {
- TotalCoverage++;
- AddNewPCID(Idx);
- }
}
- if (Counter < 128)
- Counters[Idx % kNumCounters] = Counter + 1;
- else
- *Guard = 0;
- } else {
- *Guard = 0;
- TotalCoverage++;
- AddNewPCID(Idx);
- PCs[Idx] = PC;
}
+ if (Counter < 128)
+ Counters[Idx % kNumCounters] = Counter + 1;
+ if (Counter >= 128 || !UseCounters)
+ *Guard = 0;
}
void TracePC::HandleInit(uintptr_t *Start, uintptr_t *Stop) {
@@ -72,8 +63,8 @@ void TracePC::ResetGuards() {
}
void TracePC::FinalizeTrace() {
- if (UseCounters && TotalCoverage) {
- for (size_t Idx = 1, N = std::min(kNumCounters, NumGuards); Idx < N;
+ if (TotalPCCoverage) {
+ for (size_t Idx = 1, N = Min(kNumCounters, NumGuards); Idx < N;
Idx++) {
uint8_t Counter = Counters[Idx];
if (!Counter) continue;
@@ -99,7 +90,7 @@ void TracePC::HandleCallerCallee(uintptr_t Caller, uintptr_t Callee) {
void TracePC::PrintCoverage() {
Printf("COVERAGE:\n");
- for (size_t i = 0; i < std::min(NumGuards, kNumPCs); i++) {
+ for (size_t i = 0; i < Min(NumGuards, kNumPCs); i++) {
if (PCs[i])
PrintPC("COVERED: %p %F %L\n", "COVERED: %p\n", PCs[i]);
}
OpenPOWER on IntegriCloud