aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2022-06-23 16:35:05 +0200
committerAleksandr Nogikh <wp32pw@gmail.com>2022-06-24 12:52:57 +0200
commitfa7cff5aa0ddedb3e9dedbd310abbc6014dd9c01 (patch)
treed43bdb4df5e4f967bb63b62dc57558112ce02856 /tools
parent7d5020531b93ad5bdf442b60c12806254d1a9e4a (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')
-rw-r--r--tools/syz-build/build.go24
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)
}