95 lines · c
1//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-exception5//6//===----------------------------------------------------------------------===//7// fuzzer::FuzzingOptions8//===----------------------------------------------------------------------===//9 10#ifndef LLVM_FUZZER_OPTIONS_H11#define LLVM_FUZZER_OPTIONS_H12 13#include "FuzzerDefs.h"14 15namespace fuzzer {16 17struct FuzzingOptions {18 int Verbosity = 1;19 size_t MaxLen = 0;20 size_t LenControl = 1000;21 bool KeepSeed = false;22 int UnitTimeoutSec = 300;23 int TimeoutExitCode = 70;24 int OOMExitCode = 71;25 int InterruptExitCode = 72;26 int ErrorExitCode = 77;27 bool IgnoreTimeouts = true;28 bool IgnoreOOMs = true;29 bool IgnoreCrashes = false;30 int MaxTotalTimeSec = 0;31 int RssLimitMb = 0;32 int MallocLimitMb = 0;33 bool DoCrossOver = true;34 bool CrossOverUniformDist = false;35 int MutateDepth = 5;36 bool ReduceDepth = false;37 bool UseCounters = false;38 bool UseMemmem = true;39 bool UseCmp = false;40 int UseValueProfile = false;41 bool Shrink = 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;49 bool Entropic = true;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;64 std::string StopFile;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;76 int TraceMalloc = 0;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 HandleTrap = false;86 bool HandleXfsz = false;87 bool HandleUsr1 = false;88 bool HandleUsr2 = false;89 bool HandleWinExcept = false;90};91 92} // namespace fuzzer93 94#endif // LLVM_FUZZER_OPTIONS_H95