From b8e37dc1fbe8fe39f929cb3157a2ed2edee335e3 Mon Sep 17 00:00:00 2001 From: Mara Mihali Date: Fri, 16 Jul 2021 10:20:59 +0000 Subject: syz-verifier: add flag to specify stats output location --- syz-verifier/main.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/syz-verifier/main.go b/syz-verifier/main.go index ed1841292..ca712b7df 100755 --- a/syz-verifier/main.go +++ b/syz-verifier/main.go @@ -57,6 +57,7 @@ type Verifier struct { reasons map[*prog.Syscall]string reportReasons bool stats *stats.Stats + statsWrite io.Writer } // RPCServer is a wrapper around the rpc.Server. It communicates with Runners, @@ -104,6 +105,8 @@ func main() { var cfgs tool.CfgsFlag flag.Var(&cfgs, "configs", "list of kernel-specific comma-sepatated configuration files ") flagDebug := flag.Bool("debug", false, "dump all VM output to console") + flagStats := flag.String("stats", "", "where stats will be written when"+ + "execution of syz-verifier finishes, defaults to stdout") flag.Parse() pools := make(map[int]*poolInfo) for idx, cfg := range cfgs { @@ -164,6 +167,18 @@ func main() { resultsdir := filepath.Join(workdir, "results") osutil.MkdirAll(resultsdir) + var sw io.Writer + var err error + if *flagStats == "" { + sw = os.Stdout + } else { + statsFile := filepath.Join(workdir, *flagStats) + sw, err = os.Create(statsFile) + if err != nil { + log.Fatalf("failed to create stats output file: %v", err) + } + } + for idx, pi := range pools { var err error pi.Reporter, err = report.NewReporter(pi.cfg) @@ -298,7 +313,7 @@ func (srv *RPCServer) UpdateUnsupported(a *rpctype.UpdateUnsupportedArgs, r *int srv.notChecked-- if srv.notChecked == 0 { vrf.finalizeCallSet(os.Stdout) - vrf.stats = stats.InitStats(vrf.calls, os.Stdout) + vrf.stats = stats.InitStats(vrf.calls, vrf.statsWrite) vrf.choiceTable = vrf.target.BuildChoiceTable(nil, vrf.calls) srv.cond.Signal() } -- cgit mrf-deployment