summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/fuzzer
diff options
context:
space:
mode:
Diffstat (limited to 'compiler-rt/lib/fuzzer')
-rw-r--r--compiler-rt/lib/fuzzer/FuzzerTracePC.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/compiler-rt/lib/fuzzer/FuzzerTracePC.cpp b/compiler-rt/lib/fuzzer/FuzzerTracePC.cpp
index 37b32b76ae1..7874f1315aa 100644
--- a/compiler-rt/lib/fuzzer/FuzzerTracePC.cpp
+++ b/compiler-rt/lib/fuzzer/FuzzerTracePC.cpp
@@ -351,9 +351,21 @@ void TracePC::DumpCoverage() {
void TracePC::PrintUnstableStats() {
size_t count = 0;
- for (size_t i = 0; i < NumInline8bitCounters; i++)
- if (UnstableCounters[i].IsUnstable)
+ Printf("UNSTABLE_FUNCTIONS:\n");
+ IterateInline8bitCounters([&](int i, int j, int UnstableIdx) {
+ const PCTableEntry &TE = ModulePCTable[i].Start[j];
+ if (UnstableCounters[UnstableIdx].IsUnstable) {
count++;
+ if (ObservedFuncs.count(TE.PC)) {
+ auto VisualizePC = GetNextInstructionPc(TE.PC);
+ std::string FunctionStr = DescribePC("%F", VisualizePC);
+ if (FunctionStr.find("in ") == 0)
+ FunctionStr = FunctionStr.substr(3);
+ Printf("%s\n", FunctionStr.c_str());
+ }
+ }
+ });
+
Printf("stat::stability_rate: %.2f\n",
100 - static_cast<float>(count * 100) / NumInline8bitCounters);
}
OpenPOWER on IntegriCloud