mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
[libfuzzer] prune_corpus option for disabling pruning during the load.
Summary: The option is very useful for testing, plus I intend to measure its effect on fuzzer effectiveness. Differential Revision: http://reviews.llvm.org/D21084 llvm-svn: 272035
This commit is contained in:
parent
2b0d6027c2
commit
971be03956
@ -336,6 +336,7 @@ int FuzzerDriver(int *argc, char ***argv, UserCallback Callback) {
|
||||
Options.PrintNewCovPcs = Flags.print_new_cov_pcs;
|
||||
Options.PrintFinalStats = Flags.print_final_stats;
|
||||
Options.TruncateUnits = Flags.truncate_units;
|
||||
Options.PruneCorpus = Flags.prune_corpus;
|
||||
|
||||
unsigned Seed = Flags.seed;
|
||||
// Initialize Seed.
|
||||
|
@ -85,6 +85,8 @@ FUZZER_FLAG_INT(detect_leaks, 1, "If 1, and if LeakSanitizer is enabled "
|
||||
FUZZER_FLAG_INT(rss_limit_mb, 2048, "If non-zero, the fuzzer will exit upon"
|
||||
"reaching this limit of RSS memory usage.")
|
||||
FUZZER_FLAG_INT(truncate_units, 0, "Try truncated units when loading corpus.")
|
||||
FUZZER_FLAG_INT(prune_corpus, 1, "Prune corpus items without new coverage when "
|
||||
"loading corpus.")
|
||||
|
||||
FUZZER_DEPRECATED_FLAG(exit_on_first)
|
||||
FUZZER_DEPRECATED_FLAG(save_minimized_corpus)
|
||||
|
@ -331,6 +331,7 @@ public:
|
||||
bool PrintFinalStats = false;
|
||||
bool DetectLeaks = true;
|
||||
bool TruncateUnits = false;
|
||||
bool PruneCorpus = true;
|
||||
};
|
||||
|
||||
// Aggregates all available coverage measurements.
|
||||
|
@ -400,7 +400,8 @@ void Fuzzer::ShuffleAndMinimize() {
|
||||
}
|
||||
|
||||
for (const auto &U : Corpus) {
|
||||
if (RunOne(U)) {
|
||||
bool NewCoverage = RunOne(U);
|
||||
if (!Options.PruneCorpus || NewCoverage) {
|
||||
NewCorpus.push_back(U);
|
||||
if (Options.Verbosity >= 2)
|
||||
Printf("NEW0: %zd L %zd\n", MaxCoverage.BlockCoverage, U.size());
|
||||
|
13
lib/Fuzzer/test/fuzzer-prunecorpus.test
Normal file
13
lib/Fuzzer/test/fuzzer-prunecorpus.test
Normal file
@ -0,0 +1,13 @@
|
||||
RUN: rm -rf %t/PruneCorpus
|
||||
RUN: mkdir -p %t/PruneCorpus
|
||||
RUN: echo a > %t/PruneCorpus/a
|
||||
RUN: echo b > %t/PruneCorpus/b
|
||||
RUN: LLVMFuzzer-EmptyTest %t/PruneCorpus -prune_corpus=1 -runs=0 2>&1 | FileCheck %s --check-prefix=PRUNE
|
||||
RUN: LLVMFuzzer-EmptyTest %t/PruneCorpus -prune_corpus=0 -runs=0 2>&1 | FileCheck %s --check-prefix=NOPRUNE
|
||||
RUN: rm -rf %t/PruneCorpus
|
||||
|
||||
PRUNE: READ units: 2
|
||||
PRUNE: INITED{{.*}}units: 1
|
||||
NOPRUNE: READ units: 2
|
||||
NOPRUNE: INITED{{.*}}units: 2
|
||||
|
Loading…
Reference in New Issue
Block a user