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
6 //===----------------------------------------------------------------------===//
7 // fuzzer::FuzzingOptions
8 //===----------------------------------------------------------------------===//
10 #ifndef LLVM_FUZZER_OPTIONS_H
11 #define LLVM_FUZZER_OPTIONS_H
13 #include "FuzzerDefs.h"
17 struct FuzzingOptions
{
20 size_t LenControl
= 1000;
21 bool KeepSeed
= false;
22 int UnitTimeoutSec
= 300;
23 int TimeoutExitCode
= 70;
25 int InterruptExitCode
= 72;
26 int ErrorExitCode
= 77;
27 bool IgnoreTimeouts
= true;
28 bool IgnoreOOMs
= true;
29 bool IgnoreCrashes
= false;
30 int MaxTotalTimeSec
= 0;
32 int MallocLimitMb
= 0;
33 bool DoCrossOver
= true;
34 bool CrossOverUniformDist
= false;
36 bool ReduceDepth
= false;
37 bool UseCounters
= false;
38 bool UseMemmem
= true;
40 int UseValueProfile
= 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;
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
;
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;
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;
93 #endif // LLVM_FUZZER_OPTIONS_H