diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2025-04-22 11:57:52 +0200 |
|---|---|---|
| committer | Aleksandr Nogikh <nogikh@google.com> | 2025-04-22 12:28:43 +0000 |
| commit | 53a8b9bd23a6fac52f298fb6115c012757f0a505 (patch) | |
| tree | 5d38be95d9f40f27f1cccd6b4ce4fbea0fd77725 | |
| parent | ee0bd1607af85b55b2a3094f4981a1946286fac5 (diff) | |
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.
| -rw-r--r-- | pkg/mgrconfig/load.go | 20 | ||||
| -rw-r--r-- | 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, |
