diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2015-10-19 14:00:20 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2015-10-20 15:46:04 +0200 |
| commit | 74f5340ea65df34599f489dcff2e9a881a03a50b (patch) | |
| tree | 8187bc69b6b003bb0ce772c77d0304f3d4575698 /fuzzer | |
| parent | 30c9c31819063079e276dc166ba6c09018940229 (diff) | |
allow to run local vm without coverage
Diffstat (limited to 'fuzzer')
| -rw-r--r-- | fuzzer/fuzzer.go | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/fuzzer/fuzzer.go b/fuzzer/fuzzer.go index 1da15ccfe..e2e09c48f 100644 --- a/fuzzer/fuzzer.go +++ b/fuzzer/fuzzer.go @@ -35,6 +35,7 @@ var ( flagStrace = flag.Bool("strace", false, "run executor under strace") flagSaveProg = flag.Bool("saveprog", false, "save programs into local file before executing") flagSyscalls = flag.String("calls", "", "comma-delimited list of enabled syscall IDs (empty string for all syscalls)") + flagNoCover = flag.Bool("nocover", false, "disable coverage collection/handling") flagV = flag.Int("v", 0, "verbosity") ) @@ -101,10 +102,13 @@ func main() { } ct = prog.BuildChoiceTable(r.Prios, calls) - flags := ipc.FlagCover | ipc.FlagDedupCover + flags := ipc.FlagThreaded if *flagStrace { flags |= ipc.FlagStrace } + if !*flagNoCover { + flags |= ipc.FlagCover | ipc.FlagDedupCover + } env, err := ipc.MakeEnv(*flagExecutor, 4*time.Second, flags) if err != nil { panic(err) @@ -141,7 +145,12 @@ func main() { if err != nil { panic(err) } - execute(env, p) + if *flagNoCover { + inp := Input{p, 0, nil} + corpus = append(corpus, inp) + } else { + execute(env, p) + } } if len(r.NewInputs) == 0 && len(r.Candidates) == 0 { lastPoll = time.Now() @@ -166,6 +175,9 @@ func main() { } func addInput(inp RpcInput) { + if *flagNoCover { + panic("should not be called when coverage is disabled") + } p, err := prog.Deserialize(inp.Prog) if err != nil { panic(err) @@ -192,6 +204,9 @@ func addInput(inp RpcInput) { } func triageInput(env *ipc.Env, inp Input) { + if *flagNoCover { + panic("should not be called when coverage is disabled") + } call := inp.p.Calls[inp.call].Meta newCover := cover.Difference(inp.cover, corpusCover[call.CallID]) newCover = cover.Difference(newCover, flakes) |
