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 | |