aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2021-01-29 09:48:17 +0100
committerDmitry Vyukov <dvyukov@google.com>2021-01-29 15:48:16 +0100
commit0f7bddaaec6eb9e451109a98aac8e43e09a2211c (patch)
treecc0e32f0c9683c43ca96321a32b2c026ec82dfe6
parent987e850fb59ee5abef7f20d9cf923df7fae38941 (diff)
tools/syz-build: add utility
syz-build is a wrapper around pkg/build for testing purposes.
-rw-r--r--tools/syz-build/build.go53
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)
+ }
+}