1 //===- FuzzerOptions.h - Internal header for the Fuzzer ---------*- C++ -* ===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // fuzzer::FuzzingOptions 10 //===----------------------------------------------------------------------===// 11 12 #ifndef LLVM_FUZZER_OPTIONS_H 13 #define LLVM_FUZZER_OPTIONS_H 14 15 #include "FuzzerDefs.h" 16 17 namespace fuzzer { 18 19 struct FuzzingOptions { 20 int Verbosity = 1; 21 size_t MaxLen = 0; 22 int UnitTimeoutSec = 300; 23 int TimeoutExitCode = 77; 24 int ErrorExitCode = 77; 25 int MaxTotalTimeSec = 0; 26 int RssLimitMb = 0; 27 bool DoCrossOver = true; 28 int MutateDepth = 5; 29 bool UseCounters = false; 30 bool UseIndirCalls = true; 31 bool UseMemcmp = true; 32 bool UseMemmem = true; 33 bool UseCmp = false; 34 bool UseValueProfile = false; 35 bool Shrink = false; 36 int ReloadIntervalSec = 1; 37 bool ShuffleAtStartUp = true; 38 bool PreferSmall = true; 39 size_t MaxNumberOfRuns = -1L; 40 int ReportSlowUnits = 10; 41 bool OnlyASCII = false; 42 std::string OutputCorpus; 43 std::string ArtifactPrefix = "./"; 44 std::string ExactArtifactPath; 45 std::string ExitOnSrcPos; 46 std::string ExitOnItem; 47 bool SaveArtifacts = true; 48 bool PrintNEW = true; // Print a status line when new units are found; 49 bool OutputCSV = false; 50 bool PrintNewCovPcs = false; 51 bool PrintFinalStats = false; 52 bool PrintCorpusStats = false; 53 bool PrintCoverage = false; 54 bool DumpCoverage = false; 55 bool DetectLeaks = true; 56 int TraceMalloc = 0; 57 bool HandleAbrt = false; 58 bool HandleBus = false; 59 bool HandleFpe = false; 60 bool HandleIll = false; 61 bool HandleInt = false; 62 bool HandleSegv = false; 63 bool HandleTerm = false; 64 }; 65 66 } // namespace fuzzer 67 68 #endif // LLVM_FUZZER_OPTIONS_H 69