1 //
2 //                     The LLVM Compiler Infrastructure
3 //
4 // This file is distributed under the University of Illinois Open Source
5 // License. See LICENSE.TXT for details.
6 //
7 //===----------------------------------------------------------------------===//
8 // fuzzer::FuzzingOptions
9 //===----------------------------------------------------------------------===//
10 
11 #ifndef LLVM_FUZZER_OPTIONS_H
12 #define LLVM_FUZZER_OPTIONS_H
13 
14 #include "FuzzerDefs.h"
15 
16 namespace fuzzer {
17 
18 struct FuzzingOptions {
19   int Verbosity = 1;
20   size_t MaxLen = 0;
21   bool ExperimentalLenControl = false;
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 UseMemmem = true;
32   bool UseCmp = false;
33   bool UseValueProfile = false;
34   bool Shrink = false;
35   bool ReduceInputs = 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 PrintNewCovPcs = false;
50   int PrintNewCovFuncs = 0;
51   bool PrintFinalStats = false;
52   bool PrintCorpusStats = false;
53   bool PrintCoverage = false;
54   bool DumpCoverage = false;
55   bool UseClangCoverage = false;
56   bool DetectLeaks = true;
57   int PurgeAllocatorIntervalSec = 1;
58   int UseFeatureFrequency = false;
59   int  TraceMalloc = 0;
60   bool HandleAbrt = false;
61   bool HandleBus = false;
62   bool HandleFpe = false;
63   bool HandleIll = false;
64   bool HandleInt = false;
65   bool HandleSegv = false;
66   bool HandleTerm = false;
67   bool HandleXfsz = false;
68 };
69 
70 }  // namespace fuzzer
71 
72 #endif  // LLVM_FUZZER_OPTIONS_H
73