diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Fuzzer/FuzzerDriver.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Fuzzer/FuzzerFlags.def | 6 | ||||
| -rw-r--r-- | llvm/lib/Fuzzer/FuzzerLoop.cpp | 12 | ||||
| -rw-r--r-- | llvm/lib/Fuzzer/FuzzerOptions.h | 2 | 
4 files changed, 13 insertions, 9 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerDriver.cpp b/llvm/lib/Fuzzer/FuzzerDriver.cpp index 336bdf0f859..a00e49ef079 100644 --- a/llvm/lib/Fuzzer/FuzzerDriver.cpp +++ b/llvm/lib/Fuzzer/FuzzerDriver.cpp @@ -401,7 +401,7 @@ int FuzzerDriver(int *argc, char ***argv, UserCallback Callback) {    Options.Shrink = Flags.shrink;    Options.ShuffleAtStartUp = Flags.shuffle;    Options.PreferSmall = Flags.prefer_small; -  Options.Reload = Flags.reload; +  Options.ReloadIntervalSec = Flags.reload;    Options.OnlyASCII = Flags.only_ascii;    Options.OutputCSV = Flags.output_csv;    Options.DetectLeaks = Flags.detect_leaks; diff --git a/llvm/lib/Fuzzer/FuzzerFlags.def b/llvm/lib/Fuzzer/FuzzerFlags.def index ea998bb9a9e..03db9ade7f7 100644 --- a/llvm/lib/Fuzzer/FuzzerFlags.def +++ b/llvm/lib/Fuzzer/FuzzerFlags.def @@ -56,9 +56,9 @@ FUZZER_FLAG_INT(jobs, 0, "Number of jobs to run. If jobs >= 1 we spawn"  FUZZER_FLAG_INT(workers, 0,              "Number of simultaneous worker processes to run the jobs."              " If zero, \"min(jobs,NumberOfCpuCores()/2)\" is used.") -FUZZER_FLAG_INT(reload, 1, -                "Reload the main corpus periodically to get new units" -                " discovered by other processes.") +FUZZER_FLAG_INT(reload, 10, +                "Reload the main corpus every <N> seconds to get new units" +                " discovered by other processes. If 0, disabled")  FUZZER_FLAG_INT(report_slow_units, 10,      "Report slowest units if they run for more than this number of seconds.")  FUZZER_FLAG_INT(only_ascii, 0, diff --git a/llvm/lib/Fuzzer/FuzzerLoop.cpp b/llvm/lib/Fuzzer/FuzzerLoop.cpp index 49b58ddf5d5..be006ce7cdc 100644 --- a/llvm/lib/Fuzzer/FuzzerLoop.cpp +++ b/llvm/lib/Fuzzer/FuzzerLoop.cpp @@ -149,7 +149,7 @@ Fuzzer::Fuzzer(UserCallback CB, InputCorpus &Corpus, MutationDispatcher &MD,    if (Options.Verbosity)      TPC.PrintModuleInfo(); -  if (!Options.OutputCorpus.empty() && Options.Reload) +  if (!Options.OutputCorpus.empty() && Options.ReloadIntervalSec)      EpochOfLastReadOfOutputCorpus = GetEpoch(Options.OutputCorpus);    MaxInputLen = MaxMutationLen = Options.MaxLen;    AllocateCurrentUnitData(); @@ -383,22 +383,25 @@ void Fuzzer::CheckExitOnSrcPos() {  }  void Fuzzer::RereadOutputCorpus(size_t MaxSize) { -  if (Options.OutputCorpus.empty() || !Options.Reload) return; +  if (Options.OutputCorpus.empty() || !Options.ReloadIntervalSec) return;    std::vector<Unit> AdditionalCorpus;    ReadDirToVectorOfUnits(Options.OutputCorpus.c_str(), &AdditionalCorpus,                           &EpochOfLastReadOfOutputCorpus, MaxSize);    if (Options.Verbosity >= 2)      Printf("Reload: read %zd new units.\n", AdditionalCorpus.size()); +  bool Reloaded = false;    for (auto &U : AdditionalCorpus) {      if (U.size() > MaxSize)        U.resize(MaxSize);      if (!Corpus.HasUnit(U)) {        if (size_t NumFeatures = RunOne(U)) {          Corpus.AddToCorpus(U, NumFeatures); -        PrintStats("RELOAD"); +        Reloaded = true;        }      }    } +  if (Reloaded) +    PrintStats("RELOAD");  }  void Fuzzer::ShuffleCorpus(UnitVector *V) { @@ -705,7 +708,8 @@ void Fuzzer::Loop() {      MD.SetCorpus(&Corpus);    while (true) {      auto Now = system_clock::now(); -    if (duration_cast<seconds>(Now - LastCorpusReload).count()) { +    if (duration_cast<seconds>(Now - LastCorpusReload).count() >= +        Options.ReloadIntervalSec) {        RereadOutputCorpus(MaxInputLen);        LastCorpusReload = Now;      } diff --git a/llvm/lib/Fuzzer/FuzzerOptions.h b/llvm/lib/Fuzzer/FuzzerOptions.h index 04a44d8c9ff..ed31fa22b34 100644 --- a/llvm/lib/Fuzzer/FuzzerOptions.h +++ b/llvm/lib/Fuzzer/FuzzerOptions.h @@ -32,7 +32,7 @@ struct FuzzingOptions {    bool UseMemmem = true;    bool UseValueProfile = false;    bool Shrink = false; -  bool Reload = true; +  int ReloadIntervalSec = 1;    bool ShuffleAtStartUp = true;    bool PreferSmall = true;    size_t MaxNumberOfRuns = -1L;  | 

