diff --git a/lib/Fuzzer/FuzzerDriver.cpp b/lib/Fuzzer/FuzzerDriver.cpp index 1ff822c6881..f4f1a4d47d1 100644 --- a/lib/Fuzzer/FuzzerDriver.cpp +++ b/lib/Fuzzer/FuzzerDriver.cpp @@ -200,10 +200,10 @@ static void PulseThread() { } } -static void WorkerThread(const std::string &Cmd, std::atomic *Counter, - int NumJobs, std::atomic *HasErrors) { +static void WorkerThread(const std::string &Cmd, std::atomic *Counter, + unsigned NumJobs, std::atomic *HasErrors) { while (true) { - int C = (*Counter)++; + unsigned C = (*Counter)++; if (C >= NumJobs) break; std::string Log = "fuzz-" + std::to_string(C) + ".log"; std::string ToRun = Cmd + " > " + Log + " 2>&1\n"; @@ -213,7 +213,7 @@ static void WorkerThread(const std::string &Cmd, std::atomic *Counter, if (ExitCode != 0) *HasErrors = true; std::lock_guard Lock(Mu); - Printf("================== Job %d exited with exit code %d ============\n", + Printf("================== Job %u exited with exit code %d ============\n", C, ExitCode); fuzzer::CopyFileToErr(Log); } @@ -231,14 +231,14 @@ std::string CloneArgsWithoutX(const std::vector &Args, } static int RunInMultipleProcesses(const std::vector &Args, - int NumWorkers, int NumJobs) { - std::atomic Counter(0); + unsigned NumWorkers, unsigned NumJobs) { + std::atomic Counter(0); std::atomic HasErrors(false); std::string Cmd = CloneArgsWithoutX(Args, "jobs", "workers"); std::vector V; std::thread Pulse(PulseThread); Pulse.detach(); - for (int i = 0; i < NumWorkers; i++) + for (unsigned i = 0; i < NumWorkers; i++) V.push_back(std::thread(WorkerThread, Cmd, &Counter, NumJobs, &HasErrors)); for (auto &T : V) T.join(); @@ -379,7 +379,7 @@ int FuzzerDriver(int *argc, char ***argv, UserCallback Callback) { if (Flags.jobs > 0 && Flags.workers == 0) { Flags.workers = std::min(NumberOfCpuCores() / 2, Flags.jobs); if (Flags.workers > 1) - Printf("Running %d workers\n", Flags.workers); + Printf("Running %u workers\n", Flags.workers); } if (Flags.workers > 0 && Flags.jobs > 0) diff --git a/lib/Fuzzer/FuzzerFlags.def b/lib/Fuzzer/FuzzerFlags.def index 6a27ca30e4a..d32d6fca1ec 100644 --- a/lib/Fuzzer/FuzzerFlags.def +++ b/lib/Fuzzer/FuzzerFlags.def @@ -54,10 +54,10 @@ FUZZER_FLAG_INT(use_value_profile, 0, "Experimental. Use value profile to guide fuzzing.") FUZZER_FLAG_INT(use_cmp, 1, "Use CMP traces to guide mutations") FUZZER_FLAG_INT(shrink, 0, "Experimental. Try to shrink corpus elements.") -FUZZER_FLAG_INT(jobs, 0, "Number of jobs to run. If jobs >= 1 we spawn" +FUZZER_FLAG_UNSIGNED(jobs, 0, "Number of jobs to run. If jobs >= 1 we spawn" " this number of jobs in separate worker processes" " with stdout/stderr redirected to fuzz-JOB.log.") -FUZZER_FLAG_INT(workers, 0, +FUZZER_FLAG_UNSIGNED(workers, 0, "Number of simultaneous worker processes to run the jobs." " If zero, \"min(jobs,NumberOfCpuCores()/2)\" is used.") FUZZER_FLAG_INT(reload, 1, diff --git a/lib/Fuzzer/FuzzerUtil.cpp b/lib/Fuzzer/FuzzerUtil.cpp index 18f690c6d97..f5fd3a85187 100644 --- a/lib/Fuzzer/FuzzerUtil.cpp +++ b/lib/Fuzzer/FuzzerUtil.cpp @@ -195,7 +195,7 @@ void PrintPC(const char *SymbolizedFMT, const char *FallbackFMT, uintptr_t PC) { Printf(FallbackFMT, PC); } -int NumberOfCpuCores() { +unsigned NumberOfCpuCores() { unsigned N = std::thread::hardware_concurrency(); if (!N) { Printf("WARNING: std::thread::hardware_concurrency not well defined for " diff --git a/lib/Fuzzer/FuzzerUtil.h b/lib/Fuzzer/FuzzerUtil.h index cac93cc141b..78b7c2489b0 100644 --- a/lib/Fuzzer/FuzzerUtil.h +++ b/lib/Fuzzer/FuzzerUtil.h @@ -38,7 +38,7 @@ void PrintPC(const char *SymbolizedFMT, const char *FallbackFMT, uintptr_t PC); std::string DescribePC(const char *SymbolizedFMT, uintptr_t PC); -int NumberOfCpuCores(); +unsigned NumberOfCpuCores(); bool ExecuteCommandAndReadOutput(const std::string &Command, std::string *Out);