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