diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2022-06-23 16:35:05 +0200 |
|---|---|---|
| committer | Aleksandr Nogikh <wp32pw@gmail.com> | 2022-06-24 12:52:57 +0200 |
| commit | fa7cff5aa0ddedb3e9dedbd310abbc6014dd9c01 (patch) | |
| tree | d43bdb4df5e4f967bb63b62dc57558112ce02856 /tools/syz-build | |
| parent | 7d5020531b93ad5bdf442b60c12806254d1a9e4a (diff) | |
tools/syz-build: add tracing mode
Add -trace flag that enabled build process tracing and saving of debug artefacts.
Useful for debugging of #2297.
Diffstat (limited to 'tools/syz-build')
| -rw-r--r-- | tools/syz-build/build.go | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/tools/syz-build/build.go b/tools/syz-build/build.go index 959c9bbee..ec7e76eb5 100644 --- a/tools/syz-build/build.go +++ b/tools/syz-build/build.go @@ -6,29 +6,33 @@ package main import ( "flag" + "fmt" "io/ioutil" "os" "runtime" "github.com/google/syzkaller/pkg/build" + "github.com/google/syzkaller/pkg/debugtracer" "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") + flagOS = flag.String("os", runtime.GOOS, "OS to build") + flagArch = flag.String("arch", runtime.GOARCH, "arch to build") + flagVM = flag.String("vm", "gce", "VM type to build") flagKernelSrc = flag.String("kernel_src", "", "path to kernel checkout") flagCompiler = flag.String("compiler", "", "non-defult compiler") 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") + flagTrace = flag.Bool("trace", false, "trace build process and save debug artefacts") ) func main() { flag.Parse() if os.Getuid() != 0 { - tool.Failf("image build will fail, run under root") + fmt.Printf("not running under root, image build may fail\n") } os.Setenv("SYZ_DISABLE_SANDBOXING", "yes") kernelConfig, err := ioutil.ReadFile(*flagKernelConfig) @@ -38,7 +42,7 @@ func main() { params := build.Params{ TargetOS: *flagOS, TargetArch: *flagArch, - VMType: "gce", + VMType: *flagVM, KernelDir: *flagKernelSrc, OutputDir: ".", Compiler: *flagCompiler, @@ -47,8 +51,18 @@ func main() { CmdlineFile: *flagKernelCmdline, SysctlFile: *flagKernelSysctl, Config: kernelConfig, + Tracer: &debugtracer.NullTracer{}, } - if _, err := build.Image(params); err != nil { + if *flagTrace { + params.Tracer = &debugtracer.GenericTracer{ + TraceWriter: os.Stdout, + OutDir: ".", + } + } + details, err := build.Image(params) + if err != nil { tool.Fail(err) } + params.Tracer.Log("signature: %v", details.Signature) + params.Tracer.Log("compiler: %v", details.CompilerID) } |
