Index: lib/Fuzzer/FuzzerDriver.cpp =================================================================== --- lib/Fuzzer/FuzzerDriver.cpp +++ lib/Fuzzer/FuzzerDriver.cpp @@ -206,8 +206,11 @@ while (true) { unsigned C = (*Counter)++; if (C >= NumJobs) break; + std::string Seed; + if (Flags.seed) + Seed = "-seed=" + std::to_string(C + Flags.seed); std::string Log = "fuzz-" + std::to_string(C) + ".log"; - std::string ToRun = Cmd + " > " + Log + " 2>&1\n"; + std::string ToRun = Cmd + " " + Seed + " > " + Log + " 2>&1\n"; if (Flags.verbosity) Printf("%s", ToRun.c_str()); int ExitCode = ExecuteCommand(ToRun); Index: lib/Fuzzer/test/fuzzer-jobs.test =================================================================== --- lib/Fuzzer/test/fuzzer-jobs.test +++ lib/Fuzzer/test/fuzzer-jobs.test @@ -8,7 +8,7 @@ RUN: rm -f fuzz-{0,1}.log # Start fuzzer and in parallel check that the output files # that should be created exist. -RUN: LLVMFuzzer-EmptyTest -max_total_time=4 -jobs=2 -workers=2 FuzzerJobsTestCORPUS > %t-fuzzer-jobs-test.log 2>&1 & export FUZZER_PID=$! +RUN: LLVMFuzzer-EmptyTest -seed=127 -max_total_time=4 -jobs=2 -workers=2 FuzzerJobsTestCORPUS > %t-fuzzer-jobs-test.log 2>&1 & export FUZZER_PID=$! # Wait a short while to give time for the child processes # to start fuzzing RUN: sleep 2 @@ -27,5 +27,8 @@ RUN: rm %t-fuzzer-jobs-test.log RUN: cd ../ +CHECK-DAG: Seed: 127 +CHECK-DAG: Seed: 128 + CHECK-DAG: Job 0 exited with exit code 0 CHECK-DAG: Job 1 exited with exit code 0