1 // 2 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 3 // See https://llvm.org/LICENSE.txt for license information. 4 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 5 // 6 //===----------------------------------------------------------------------===// 7 // fuzzer::FuzzingOptions 8 //===----------------------------------------------------------------------===// 9 10 #ifndef LLVM_FUZZER_OPTIONS_H 11 #define LLVM_FUZZER_OPTIONS_H 12 13 #include "FuzzerDefs.h" 14 15 namespace fuzzer { 16 17 struct FuzzingOptions { 18 int Verbosity = 1; 19 size_t MaxLen = 0; 20 size_t LenControl = 1000; 21 bool KeepSeed = false; 22 int UnitTimeoutSec = 300; 23 int TimeoutExitCode = 70; 24 int OOMExitCode = 71; 25 int InterruptExitCode = 72; 26 int ErrorExitCode = 77; 27 bool IgnoreTimeouts = true; 28 bool IgnoreOOMs = true; 29 bool IgnoreCrashes = false; 30 int MaxTotalTimeSec = 0; 31 int RssLimitMb = 0; 32 int MallocLimitMb = 0; 33 bool DoCrossOver = true; 34 bool CrossOverUniformDist = false; 35 int MutateDepth = 5; 36 bool ReduceDepth = false; 37 bool UseCounters = false; 38 bool UseMemmem = true; 39 bool UseCmp = false; 40 int UseValueProfile = false; 41 bool Shrink = false; 42 bool ReduceInputs = false; 43 int ReloadIntervalSec = 1; 44 bool ShuffleAtStartUp = true; 45 bool PreferSmall = true; 46 size_t MaxNumberOfRuns = -1L; 47 int ReportSlowUnits = 10; 48 bool OnlyASCII = false; 49 bool Entropic = true; 50 bool ForkCorpusGroups = false; 51 size_t EntropicFeatureFrequencyThreshold = 0xFF; 52 size_t EntropicNumberOfRarestFeatures = 100; 53 bool EntropicScalePerExecTime = false; 54 std::string OutputCorpus; 55 std::string ArtifactPrefix = "./"; 56 std::string ExactArtifactPath; 57 std::string ExitOnSrcPos; 58 std::string ExitOnItem; 59 std::string FocusFunction; 60 std::string DataFlowTrace; 61 std::string CollectDataFlow; 62 std::string FeaturesDir; 63 std::string MutationGraphFile; 64 std::string StopFile; 65 bool SaveArtifacts = true; 66 bool PrintNEW = true; // Print a status line when new units are found; 67 bool PrintNewCovPcs = false; 68 int PrintNewCovFuncs = 0; 69 bool PrintFinalStats = false; 70 bool PrintCorpusStats = false; 71 bool PrintCoverage = false; 72 bool PrintFullCoverage = false; 73 bool DumpCoverage = false; 74 bool DetectLeaks = true; 75 int PurgeAllocatorIntervalSec = 1; 76 int TraceMalloc = 0; 77 bool HandleAbrt = false; 78 bool HandleAlrm = false; 79 bool HandleBus = false; 80 bool HandleFpe = false; 81 bool HandleIll = false; 82 bool HandleInt = false; 83 bool HandleSegv = false; 84 bool HandleTerm = false; 85 bool HandleXfsz = false; 86 bool HandleUsr1 = false; 87 bool HandleUsr2 = false; 88 bool HandleWinExcept = false; 89 }; 90 91 } // namespace fuzzer 92 93 #endif // LLVM_FUZZER_OPTIONS_H 94