From 79a5963585ac032cd3f390a37b5d276f7f9d0b5c Mon Sep 17 00:00:00 2001 From: Space Meyer Date: Tue, 13 Sep 2022 15:24:23 +0000 Subject: pkg/bisect: use default compiler during bisection where possible This allows us to bisect at least recently introduced bugs, where the manager that found the bug uses a non standard compiler. This is usefull during development of a new sanitizer for which a compiler with non-upstreamed patches is required. --- tools/syz-bisect/bisect.go | 12 +++++++----- tools/syz-testbuild/testbuild.go | 3 ++- 2 files changed, 9 insertions(+), 6 deletions(-) (limited to 'tools') diff --git a/tools/syz-bisect/bisect.go b/tools/syz-bisect/bisect.go index c4548de35..7fa17c25d 100644 --- a/tools/syz-bisect/bisect.go +++ b/tools/syz-bisect/bisect.go @@ -44,9 +44,10 @@ var ( ) type Config struct { + Compiler string `json:"compiler"` // Currently either 'gcc' or 'clang'. Note that pkg/bisect requires // explicit plumbing for every os/compiler combination. - BisectCompiler string `json:"bisect_compiler"` + CompilerType string `json:"compiler_type"` // BinDir must point to a dir that contains compilers required to build // older versions of the kernel. For linux, it needs to include several // compiler versions. @@ -97,10 +98,11 @@ func main() { TraceWriter: os.Stdout, OutDir: *flagCrash, }, - Fix: *flagFix, - BisectCompiler: mycfg.BisectCompiler, - BinDir: mycfg.BinDir, - Ccache: mycfg.Ccache, + Fix: *flagFix, + DefaultCompiler: mycfg.Compiler, + CompilerType: mycfg.CompilerType, + BinDir: mycfg.BinDir, + Ccache: mycfg.Ccache, Kernel: bisect.KernelConfig{ Repo: mycfg.KernelRepo, Branch: mycfg.KernelBranch, diff --git a/tools/syz-testbuild/testbuild.go b/tools/syz-testbuild/testbuild.go index be2718b3a..6b68b44fc 100644 --- a/tools/syz-testbuild/testbuild.go +++ b/tools/syz-testbuild/testbuild.go @@ -125,7 +125,8 @@ func main() { } func test(repo vcs.Repo, bisecter vcs.Bisecter, kernelConfig []byte, env instance.Env, com *vcs.Commit) { - bisectEnv, err := bisecter.EnvForCommit("gcc", *flagBisectBin, com.Hash, kernelConfig) + compiler, compilerType := "gcc", "gcc" + bisectEnv, err := bisecter.EnvForCommit(compiler, compilerType, *flagBisectBin, com.Hash, kernelConfig) if err != nil { tool.Fail(err) } -- cgit mrf-deployment