//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
// fuzzer::FuzzingOptions
//===----------------------------------------------------------------------===//
#ifndef LLVM_FUZZER_OPTIONS_H
#define LLVM_FUZZER_OPTIONS_H
#include "FuzzerDefs.h"
namespace fuzzer {
struct FuzzingOptions {
int Verbosity =
1;
size_t MaxLen =
0;
size_t LenControl =
1000;
bool KeepSeed =
false;
int UnitTimeoutSec =
300;
int TimeoutExitCode =
70;
int OOMExitCode =
71;
int InterruptExitCode =
72;
int ErrorExitCode =
77;
bool IgnoreTimeouts = true;
bool IgnoreOOMs = true;
bool IgnoreCrashes =
false;
int MaxTotalTimeSec =
0;
int RssLimitMb =
0;
int MallocLimitMb =
0;
bool DoCrossOver = true;
bool CrossOverUniformDist =
false;
int MutateDepth =
5;
bool ReduceDepth =
false;
bool UseCounters =
false;
bool UseMemmem = true;
bool UseCmp =
false;
int UseValueProfile =
false;
bool Shrink =
false;
bool ReduceInputs =
false;
int ReloadIntervalSec =
1;
bool ShuffleAtStartUp = true;
bool PreferSmall = true;
size_t MaxNumberOfRuns = -
1L;
int ReportSlowUnits =
10;
bool OnlyASCII =
false;
bool Entropic = true;
bool ForkCorpusGroups =
false;
size_t EntropicFeatureFrequencyThreshold =
0xFF;
size_t EntropicNumberOfRarestFeatures =
100;
bool EntropicScalePerExecTime =
false;
std::string OutputCorpus;
std::string ArtifactPrefix =
"./";
std::string ExactArtifactPath;
std::string ExitOnSrcPos;
std::string ExitOnItem;
std::string FocusFunction;
std::string DataFlowTrace;
std::string CollectDataFlow;
std::string FeaturesDir;
std::string MutationGraphFile;
std::string StopFile;
bool SaveArtifacts = true;
bool PrintNEW = true;
// Print a status line when new units are found;
bool PrintNewCovPcs =
false;
int PrintNewCovFuncs =
0;
bool PrintFinalStats =
false;
bool PrintCorpusStats =
false;
bool PrintCoverage =
false;
bool PrintFullCoverage =
false;
bool DumpCoverage =
false;
bool DetectLeaks = true;
int PurgeAllocatorIntervalSec =
1;
int TraceMalloc =
0;
bool HandleAbrt =
false;
bool HandleAlrm =
false;
bool HandleBus =
false;
bool HandleFpe =
false;
bool HandleIll =
false;
bool HandleInt =
false;
bool HandleSegv =
false;
bool HandleTerm =
false;
bool HandleTrap =
false;
bool HandleXfsz =
false;
bool HandleUsr1 =
false;
bool HandleUsr2 =
false;
bool HandleWinExcept =
false;
};
}
// namespace fuzzer
#endif // LLVM_FUZZER_OPTIONS_H