From 53a8b9bd23a6fac52f298fb6115c012757f0a505 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Tue, 22 Apr 2025 11:57:52 +0200 Subject: tools: repair syz-testbuild 1. Properly set up a manager config. 2. Use clang/ld.lld by default. 3. Set the right boot partition for qemu VMs. --- pkg/mgrconfig/load.go | 20 +++++++++++++------- tools/syz-testbuild/testbuild.go | 21 ++++++++++++++++----- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/pkg/mgrconfig/load.go b/pkg/mgrconfig/load.go index 51aaa0657..b92d6a421 100644 --- a/pkg/mgrconfig/load.go +++ b/pkg/mgrconfig/load.go @@ -73,7 +73,10 @@ func LoadPartialData(data []byte) (*Config, error) { if err := config.LoadData(data, cfg); err != nil { return nil, err } - return loadPartial(cfg) + if err := SetTargets(cfg); err != nil { + return nil, err + } + return cfg, nil } func LoadPartialFile(filename string) (*Config, error) { @@ -81,7 +84,10 @@ func LoadPartialFile(filename string) (*Config, error) { if err := config.LoadFile(filename, cfg); err != nil { return nil, err } - return loadPartial(cfg) + if err := SetTargets(cfg); err != nil { + return nil, err + } + return cfg, nil } func defaultValues() *Config { @@ -122,21 +128,21 @@ var ( } ) -func loadPartial(cfg *Config) (*Config, error) { +func SetTargets(cfg *Config) error { var err error cfg.TargetOS, cfg.TargetVMArch, cfg.TargetArch, err = splitTarget(cfg.RawTarget) if err != nil { - return nil, err + return err } cfg.Target, err = prog.GetTarget(cfg.TargetOS, cfg.TargetArch) if err != nil { - return nil, err + return err } cfg.SysTarget = targets.Get(cfg.TargetOS, cfg.TargetVMArch) if cfg.SysTarget == nil { - return nil, fmt.Errorf("unsupported OS/arch: %v/%v", cfg.TargetOS, cfg.TargetVMArch) + return fmt.Errorf("unsupported OS/arch: %v/%v", cfg.TargetOS, cfg.TargetVMArch) } - return cfg, nil + return nil } func Complete(cfg *Config) error { diff --git a/tools/syz-testbuild/testbuild.go b/tools/syz-testbuild/testbuild.go index ca6735e70..76130a848 100644 --- a/tools/syz-testbuild/testbuild.go +++ b/tools/syz-testbuild/testbuild.go @@ -49,6 +49,9 @@ var ( flagSyzkaller = flag.String("syzkaller", ".", "path to built syzkaller") flagSandbox = flag.String("sandbox", "namespace", "sandbox to use for testing") flagSandboxArg = flag.Int("sandbox_arg", 0, "an argument for sandbox runner") + flagCompiler = flag.String("compiler", "clang", "compiler to use") + flagCompilerType = flag.String("compiler_type", "clang", "compiler to use") + flagLinker = flag.String("linker", "ld.lld", "linker to use") ) const ( @@ -80,12 +83,21 @@ func main() { Procs: 1, Cover: false, Type: vmType, - VM: json.RawMessage([]byte(fmt.Sprintf(`{ "count": %v, "cpu": 2, "mem": 2048 }`, numTests))), + VM: json.RawMessage([]byte(fmt.Sprintf(`{"count": %v, + "cpu": 2, + "mem": 2048, + "cmdline": "root=/dev/sda1"}`, numTests))), Derived: mgrconfig.Derived{ TargetOS: *flagOS, TargetArch: *flagArch, TargetVMArch: *flagArch, }, + Experimental: mgrconfig.Experimental{ + DescriptionsMode: "manual", + }, + } + if err := mgrconfig.SetTargets(cfg); err != nil { + tool.Fail(err) } if err := mgrconfig.Complete(cfg); err != nil { tool.Fail(err) @@ -124,16 +136,15 @@ func main() { } func test(repo vcs.Repo, bisecter vcs.Bisecter, kernelConfig []byte, env instance.Env, com *vcs.Commit) { - compiler, compilerType, linker, ccache := "gcc", "gcc", "ld", "" - bisectEnv, err := bisecter.EnvForCommit(compiler, compilerType, *flagBisectBin, com.Hash, kernelConfig, nil) + bisectEnv, err := bisecter.EnvForCommit(*flagCompiler, *flagCompilerType, *flagBisectBin, com.Hash, kernelConfig, nil) if err != nil { tool.Fail(err) } log.Printf("testing: %v %v using %v", com.Hash, com.Title, bisectEnv.Compiler) buildCfg := &instance.BuildKernelConfig{ CompilerBin: bisectEnv.Compiler, - LinkerBin: linker, - CcacheBin: ccache, + LinkerBin: *flagLinker, + CcacheBin: "", UserspaceDir: *flagUserspace, CmdlineFile: *flagKernelCmdline, SysctlFile: *flagKernelSysctl, -- cgit mrf-deployment