mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 12:50:30 +00:00
[LibFuzzer] test_single_input option to run a single test case.
-test_single_input flag specifies a file name with test data. Review URL: http://reviews.llvm.org/D13359 Patch by Mike Aizatsky! llvm-svn: 249096
This commit is contained in:
parent
f80e20287d
commit
b941371206
@ -68,6 +68,7 @@ The most important flags are::
|
||||
sync_timeout 600 Minimum timeout between syncs.
|
||||
use_traces 0 Experimental: use instruction traces
|
||||
only_ascii 0 If 1, generate only ASCII (isprint+isspace) inputs.
|
||||
test_single_input "" Use specified file content as test input. Test will be run only once. Useful for debugging a particular case.
|
||||
|
||||
|
||||
For the full list of flags run the fuzzer binary with ``-help=1``.
|
||||
|
@ -202,6 +202,12 @@ int ApplyTokens(const Fuzzer &F, const char *InputFilePath) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int RunOneTest(Fuzzer *F, const char *InputFilePath) {
|
||||
Unit U = FileToVector(InputFilePath);
|
||||
F->ExecuteCallback(U);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int FuzzerDriver(int argc, char **argv, UserCallback Callback) {
|
||||
FuzzerRandomLibc Rand(0);
|
||||
SimpleUserSuppliedFuzzer SUSF(&Rand, Callback);
|
||||
@ -275,6 +281,9 @@ int FuzzerDriver(const std::vector<std::string> &Args,
|
||||
if (Flags.apply_tokens)
|
||||
return ApplyTokens(F, Flags.apply_tokens);
|
||||
|
||||
if (Flags.test_single_input)
|
||||
return RunOneTest(&F, Flags.test_single_input);
|
||||
|
||||
unsigned Seed = Flags.seed;
|
||||
// Initialize Seed.
|
||||
if (Seed == 0)
|
||||
|
@ -66,3 +66,4 @@ FUZZER_FLAG_INT(tbm_depth, 5, "Apply at most this number of consecutive"
|
||||
"trace-based-mutations (tbm).")
|
||||
FUZZER_FLAG_INT(tbm_width, 5, "Apply at most this number of independent"
|
||||
"trace-based-mutations (tbm)")
|
||||
FUZZER_FLAG_STRING(test_single_input, "Use specified file as test input.")
|
@ -115,10 +115,10 @@ class Fuzzer {
|
||||
static void StaticAlarmCallback();
|
||||
|
||||
Unit SubstituteTokens(const Unit &U) const;
|
||||
void ExecuteCallback(const Unit &U);
|
||||
|
||||
private:
|
||||
void AlarmCallback();
|
||||
void ExecuteCallback(const Unit &U);
|
||||
void MutateAndTestOne(Unit *U);
|
||||
void ReportNewCoverage(size_t NewCoverage, const Unit &U);
|
||||
size_t RunOne(const Unit &U);
|
||||
|
@ -1,6 +1,7 @@
|
||||
CHECK: BINGO
|
||||
|
||||
RUN: LLVMFuzzer-SimpleTest 2>&1 | FileCheck %s
|
||||
RUN: LLVMFuzzer-SimpleTest -test_single_input=%S/hi.txt 2>&1 | FileCheck %s
|
||||
|
||||
RUN: not LLVMFuzzer-InfiniteTest -timeout=2 2>&1 | FileCheck %s --check-prefix=InfiniteTest
|
||||
InfiniteTest: ALARM: working on the last Unit for
|
||||
|
1
lib/Fuzzer/test/hi.txt
Normal file
1
lib/Fuzzer/test/hi.txt
Normal file
@ -0,0 +1 @@
|
||||
Hi!
|
Loading…
Reference in New Issue
Block a user