From 5205ef306e8b4217fc49cb8d8bd18670b7d08c3c Mon Sep 17 00:00:00 2001 From: Zubin Mithra Date: Tue, 7 Mar 2023 16:21:41 -0800 Subject: tools/syz-cover: allow for exporting source line coverage info Add a `json` CLI flag that allows for writing out a JSON file with the following coverage information. * Module * Filename * Covered source lines * Uncovered source lines * Both source lines This can be used to view syzkaller coverage information on other source browsing/viewing tools. Usage: $ ./syz-cover -kernel_obj -json rawcover --- tools/syz-cover/syz-cover.go | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'tools') diff --git a/tools/syz-cover/syz-cover.go b/tools/syz-cover/syz-cover.go index e161eac07..80c58ffc5 100644 --- a/tools/syz-cover/syz-cover.go +++ b/tools/syz-cover/syz-cover.go @@ -42,6 +42,7 @@ func main() { flagKernelBuildSrc = flag.String("kernel_build_src", "", "path to kernel image's build dir (optional)") flagKernelObj = flag.String("kernel_obj", "", "path to kernel build/obj dir") flagExportCSV = flag.String("csv", "", "export coverage data in csv format (optional)") + flagExportLineJSON = flag.String("json", "", "export coverage data with source line info in json format (optional)") flagExportHTML = flag.String("html", "", "save coverage HTML report to file (optional)") ) defer tool.Init()() @@ -87,6 +88,15 @@ func main() { } return } + if *flagExportLineJSON != "" { + if err := rg.DoLineJSON(buf, progs, nil); err != nil { + tool.Fail(err) + } + if err := osutil.WriteFile(*flagExportLineJSON, buf.Bytes()); err != nil { + tool.Fail(err) + } + return + } if err := rg.DoHTML(buf, progs, nil); err != nil { tool.Fail(err) } -- cgit mrf-deployment