diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2017-10-17 18:08:39 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2017-10-18 12:01:24 +0200 |
| commit | 85c802e4cf59350d2c06c45d42d48271338665a1 (patch) | |
| tree | 49649dd8e1bad8a9d2f1e64537c99d3cd5c6d316 /tools/syz-repro | |
| parent | b69d27d17e975e775afe07919e28bbe29e8d1f03 (diff) | |
pkg/report: support multiple OSes
Introduce report.Reporter interface.
Add an implementation per-OS.
Make users be explicit about OS they are testing.
Diffstat (limited to 'tools/syz-repro')
| -rw-r--r-- | tools/syz-repro/repro.go | 37 |
1 files changed, 16 insertions, 21 deletions
diff --git a/tools/syz-repro/repro.go b/tools/syz-repro/repro.go index 6d8316866..e51a4d459 100644 --- a/tools/syz-repro/repro.go +++ b/tools/syz-repro/repro.go @@ -8,11 +8,11 @@ import ( "fmt" "io/ioutil" "os" - "os/signal" - "syscall" "github.com/google/syzkaller/pkg/csource" - . "github.com/google/syzkaller/pkg/log" + "github.com/google/syzkaller/pkg/log" + "github.com/google/syzkaller/pkg/osutil" + "github.com/google/syzkaller/pkg/report" "github.com/google/syzkaller/pkg/repro" "github.com/google/syzkaller/prog" "github.com/google/syzkaller/syz-manager/mgrconfig" @@ -29,22 +29,22 @@ func main() { flag.Parse() cfg, err := mgrconfig.LoadFile(*flagConfig) if err != nil { - Fatalf("%v", err) + log.Fatalf("%v", err) } if len(flag.Args()) != 1 { - Fatalf("usage: syz-repro -config=config.file execution.log") + log.Fatalf("usage: syz-repro -config=config.file execution.log") } data, err := ioutil.ReadFile(flag.Args()[0]) if err != nil { - Fatalf("failed to open log file: %v", err) + log.Fatalf("failed to open log file: %v", err) } if _, err := prog.GetTarget(cfg.TargetOS, cfg.TargetArch); err != nil { - Fatalf("%v", err) + log.Fatalf("%v", err) } env := mgrconfig.CreateVMEnv(cfg, false) vmPool, err := vm.Create(cfg.Type, env) if err != nil { - Fatalf("%v", err) + log.Fatalf("%v", err) } vmCount := vmPool.Count() if *flagCount > 0 && *flagCount < vmCount { @@ -57,20 +57,15 @@ func main() { for i := range vmIndexes { vmIndexes[i] = i } + reporter, err := report.NewReporter(cfg.TargetOS, cfg.Kernel_Src, "", nil, cfg.ParsedIgnores) + if err != nil { + log.Fatalf("%v", err) + } + osutil.HandleInterrupts(vm.Shutdown) - go func() { - c := make(chan os.Signal, 2) - signal.Notify(c, syscall.SIGINT) - <-c - close(vm.Shutdown) - Logf(-1, "shutting down...") - <-c - Fatalf("terminating") - }() - - res, err := repro.Run(data, cfg, vmPool, vmIndexes) + res, err := repro.Run(data, cfg, reporter, vmPool, vmIndexes) if err != nil { - Logf(0, "reproduction failed: %v", err) + log.Logf(0, "reproduction failed: %v", err) } if res == nil { return @@ -81,7 +76,7 @@ func main() { if res.CRepro { src, err := csource.Write(res.Prog, res.Opts) if err != nil { - Fatalf("failed to generate C repro: %v", err) + log.Fatalf("failed to generate C repro: %v", err) } if formatted, err := csource.Format(src); err == nil { src = formatted |
