summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/fuzzer/FuzzerDriver.cpp
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2019-02-12 02:18:53 +0000
committerKostya Serebryany <kcc@google.com>2019-02-12 02:18:53 +0000
commitcdbb9dc9625a8ce14cb0841a4aab613b0ead23d1 (patch)
tree7814f131702cdade0fdf2a7cbfaeae0ea9b6dcfa /compiler-rt/lib/fuzzer/FuzzerDriver.cpp
parentcfc512ab44e20049b82e7cc61102db88f91ccc93 (diff)
downloadbcm5719-llvm-cdbb9dc9625a8ce14cb0841a4aab613b0ead23d1.tar.gz
bcm5719-llvm-cdbb9dc9625a8ce14cb0841a4aab613b0ead23d1.zip
[libFuzzer] teach the fork mode to ignore OOMs and timeouts
llvm-svn: 353792
Diffstat (limited to 'compiler-rt/lib/fuzzer/FuzzerDriver.cpp')
-rw-r--r--compiler-rt/lib/fuzzer/FuzzerDriver.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/compiler-rt/lib/fuzzer/FuzzerDriver.cpp b/compiler-rt/lib/fuzzer/FuzzerDriver.cpp
index 232b3a8732a..8ad99d0a3c2 100644
--- a/compiler-rt/lib/fuzzer/FuzzerDriver.cpp
+++ b/compiler-rt/lib/fuzzer/FuzzerDriver.cpp
@@ -533,6 +533,12 @@ void FuzzWithFork(Fuzzer *F, const FuzzingOptions &Options,
Printf("INFO: temp_files: %zd files_added: %zd newft: %zd ft: %zd\n",
TempFiles.size(), FilesToAdd.size(), NewFeatures.size(),
Features.size());
+ // Continue if our crash is one of the ignorred ones.
+ if (Options.IgnoreTimeouts && ExitCode == Options.TimeoutExitCode)
+ continue;
+ if (Options.IgnoreOOMs && ExitCode == Options.OOMExitCode)
+ continue;
+ // And exit if we don't ignore this crash.
if (ExitCode != 0) break;
}
@@ -681,6 +687,8 @@ int FuzzerDriver(int *argc, char ***argv, UserCallback Callback) {
Options.UnitTimeoutSec = Flags.timeout;
Options.ErrorExitCode = Flags.error_exitcode;
Options.TimeoutExitCode = Flags.timeout_exitcode;
+ Options.IgnoreTimeouts = Flags.ignore_timeouts;
+ Options.IgnoreOOMs = Flags.ignore_ooms;
Options.MaxTotalTimeSec = Flags.max_total_time;
Options.DoCrossOver = Flags.cross_over;
Options.MutateDepth = Flags.mutate_depth;
OpenPOWER on IntegriCloud