aboutsummaryrefslogtreecommitdiffstats
path: root/fuzzer
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2015-10-19 14:00:20 +0200
committerDmitry Vyukov <dvyukov@google.com>2015-10-20 15:46:04 +0200
commit74f5340ea65df34599f489dcff2e9a881a03a50b (patch)
tree8187bc69b6b003bb0ce772c77d0304f3d4575698 /fuzzer
parent30c9c31819063079e276dc166ba6c09018940229 (diff)
allow to run local vm without coverage
Diffstat (limited to 'fuzzer')
-rw-r--r--fuzzer/fuzzer.go19
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)