summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Fuzzer/FuzzerDriver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Fuzzer/FuzzerDriver.cpp')
-rw-r--r--llvm/lib/Fuzzer/FuzzerDriver.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerDriver.cpp b/llvm/lib/Fuzzer/FuzzerDriver.cpp
index d432fe84370..4051bf680ff 100644
--- a/llvm/lib/Fuzzer/FuzzerDriver.cpp
+++ b/llvm/lib/Fuzzer/FuzzerDriver.cpp
@@ -219,8 +219,8 @@ static void WorkerThread(const std::string &Cmd, std::atomic<int> *Counter,
}
}
-static std::string CloneArgsWithoutX(const std::vector<std::string> &Args,
- const char *X1, const char *X2) {
+std::string CloneArgsWithoutX(const std::vector<std::string> &Args,
+ const char *X1, const char *X2) {
std::string Cmd;
for (auto &S : Args) {
if (FlagValue(S.c_str(), X1) || FlagValue(S.c_str(), X2))
@@ -230,11 +230,6 @@ static std::string CloneArgsWithoutX(const std::vector<std::string> &Args,
return Cmd;
}
-static std::string CloneArgsWithoutX(const std::vector<std::string> &Args,
- const char *X) {
- return CloneArgsWithoutX(Args, X, X);
-}
-
static int RunInMultipleProcesses(const std::vector<std::string> &Args,
int NumWorkers, int NumJobs) {
std::atomic<int> Counter(0);
@@ -499,6 +494,16 @@ int FuzzerDriver(int *argc, char ***argv, UserCallback Callback) {
exit(0);
}
+ if (Flags.experimental_merge) {
+ if (Options.MaxLen == 0)
+ F->SetMaxInputLen(kMaxSaneLen);
+ if (Flags.merge_control_file)
+ F->CrashResistantMergeInternalStep(Flags.merge_control_file);
+ else
+ F->CrashResistantMerge(Args, *Inputs);
+ exit(0);
+ }
+
size_t TemporaryMaxLen = Options.MaxLen ? Options.MaxLen : kMaxSaneLen;
UnitVector InitialCorpus;
OpenPOWER on IntegriCloud