xref: /openbsd-src/gnu/llvm/compiler-rt/lib/fuzzer/FuzzerOptions.h (revision 810390e339a5425391477d5d41c78d7cab2424ac)
13cab2bb3Spatrick //
23cab2bb3Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
33cab2bb3Spatrick // See https://llvm.org/LICENSE.txt for license information.
43cab2bb3Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
53cab2bb3Spatrick //
63cab2bb3Spatrick //===----------------------------------------------------------------------===//
73cab2bb3Spatrick // fuzzer::FuzzingOptions
83cab2bb3Spatrick //===----------------------------------------------------------------------===//
93cab2bb3Spatrick 
103cab2bb3Spatrick #ifndef LLVM_FUZZER_OPTIONS_H
113cab2bb3Spatrick #define LLVM_FUZZER_OPTIONS_H
123cab2bb3Spatrick 
133cab2bb3Spatrick #include "FuzzerDefs.h"
143cab2bb3Spatrick 
153cab2bb3Spatrick namespace fuzzer {
163cab2bb3Spatrick 
173cab2bb3Spatrick struct FuzzingOptions {
183cab2bb3Spatrick   int Verbosity = 1;
193cab2bb3Spatrick   size_t MaxLen = 0;
203cab2bb3Spatrick   size_t LenControl = 1000;
21d89ec533Spatrick   bool KeepSeed = false;
223cab2bb3Spatrick   int UnitTimeoutSec = 300;
233cab2bb3Spatrick   int TimeoutExitCode = 70;
243cab2bb3Spatrick   int OOMExitCode = 71;
253cab2bb3Spatrick   int InterruptExitCode = 72;
263cab2bb3Spatrick   int ErrorExitCode = 77;
273cab2bb3Spatrick   bool IgnoreTimeouts = true;
283cab2bb3Spatrick   bool IgnoreOOMs = true;
293cab2bb3Spatrick   bool IgnoreCrashes = false;
303cab2bb3Spatrick   int MaxTotalTimeSec = 0;
313cab2bb3Spatrick   int RssLimitMb = 0;
323cab2bb3Spatrick   int MallocLimitMb = 0;
333cab2bb3Spatrick   bool DoCrossOver = true;
34d89ec533Spatrick   bool CrossOverUniformDist = false;
353cab2bb3Spatrick   int MutateDepth = 5;
363cab2bb3Spatrick   bool ReduceDepth = false;
373cab2bb3Spatrick   bool UseCounters = false;
383cab2bb3Spatrick   bool UseMemmem = true;
393cab2bb3Spatrick   bool UseCmp = false;
403cab2bb3Spatrick   int UseValueProfile = false;
413cab2bb3Spatrick   bool Shrink = false;
423cab2bb3Spatrick   bool ReduceInputs = false;
433cab2bb3Spatrick   int ReloadIntervalSec = 1;
443cab2bb3Spatrick   bool ShuffleAtStartUp = true;
453cab2bb3Spatrick   bool PreferSmall = true;
463cab2bb3Spatrick   size_t MaxNumberOfRuns = -1L;
473cab2bb3Spatrick   int ReportSlowUnits = 10;
483cab2bb3Spatrick   bool OnlyASCII = false;
49d89ec533Spatrick   bool Entropic = true;
50*810390e3Srobert   bool ForkCorpusGroups = false;
511f9cb04fSpatrick   size_t EntropicFeatureFrequencyThreshold = 0xFF;
521f9cb04fSpatrick   size_t EntropicNumberOfRarestFeatures = 100;
53d89ec533Spatrick   bool EntropicScalePerExecTime = false;
543cab2bb3Spatrick   std::string OutputCorpus;
553cab2bb3Spatrick   std::string ArtifactPrefix = "./";
563cab2bb3Spatrick   std::string ExactArtifactPath;
573cab2bb3Spatrick   std::string ExitOnSrcPos;
583cab2bb3Spatrick   std::string ExitOnItem;
593cab2bb3Spatrick   std::string FocusFunction;
603cab2bb3Spatrick   std::string DataFlowTrace;
613cab2bb3Spatrick   std::string CollectDataFlow;
623cab2bb3Spatrick   std::string FeaturesDir;
63d89ec533Spatrick   std::string MutationGraphFile;
643cab2bb3Spatrick   std::string StopFile;
653cab2bb3Spatrick   bool SaveArtifacts = true;
663cab2bb3Spatrick   bool PrintNEW = true; // Print a status line when new units are found;
673cab2bb3Spatrick   bool PrintNewCovPcs = false;
683cab2bb3Spatrick   int PrintNewCovFuncs = 0;
693cab2bb3Spatrick   bool PrintFinalStats = false;
703cab2bb3Spatrick   bool PrintCorpusStats = false;
713cab2bb3Spatrick   bool PrintCoverage = false;
72d89ec533Spatrick   bool PrintFullCoverage = false;
733cab2bb3Spatrick   bool DumpCoverage = false;
743cab2bb3Spatrick   bool DetectLeaks = true;
753cab2bb3Spatrick   int PurgeAllocatorIntervalSec = 1;
763cab2bb3Spatrick   int  TraceMalloc = 0;
773cab2bb3Spatrick   bool HandleAbrt = false;
78d89ec533Spatrick   bool HandleAlrm = false;
793cab2bb3Spatrick   bool HandleBus = false;
803cab2bb3Spatrick   bool HandleFpe = false;
813cab2bb3Spatrick   bool HandleIll = false;
823cab2bb3Spatrick   bool HandleInt = false;
833cab2bb3Spatrick   bool HandleSegv = false;
843cab2bb3Spatrick   bool HandleTerm = false;
853cab2bb3Spatrick   bool HandleXfsz = false;
863cab2bb3Spatrick   bool HandleUsr1 = false;
873cab2bb3Spatrick   bool HandleUsr2 = false;
88d89ec533Spatrick   bool HandleWinExcept = false;
893cab2bb3Spatrick };
903cab2bb3Spatrick 
913cab2bb3Spatrick }  // namespace fuzzer
923cab2bb3Spatrick 
933cab2bb3Spatrick #endif  // LLVM_FUZZER_OPTIONS_H
94