From 668455c34bb42e5068264dae8ba909be95260c81 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Mon, 14 Oct 2024 22:48:54 +0200 Subject: syz-manager: move DefaultExecOpts() to pkg/ This will enable its reuse. --- pkg/fuzzer/fuzzer.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'pkg/fuzzer') diff --git a/pkg/fuzzer/fuzzer.go b/pkg/fuzzer/fuzzer.go index 1f2fd90a8..ba6d93651 100644 --- a/pkg/fuzzer/fuzzer.go +++ b/pkg/fuzzer/fuzzer.go @@ -13,8 +13,10 @@ import ( "time" "github.com/google/syzkaller/pkg/corpus" + "github.com/google/syzkaller/pkg/csource" "github.com/google/syzkaller/pkg/flatrpc" "github.com/google/syzkaller/pkg/fuzzer/queue" + "github.com/google/syzkaller/pkg/mgrconfig" "github.com/google/syzkaller/pkg/signal" "github.com/google/syzkaller/pkg/stat" "github.com/google/syzkaller/prog" @@ -414,3 +416,33 @@ func setFlags(execFlags flatrpc.ExecFlag) flatrpc.ExecOpts { ExecFlags: execFlags, } } + +// TODO: This method belongs better to pkg/flatrpc, but we currently end up +// having a cyclic dependency error. +func DefaultExecOpts(cfg *mgrconfig.Config, features flatrpc.Feature, debug bool) flatrpc.ExecOpts { + env := csource.FeaturesToFlags(features, nil) + if debug { + env |= flatrpc.ExecEnvDebug + } + if cfg.Experimental.ResetAccState { + env |= flatrpc.ExecEnvResetState + } + if cfg.Cover { + env |= flatrpc.ExecEnvSignal + } + sandbox, err := flatrpc.SandboxToFlags(cfg.Sandbox) + if err != nil { + panic(fmt.Sprintf("failed to parse sandbox: %v", err)) + } + env |= sandbox + + exec := flatrpc.ExecFlagThreaded + if !cfg.RawCover { + exec |= flatrpc.ExecFlagDedupCover + } + return flatrpc.ExecOpts{ + EnvFlags: env, + ExecFlags: exec, + SandboxArg: cfg.SandboxArg, + } +} -- cgit mrf-deployment