diff options
| author | Kostya Serebryany <kcc@google.com> | 2016-08-25 22:35:08 +0000 |
|---|---|---|
| committer | Kostya Serebryany <kcc@google.com> | 2016-08-25 22:35:08 +0000 |
| commit | 0f0fa4faf2b99fce4c32e0d8635f1b2c68d8ff3c (patch) | |
| tree | 0657936ced0b7a120cf41c02fd5df21df01d3848 /llvm/lib/Fuzzer/FuzzerLoop.cpp | |
| parent | d8b0466e19df2be3d635ca4e23c92c3d28d1b935 (diff) | |
| download | bcm5719-llvm-0f0fa4faf2b99fce4c32e0d8635f1b2c68d8ff3c.tar.gz bcm5719-llvm-0f0fa4faf2b99fce4c32e0d8635f1b2c68d8ff3c.zip | |
[libFizzer] rename -print_new_cov_pcs=1 into -print_pcs=1 and make it more useful: print PCs only after the initial corpus has been read and symbolize them
llvm-svn: 279787
Diffstat (limited to 'llvm/lib/Fuzzer/FuzzerLoop.cpp')
| -rw-r--r-- | llvm/lib/Fuzzer/FuzzerLoop.cpp | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerLoop.cpp b/llvm/lib/Fuzzer/FuzzerLoop.cpp index e992612881a..01692ecfa57 100644 --- a/llvm/lib/Fuzzer/FuzzerLoop.cpp +++ b/llvm/lib/Fuzzer/FuzzerLoop.cpp @@ -441,15 +441,9 @@ void Fuzzer::ShuffleAndMinimize() { } bool Fuzzer::UpdateMaxCoverage() { - uintptr_t PrevPcBufferPos = MaxCoverage.PcBufferPos; + PrevPcBufferPos = MaxCoverage.PcBufferPos; bool Res = RecordMaxCoverage(&MaxCoverage); - if (Options.PrintNewCovPcs && PrevPcBufferPos != MaxCoverage.PcBufferPos) { - for (size_t I = PrevPcBufferPos; I < MaxCoverage.PcBufferPos; ++I) { - Printf("%p\n", PcBuffer[I]); - } - } - return Res; } @@ -566,6 +560,21 @@ void Fuzzer::PrintStatusForNewUnit(const Unit &U) { } } +void Fuzzer::PrintNewPCs() { + if (Options.PrintNewCovPcs && PrevPcBufferPos != MaxCoverage.PcBufferPos) { + for (size_t I = PrevPcBufferPos; I < MaxCoverage.PcBufferPos; ++I) { + if (EF->__sanitizer_symbolize_pc) { + char PcDescr[1024]; + EF->__sanitizer_symbolize_pc(reinterpret_cast<void*>(PcBuffer[I]), + "%p %F %L", PcDescr, sizeof(PcDescr)); + Printf("\tNEW_PC: %s\n", PcDescr); + } else { + Printf("\tNEW_PC: %p\n", PcBuffer[I]); + } + } + } +} + void Fuzzer::ReportNewCoverage(const Unit &U) { Corpus.push_back(U); UpdateCorpusDistribution(); @@ -574,6 +583,7 @@ void Fuzzer::ReportNewCoverage(const Unit &U) { PrintStatusForNewUnit(U); WriteToOutputCorpus(U); NumberOfNewUnitsAdded++; + PrintNewPCs(); } // Finds minimal number of units in 'Extra' that add coverage to 'Initial'. |

