From 0f7bddaaec6eb9e451109a98aac8e43e09a2211c Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Fri, 29 Jan 2021 09:48:17 +0100 Subject: tools/syz-build: add utility syz-build is a wrapper around pkg/build for testing purposes. --- tools/syz-build/build.go | 53 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 tools/syz-build/build.go 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) + } +} -- cgit mrf-deployment