diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2021-01-29 09:48:17 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2021-01-29 15:48:16 +0100 |
| commit | 0f7bddaaec6eb9e451109a98aac8e43e09a2211c (patch) | |
| tree | cc0e32f0c9683c43ca96321a32b2c026ec82dfe6 /tools | |
| parent | 987e850fb59ee5abef7f20d9cf923df7fae38941 (diff) | |
tools/syz-build: add utility
syz-build is a wrapper around pkg/build for testing purposes.
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/syz-build/build.go | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/tools/syz-build/build.go b/tools/syz-build/build.go new file mode 100644 index 000000000..4e4eff035 --- /dev/null +++ b/tools/syz-build/build.go @@ -0,0 +1,53 @@ +// Copyright 2021 syzkaller project authors. All rights reserved. +// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +// syz-build is a wrapper around pkg/build for testing purposes. +package main + +import ( + "flag" + "io/ioutil" + "os" + "runtime" + + "github.com/google/syzkaller/pkg/build" + "github.com/google/syzkaller/pkg/tool" +) + +var ( + flagOS = flag.String("os", runtime.GOOS, "OS to test") + flagArch = flag.String("arch", runtime.GOARCH, "arch to test") + flagKernelSrc = flag.String("kernel_src", "", "path to kernel checkout") + flagKernelConfig = flag.String("config", "", "kernel config file") + flagKernelSysctl = flag.String("sysctl", "", "kernel sysctl file") + flagKernelCmdline = flag.String("cmdline", "", "kernel cmdline file") + flagUserspace = flag.String("userspace", "", "path to userspace for build") +) + +func main() { + flag.Parse() + if os.Getuid() != 0 { + tool.Failf("image build will fail, run under root") + } + os.Setenv("SYZ_DISABLE_SANDBOXING", "yes") + kernelConfig, err := ioutil.ReadFile(*flagKernelConfig) + if err != nil { + tool.Fail(err) + } + params := &build.Params{ + TargetOS: *flagOS, + TargetArch: *flagArch, + VMType: "gce", + KernelDir: *flagKernelSrc, + OutputDir: ".", + Compiler: "", + Ccache: "", + UserspaceDir: *flagUserspace, + CmdlineFile: *flagKernelCmdline, + SysctlFile: *flagKernelSysctl, + Config: kernelConfig, + } + if _, err := build.Image(params); err != nil { + tool.Fail(err) + } +} |
