From cdcc8b96dd9215a47ce5ce1074567a1be93eda5f Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Wed, 23 Mar 2022 13:50:36 +0000 Subject: all: collect raw coverage Raw coverage might be important when e.g. analysing the origins of out-of-place coverage in coverage reports or understanding why the fuzzer could not reach deeper code. If "raw_cover" is set to true, syzkaller will remember unsorted and unduplicated coverage (PCs) for each its corpus program. --- pkg/instance/instance.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'pkg/instance/instance.go') diff --git a/pkg/instance/instance.go b/pkg/instance/instance.go index 665281a47..c225f9696 100644 --- a/pkg/instance/instance.go +++ b/pkg/instance/instance.go @@ -452,6 +452,7 @@ type FuzzerCmdArgs struct { Test bool Runtest bool Slowdown int + RawCover bool } func FuzzerCmd(args *FuzzerCmdArgs) string { @@ -470,11 +471,16 @@ func FuzzerCmd(args *FuzzerCmdArgs) string { if args.Verbosity != 0 { verbosityArg = fmt.Sprintf(" -vv=%v", args.Verbosity) } - optionalArg := "" + flags := []tool.Flag{} if args.Slowdown > 0 { - optionalArg = " " + tool.OptionalFlags([]tool.Flag{ - {Name: "slowdown", Value: fmt.Sprint(args.Slowdown)}, - }) + flags = append(flags, tool.Flag{Name: "slowdown", Value: fmt.Sprint(args.Slowdown)}) + } + if args.RawCover { + flags = append(flags, tool.Flag{Name: "raw_cover", Value: "true"}) + } + optionalArg := "" + if len(flags) > 0 { + optionalArg += " " + tool.OptionalFlags(flags) } return fmt.Sprintf("%v -executor=%v -name=%v -arch=%v%v -manager=%v -sandbox=%v"+ " -procs=%v -cover=%v -debug=%v -test=%v%v%v%v", -- cgit mrf-deployment