aboutsummaryrefslogtreecommitdiffstats
path: root/tools/syz-cover
diff options
context:
space:
mode:
authorZubin Mithra <zsm@google.com>2023-03-07 16:21:41 -0800
committerDmitry Vyukov <dvyukov@google.com>2023-03-10 07:45:18 +0100
commit5205ef306e8b4217fc49cb8d8bd18670b7d08c3c (patch)
treeb91b96f1402ae75c5c6a86cff16b40100ef3ce0b /tools/syz-cover
parentf08b59ac0d8759f409d594ddca4f08c920e23237 (diff)
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 <path/to/vmlinux> -json <output_json> rawcover
Diffstat (limited to 'tools/syz-cover')
-rw-r--r--tools/syz-cover/syz-cover.go10
1 files changed, 10 insertions, 0 deletions
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)
}