diff options
| -rw-r--r-- | pkg/bisect/bisect.go | 7 | ||||
| -rw-r--r-- | pkg/bisect/bisect_test.go | 4 | ||||
| -rw-r--r-- | pkg/build/build.go | 2 | ||||
| -rw-r--r-- | pkg/vcs/linux.go | 4 | ||||
| -rw-r--r-- | pkg/vcs/testos.go | 7 | ||||
| -rw-r--r-- | pkg/vcs/vcs.go | 2 | ||||
| -rw-r--r-- | tools/syz-testbuild/testbuild.go | 6 |
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) |
