//===- FuzzerOptions.h - Internal header for the Fuzzer ---------*- C++ -* ===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // fuzzer::FuzzingOptions //===----------------------------------------------------------------------===// #ifndef LLVM_FUZZER_OPTIONS_H #define LLVM_FUZZER_OPTIONS_H #include "FuzzerDefs.h" namespace fuzzer { struct FuzzingOptions { int Verbosity = 1; size_t MaxLen = 0; int UnitTimeoutSec = 300; int TimeoutExitCode = 77; int ErrorExitCode = 77; int MaxTotalTimeSec = 0; int RssLimitMb = 0; bool DoCrossOver = true; int MutateDepth = 5; bool UseCounters = false; bool UseIndirCalls = true; bool UseMemcmp = true; bool UseMemmem = true; bool UseValueProfile = false; bool Reload = true; bool ShuffleAtStartUp = true; bool PreferSmall = true; size_t MaxNumberOfRuns = -1L; int ReportSlowUnits = 10; bool OnlyASCII = false; std::string OutputCorpus; std::string ArtifactPrefix = "./"; std::string ExactArtifactPath; std::string ExitOnSrcPos; bool SaveArtifacts = true; bool PrintNEW = true; // Print a status line when new units are found; bool OutputCSV = false; bool PrintNewCovPcs = false; bool PrintFinalStats = false; bool PrintCorpusStats = false; bool PrintCoverage = false; bool DetectLeaks = true; bool PruneCorpus = true; }; } // namespace fuzzer #endif // LLVM_FUZZER_OPTIONS_H