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 int UnitTimeoutSec = 300;
22 int TimeoutExitCode = 70;
24 int InterruptExitCode = 72;
25 int ErrorExitCode = 77;
26 bool IgnoreTimeouts = true;
27 bool IgnoreOOMs = true;
28 bool IgnoreCrashes = false;
29 int MaxTotalTimeSec = 0;
31 int MallocLimitMb = 0;
32 bool DoCrossOver = true;
34 bool ReduceDepth = false;
35 bool UseCounters = false;
36 bool UseMemmem = true;
38 int UseValueProfile = false;
40 bool ReduceInputs = false;
41 int ReloadIntervalSec = 1;
42 bool ShuffleAtStartUp = true;
43 bool PreferSmall = true;
44 size_t MaxNumberOfRuns = -1L;
45 int ReportSlowUnits = 10;
46 bool OnlyASCII = false;
47 bool Entropic = false;
48 size_t EntropicFeatureFrequencyThreshold = 0xFF;
49 size_t EntropicNumberOfRarestFeatures = 100;
50 std::string OutputCorpus;
51 std::string ArtifactPrefix = "./";
52 std::string ExactArtifactPath;
53 std::string ExitOnSrcPos;
54 std::string ExitOnItem;
55 std::string FocusFunction;
56 std::string DataFlowTrace;
57 std::string CollectDataFlow;
58 std::string FeaturesDir;
60 bool SaveArtifacts = true;
61 bool PrintNEW = true; // Print a status line when new units are found;
62 bool PrintNewCovPcs = false;
63 int PrintNewCovFuncs = 0;
64 bool PrintFinalStats = false;
65 bool PrintCorpusStats = false;
66 bool PrintCoverage = false;
67 bool DumpCoverage = false;
68 bool DetectLeaks = true;
69 int PurgeAllocatorIntervalSec = 1;
71 bool HandleAbrt = false;
72 bool HandleBus = false;
73 bool HandleFpe = false;
74 bool HandleIll = false;
75 bool HandleInt = false;
76 bool HandleSegv = false;
77 bool HandleTerm = false;
78 bool HandleXfsz = false;
79 bool HandleUsr1 = false;
80 bool HandleUsr2 = false;
85 #endif // LLVM_FUZZER_OPTIONS_H