diff options
| author | Marcos Pividori <mpividori@google.com> | 2016-12-13 17:45:53 +0000 |
|---|---|---|
| committer | Marcos Pividori <mpividori@google.com> | 2016-12-13 17:45:53 +0000 |
| commit | 6e3d885c791b5d6f2120c0ec345b5604851709d2 (patch) | |
| tree | 69fe5be3bd9e977203fd14d66f9a1a7ce9d9fb7f | |
| parent | 463f8bdd0b85ea19177ff5e22d2fca34859b2234 (diff) | |
| download | bcm5719-llvm-6e3d885c791b5d6f2120c0ec345b5604851709d2.tar.gz bcm5719-llvm-6e3d885c791b5d6f2120c0ec345b5604851709d2.zip | |
[libFuzzer] Properly use unsigned for workers, jobs and NumberOfCpuCores.
std::thread::hardware_concurrency() returns an unsigned, so I modify
NumberOfCpuCores() to return unsigned too.
The number of cpus is used to define the number of workers, so I decided
to update the worker and jobs flags to be declared as unsigned too.
Differential Revision: https://reviews.llvm.org/D27685
llvm-svn: 289559
| -rw-r--r-- | llvm/lib/Fuzzer/FuzzerDriver.cpp | 16 | ||||
| -rw-r--r-- | llvm/lib/Fuzzer/FuzzerFlags.def | 4 | ||||
| -rw-r--r-- | llvm/lib/Fuzzer/FuzzerUtil.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Fuzzer/FuzzerUtil.h | 2 |
4 files changed, 12 insertions, 12 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerDriver.cpp b/llvm/lib/Fuzzer/FuzzerDriver.cpp index 1ff822c6881..f4f1a4d47d1 100644 --- a/llvm/lib/Fuzzer/FuzzerDriver.cpp +++ b/llvm/lib/Fuzzer/FuzzerDriver.cpp @@ -200,10 +200,10 @@ static void PulseThread() { } } -static void WorkerThread(const std::string &Cmd, std::atomic<int> *Counter, - int NumJobs, std::atomic<bool> *HasErrors) { +static void WorkerThread(const std::string &Cmd, std::atomic<unsigned> *Counter, + unsigned NumJobs, std::atomic<bool> *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<int> *Counter, if (ExitCode != 0) *HasErrors = true; std::lock_guard<std::mutex> 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<std::string> &Args, } static int RunInMultipleProcesses(const std::vector<std::string> &Args, - int NumWorkers, int NumJobs) { - std::atomic<int> Counter(0); + unsigned NumWorkers, unsigned NumJobs) { + std::atomic<unsigned> Counter(0); std::atomic<bool> HasErrors(false); std::string Cmd = CloneArgsWithoutX(Args, "jobs", "workers"); std::vector<std::thread> 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/llvm/lib/Fuzzer/FuzzerFlags.def b/llvm/lib/Fuzzer/FuzzerFlags.def index 6a27ca30e4a..d32d6fca1ec 100644 --- a/llvm/lib/Fuzzer/FuzzerFlags.def +++ b/llvm/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/llvm/lib/Fuzzer/FuzzerUtil.cpp b/llvm/lib/Fuzzer/FuzzerUtil.cpp index 18f690c6d97..f5fd3a85187 100644 --- a/llvm/lib/Fuzzer/FuzzerUtil.cpp +++ b/llvm/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/llvm/lib/Fuzzer/FuzzerUtil.h b/llvm/lib/Fuzzer/FuzzerUtil.h index cac93cc141b..78b7c2489b0 100644 --- a/llvm/lib/Fuzzer/FuzzerUtil.h +++ b/llvm/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); |

