diff options
| author | Kostya Serebryany <kcc@google.com> | 2015-02-04 23:42:42 +0000 |
|---|---|---|
| committer | Kostya Serebryany <kcc@google.com> | 2015-02-04 23:42:42 +0000 |
| commit | 92e0476c671a3a1734d8c504aac7af6df93feeab (patch) | |
| tree | 5af20de462d146ab3a26df08a1e2704f7103fd16 /llvm/lib/Fuzzer/FuzzerLoop.cpp | |
| parent | 4eca9b93720b8f5746159eed43a0b3c0bf496db0 (diff) | |
| download | bcm5719-llvm-92e0476c671a3a1734d8c504aac7af6df93feeab.tar.gz bcm5719-llvm-92e0476c671a3a1734d8c504aac7af6df93feeab.zip | |
[fuzzer] add flag prefer_small_during_initial_shuffle, be a bit more verbose
llvm-svn: 228235
Diffstat (limited to 'llvm/lib/Fuzzer/FuzzerLoop.cpp')
| -rw-r--r-- | llvm/lib/Fuzzer/FuzzerLoop.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerLoop.cpp b/llvm/lib/Fuzzer/FuzzerLoop.cpp index d825148c758..9c65f257d9c 100644 --- a/llvm/lib/Fuzzer/FuzzerLoop.cpp +++ b/llvm/lib/Fuzzer/FuzzerLoop.cpp @@ -48,10 +48,19 @@ void Fuzzer::AlarmCallback() { } void Fuzzer::ShuffleAndMinimize() { + bool PreferSmall = + (Options.PreferSmallDuringInitialShuffle == 1 || + (Options.PreferSmallDuringInitialShuffle == -1 && rand() % 2)); if (Options.Verbosity) - std::cerr << "Shuffle: " << Corpus.size() << "\n"; + std::cerr << "Shuffle: Size: " << Corpus.size() + << " prefer small: " << PreferSmall + << "\n"; std::vector<Unit> NewCorpus; - random_shuffle(Corpus.begin(), Corpus.end()); + std::random_shuffle(Corpus.begin(), Corpus.end()); + if (PreferSmall) + std::stable_sort( + Corpus.begin(), Corpus.end(), + [](const Unit &A, const Unit &B) { return A.size() < B.size(); }); size_t MaxCov = 0; Unit &U = CurrentUnit; for (const auto &C : Corpus) { @@ -64,7 +73,9 @@ void Fuzzer::ShuffleAndMinimize() { MaxCov = NewCoverage; NewCorpus.push_back(U); if (Options.Verbosity >= 2) - std::cerr << "NEW0: " << NewCoverage << "\n"; + std::cerr << "NEW0: " << NewCoverage + << " L " << U.size() + << "\n"; } } } @@ -109,8 +120,7 @@ size_t Fuzzer::RunOneMaximizeTotalCoverage(const Unit &U) { TestOneInput(U.data(), U.size()); size_t NewCoverage = __sanitizer_get_total_unique_coverage(); if (!(TotalNumberOfRuns & (TotalNumberOfRuns - 1)) && Options.Verbosity) { - size_t Seconds = - duration_cast<seconds>(system_clock::now() - ProcessStartTime).count(); + size_t Seconds = secondsSinceProcessStartUp(); std::cerr << "#" << TotalNumberOfRuns << "\tcov: " << NewCoverage |

