summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2015-08-05 21:43:48 +0000
committerKostya Serebryany <kcc@google.com>2015-08-05 21:43:48 +0000
commit70926aed6bf3819c4b23ee0ae6cc510dbecba96e (patch)
treeae9ab03b96684ae836384d39bf35140a96f78893 /llvm/lib
parent1ce0035bf0cbbe3709473578a13e00b0731e8140 (diff)
downloadbcm5719-llvm-70926aed6bf3819c4b23ee0ae6cc510dbecba96e.tar.gz
bcm5719-llvm-70926aed6bf3819c4b23ee0ae6cc510dbecba96e.zip
[libFuzzer] add option -report_slow_units=Nsec to control when slow units are printed
llvm-svn: 244152
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Fuzzer/FuzzerDriver.cpp1
-rw-r--r--llvm/lib/Fuzzer/FuzzerFlags.def2
-rw-r--r--llvm/lib/Fuzzer/FuzzerInternal.h1
-rw-r--r--llvm/lib/Fuzzer/FuzzerLoop.cpp7
4 files changed, 8 insertions, 3 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerDriver.cpp b/llvm/lib/Fuzzer/FuzzerDriver.cpp
index c0f8220ad65..7f3ec7ba2ed 100644
--- a/llvm/lib/Fuzzer/FuzzerDriver.cpp
+++ b/llvm/lib/Fuzzer/FuzzerDriver.cpp
@@ -247,6 +247,7 @@ int FuzzerDriver(int argc, char **argv, UserSuppliedFuzzer &USF) {
if (Flags.sync_command)
Options.SyncCommand = Flags.sync_command;
Options.SyncTimeout = Flags.sync_timeout;
+ Options.ReportSlowUnits = Flags.report_slow_units;
Fuzzer F(USF, Options);
if (Flags.apply_tokens)
diff --git a/llvm/lib/Fuzzer/FuzzerFlags.def b/llvm/lib/Fuzzer/FuzzerFlags.def
index 742f672e201..ac3ac6ef3f8 100644
--- a/llvm/lib/Fuzzer/FuzzerFlags.def
+++ b/llvm/lib/Fuzzer/FuzzerFlags.def
@@ -58,3 +58,5 @@ FUZZER_FLAG_STRING(sync_command, "Execute an external command "
"\"<sync_command> <test_corpus>\" "
"to synchronize the test corpus.")
FUZZER_FLAG_INT(sync_timeout, 600, "Minimum timeout between syncs.")
+FUZZER_FLAG_INT(report_slow_units, 10,
+ "Report slowest units if they run for more than this number of seconds.")
diff --git a/llvm/lib/Fuzzer/FuzzerInternal.h b/llvm/lib/Fuzzer/FuzzerInternal.h
index cc86c361460..610b4375f24 100644
--- a/llvm/lib/Fuzzer/FuzzerInternal.h
+++ b/llvm/lib/Fuzzer/FuzzerInternal.h
@@ -79,6 +79,7 @@ class Fuzzer {
int PreferSmallDuringInitialShuffle = -1;
size_t MaxNumberOfRuns = ULONG_MAX;
int SyncTimeout = 600;
+ int ReportSlowUnits = 10;
std::string OutputCorpus;
std::string SyncCommand;
std::vector<std::string> Tokens;
diff --git a/llvm/lib/Fuzzer/FuzzerLoop.cpp b/llvm/lib/Fuzzer/FuzzerLoop.cpp
index 5e8e2e4aae3..69b49b025a0 100644
--- a/llvm/lib/Fuzzer/FuzzerLoop.cpp
+++ b/llvm/lib/Fuzzer/FuzzerLoop.cpp
@@ -159,12 +159,13 @@ size_t Fuzzer::RunOne(const Unit &U) {
auto UnitStopTime = system_clock::now();
auto TimeOfUnit =
duration_cast<seconds>(UnitStopTime - UnitStartTime).count();
- if (TimeOfUnit > TimeOfLongestUnitInSeconds) {
+ if (TimeOfUnit > TimeOfLongestUnitInSeconds &&
+ TimeOfUnit >= Options.ReportSlowUnits) {
TimeOfLongestUnitInSeconds = TimeOfUnit;
- Printf("Longest unit: %zd s:\n", TimeOfLongestUnitInSeconds);
+ Printf("Slowest unit: %zd s:\n", TimeOfLongestUnitInSeconds);
if (U.size() <= kMaxUnitSizeToPrint)
Print(U, "\n");
- WriteUnitToFileWithPrefix(U, "long-running-unit-");
+ WriteUnitToFileWithPrefix(U, "slow-unit-");
}
return Res;
}
OpenPOWER on IntegriCloud