aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2025-04-22 11:57:52 +0200
committerAleksandr Nogikh <nogikh@google.com>2025-04-22 12:28:43 +0000
commit53a8b9bd23a6fac52f298fb6115c012757f0a505 (patch)
tree5d38be95d9f40f27f1cccd6b4ce4fbea0fd77725
parentee0bd1607af85b55b2a3094f4981a1946286fac5 (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.go20
-rw-r--r--tools/syz-testbuild/testbuild.go21
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,