aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pkg/bisect/bisect.go7
-rw-r--r--pkg/bisect/bisect_test.go4
-rw-r--r--pkg/build/build.go2
-rw-r--r--pkg/vcs/linux.go4
-rw-r--r--pkg/vcs/testos.go7
-rw-r--r--pkg/vcs/vcs.go2
-rw-r--r--tools/syz-testbuild/testbuild.go6
7 files changed, 12 insertions, 20 deletions
diff --git a/pkg/bisect/bisect.go b/pkg/bisect/bisect.go
index 904be4b53..afe770965 100644
--- a/pkg/bisect/bisect.go
+++ b/pkg/bisect/bisect.go
@@ -259,12 +259,11 @@ func (env *env) test() (vcs.BisectResult, *vcs.Commit, *report.Report, error) {
if err != nil {
return 0, nil, nil, err
}
- bisectEnv, err := env.bisecter.EnvForCommit(current.Hash, cfg.Kernel.Config)
+ bisectEnv, err := env.bisecter.EnvForCommit(cfg.BinDir, current.Hash, cfg.Kernel.Config)
if err != nil {
return 0, nil, nil, err
}
- compiler := filepath.Join(cfg.BinDir, bisectEnv.Compiler, "bin", "gcc")
- compilerID, err := build.CompilerIdentity(compiler)
+ compilerID, err := build.CompilerIdentity(bisectEnv.Compiler)
if err != nil {
return 0, nil, nil, err
}
@@ -274,7 +273,7 @@ func (env *env) test() (vcs.BisectResult, *vcs.Commit, *report.Report, error) {
cfg.Manager.Type, cfg.Manager.KernelSrc); err != nil {
return 0, nil, nil, fmt.Errorf("kernel clean failed: %v", err)
}
- _, err = env.inst.BuildKernel(compiler, cfg.Kernel.Userspace,
+ _, err = env.inst.BuildKernel(bisectEnv.Compiler, cfg.Kernel.Userspace,
cfg.Kernel.Cmdline, cfg.Kernel.Sysctl, bisectEnv.KernelConfig)
env.buildTime += time.Since(buildStart)
if err != nil {
diff --git a/pkg/bisect/bisect_test.go b/pkg/bisect/bisect_test.go
index 472fde289..7a1d02a90 100644
--- a/pkg/bisect/bisect_test.go
+++ b/pkg/bisect/bisect_test.go
@@ -11,7 +11,6 @@ import (
"strconv"
"testing"
- "github.com/google/syzkaller/pkg/build"
"github.com/google/syzkaller/pkg/instance"
"github.com/google/syzkaller/pkg/mgrconfig"
"github.com/google/syzkaller/pkg/report"
@@ -72,9 +71,6 @@ func (env *testEnv) Test(numVMs int, reproSyz, reproOpts, reproC []byte) ([]erro
// commit.
func TestBisectCause(t *testing.T) {
t.Parallel()
- build.CompilerIdentity = func(_ string) (string, error) {
- return "unused-compiler-identity", nil
- }
baseDir, err := ioutil.TempDir("", "syz-git-test")
if err != nil {
t.Fatal(err)
diff --git a/pkg/build/build.go b/pkg/build/build.go
index 7fce681df..d4126b6e6 100644
--- a/pkg/build/build.go
+++ b/pkg/build/build.go
@@ -93,7 +93,7 @@ func getBuilder(targetOS, targetArch, vmType string) (builder, error) {
return nil, fmt.Errorf("unsupported image type %v/%v/%v", targetOS, targetArch, vmType)
}
-var CompilerIdentity = func(compiler string) (string, error) {
+func CompilerIdentity(compiler string) (string, error) {
if compiler == "" {
return "", nil
}
diff --git a/pkg/vcs/linux.go b/pkg/vcs/linux.go
index aaca97fe7..b14b75280 100644
--- a/pkg/vcs/linux.go
+++ b/pkg/vcs/linux.go
@@ -88,7 +88,7 @@ func gitReleaseTagToInt(tag string) uint64 {
return v1*1e6 + v2*1e3 + v3
}
-func (ctx *linux) EnvForCommit(commit string, kernelConfig []byte) (*BisectEnv, error) {
+func (ctx *linux) EnvForCommit(binDir, commit string, kernelConfig []byte) (*BisectEnv, error) {
tagList, err := ctx.previousReleaseTags(commit, true)
if err != nil {
return nil, err
@@ -98,7 +98,7 @@ func (ctx *linux) EnvForCommit(commit string, kernelConfig []byte) (*BisectEnv,
tags[tag] = true
}
env := &BisectEnv{
- Compiler: "gcc-" + linuxCompilerVersion(tags),
+ Compiler: filepath.Join(binDir, "gcc-"+linuxCompilerVersion(tags), "bin", "gcc"),
KernelConfig: linuxDisableConfigs(kernelConfig, tags),
}
// v4.0 doesn't boot with our config nor with defconfig, it halts on an interrupt in x86_64_start_kernel.
diff --git a/pkg/vcs/testos.go b/pkg/vcs/testos.go
index f30dd0799..611937da7 100644
--- a/pkg/vcs/testos.go
+++ b/pkg/vcs/testos.go
@@ -16,8 +16,7 @@ func newTestos(dir string) *testos {
func (ctx *testos) PreviousReleaseTags(commit string) ([]string, error) {
return ctx.git.previousReleaseTags(commit, false)
}
-func (ctx *testos) EnvForCommit(commit string, kernelConfig []byte) (*BisectEnv, error) {
- return &BisectEnv{
- Compiler: "test-compiler-dont-use",
- }, nil
+
+func (ctx *testos) EnvForCommit(binDir, commit string, kernelConfig []byte) (*BisectEnv, error) {
+ return &BisectEnv{}, nil
}
diff --git a/pkg/vcs/vcs.go b/pkg/vcs/vcs.go
index 28264522f..12130d594 100644
--- a/pkg/vcs/vcs.go
+++ b/pkg/vcs/vcs.go
@@ -64,7 +64,7 @@ type Bisecter interface {
// PreviousReleaseTags returns list of preceding release tags that are reachable from the given commit.
PreviousReleaseTags(commit string) ([]string, error)
- EnvForCommit(commit string, kernelConfig []byte) (*BisectEnv, error)
+ EnvForCommit(binDir, commit string, kernelConfig []byte) (*BisectEnv, error)
}
type Commit struct {
diff --git a/tools/syz-testbuild/testbuild.go b/tools/syz-testbuild/testbuild.go
index 120a465c3..7a82ce468 100644
--- a/tools/syz-testbuild/testbuild.go
+++ b/tools/syz-testbuild/testbuild.go
@@ -28,7 +28,6 @@ import (
"io/ioutil"
"log"
"os"
- "path/filepath"
"runtime"
"github.com/google/syzkaller/pkg/build"
@@ -121,16 +120,15 @@ func main() {
}
func test(repo vcs.Repo, bisecter vcs.Bisecter, kernelConfig []byte, env instance.BuilderTester, com *vcs.Commit) {
- bisectEnv, err := bisecter.EnvForCommit(com.Hash, kernelConfig)
+ bisectEnv, err := bisecter.EnvForCommit(*flagBisectBin, com.Hash, kernelConfig)
if err != nil {
fail(err)
}
log.Printf("testing: %v %v using %v", com.Hash, com.Title, bisectEnv.Compiler)
- compiler := filepath.Join(*flagBisectBin, bisectEnv.Compiler, "bin", "gcc")
if err := build.Clean(*flagOS, *flagArch, vmType, *flagKernelSrc); err != nil {
fail(err)
}
- _, err = env.BuildKernel(compiler, *flagUserspace, *flagKernelCmdline, *flagKernelSysctl, bisectEnv.KernelConfig)
+ _, err = env.BuildKernel(bisectEnv.Compiler, *flagUserspace, *flagKernelCmdline, *flagKernelSysctl, bisectEnv.KernelConfig)
if err != nil {
if verr, ok := err.(*osutil.VerboseError); ok {
log.Printf("BUILD BROKEN: %v", verr.Title)