diff options
| -rw-r--r-- | pkg/bisect/bisect.go | 3 | ||||
| -rw-r--r-- | pkg/bisect/bisect_test.go | 2 | ||||
| -rw-r--r-- | pkg/instance/instance.go | 6 | ||||
| -rw-r--r-- | syz-ci/jobs.go | 5 | ||||
| -rw-r--r-- | tools/syz-testbuild/testbuild.go | 4 |
5 files changed, 12 insertions, 8 deletions
diff --git a/pkg/bisect/bisect.go b/pkg/bisect/bisect.go index 5755bf562..ed961f537 100644 --- a/pkg/bisect/bisect.go +++ b/pkg/bisect/bisect.go @@ -23,6 +23,7 @@ type Config struct { Fix bool DefaultCompiler string CompilerType string + Linker string BinDir string Ccache string Timeout time.Duration @@ -478,7 +479,7 @@ func (env *env) build() (*vcs.Commit, string, error) { return current, "", fmt.Errorf("kernel clean failed: %v", err) } kern := &env.cfg.Kernel - _, imageDetails, err := env.inst.BuildKernel(bisectEnv.Compiler, env.cfg.Ccache, kern.Userspace, + _, imageDetails, err := env.inst.BuildKernel(bisectEnv.Compiler, env.cfg.Linker, env.cfg.Ccache, kern.Userspace, kern.Cmdline, kern.Sysctl, bisectEnv.KernelConfig) if imageDetails.CompilerID != "" { env.log("compiler: %v", imageDetails.CompilerID) diff --git a/pkg/bisect/bisect_test.go b/pkg/bisect/bisect_test.go index 7930e545c..79bb70400 100644 --- a/pkg/bisect/bisect_test.go +++ b/pkg/bisect/bisect_test.go @@ -32,7 +32,7 @@ func (env *testEnv) BuildSyzkaller(repo, commit string) (string, error) { return "", nil } -func (env *testEnv) BuildKernel(compilerBin, cCache, userspaceDir, cmdlineFile, sysctlFile string, +func (env *testEnv) BuildKernel(compilerBin, linker, cCache, userspaceDir, cmdlineFile, sysctlFile string, kernelConfig []byte) (string, build.ImageDetails, error) { commit := env.headCommit() configHash := hash.String(kernelConfig) diff --git a/pkg/instance/instance.go b/pkg/instance/instance.go index d25eae4c5..b697ab926 100644 --- a/pkg/instance/instance.go +++ b/pkg/instance/instance.go @@ -29,7 +29,7 @@ import ( type Env interface { BuildSyzkaller(string, string) (string, error) - BuildKernel(string, string, string, string, string, []byte) (string, build.ImageDetails, error) + BuildKernel(string, string, string, string, string, string, []byte) (string, build.ImageDetails, error) Test(numVMs int, reproSyz, reproOpts, reproC []byte) ([]EnvTestResult, error) } @@ -114,7 +114,8 @@ func (env *env) BuildSyzkaller(repoURL, commit string) (string, error) { return buildLog, nil } -func (env *env) BuildKernel(compilerBin, ccacheBin, userspaceDir, cmdlineFile, sysctlFile string, kernelConfig []byte) ( +func (env *env) BuildKernel(compilerBin, linkerBin, ccacheBin, userspaceDir, cmdlineFile, sysctlFile string, + kernelConfig []byte) ( string, build.ImageDetails, error) { imageDir := filepath.Join(env.cfg.Workdir, "image") params := build.Params{ @@ -124,6 +125,7 @@ func (env *env) BuildKernel(compilerBin, ccacheBin, userspaceDir, cmdlineFile, s KernelDir: env.cfg.KernelSrc, OutputDir: imageDir, Compiler: compilerBin, + Linker: linkerBin, Ccache: ccacheBin, UserspaceDir: userspaceDir, CmdlineFile: cmdlineFile, diff --git a/syz-ci/jobs.go b/syz-ci/jobs.go index 588c3df2b..8a157ed75 100644 --- a/syz-ci/jobs.go +++ b/syz-ci/jobs.go @@ -417,6 +417,7 @@ func (jp *JobProcessor) bisect(job *Job, mgrcfg *mgrconfig.Config) error { DefaultCompiler: mgr.mgrcfg.Compiler, CompilerType: mgr.mgrcfg.CompilerType, BinDir: jp.cfg.BisectBinDir, + Linker: mgr.mgrcfg.Linker, Ccache: jp.cfg.Ccache, Kernel: bisect.KernelConfig{ Repo: mgr.mgrcfg.Repo, @@ -552,8 +553,8 @@ func (jp *JobProcessor) testPatch(job *Job, mgrcfg *mgrconfig.Config) error { []byte("# CONFIG_DEBUG_INFO_BTF is not set"), -1) log.Logf(0, "job: building kernel...") - kernelConfig, details, err := env.BuildKernel(mgr.mgrcfg.Compiler, mgr.mgrcfg.Ccache, mgr.mgrcfg.Userspace, - mgr.mgrcfg.KernelCmdline, mgr.mgrcfg.KernelSysctl, req.KernelConfig) + kernelConfig, details, err := env.BuildKernel(mgr.mgrcfg.Compiler, mgr.mgrcfg.Linker, mgr.mgrcfg.Ccache, + mgr.mgrcfg.Userspace, mgr.mgrcfg.KernelCmdline, mgr.mgrcfg.KernelSysctl, req.KernelConfig) resp.Build.CompilerID = details.CompilerID if err != nil { return err diff --git a/tools/syz-testbuild/testbuild.go b/tools/syz-testbuild/testbuild.go index 6b68b44fc..29c24e010 100644 --- a/tools/syz-testbuild/testbuild.go +++ b/tools/syz-testbuild/testbuild.go @@ -125,7 +125,7 @@ func main() { } func test(repo vcs.Repo, bisecter vcs.Bisecter, kernelConfig []byte, env instance.Env, com *vcs.Commit) { - compiler, compilerType := "gcc", "gcc" + compiler, compilerType, linker, ccache := "gcc", "gcc", "ld", "" bisectEnv, err := bisecter.EnvForCommit(compiler, compilerType, *flagBisectBin, com.Hash, kernelConfig) if err != nil { tool.Fail(err) @@ -134,7 +134,7 @@ func test(repo vcs.Repo, bisecter vcs.Bisecter, kernelConfig []byte, env instanc if err := build.Clean(*flagOS, *flagArch, vmType, *flagKernelSrc); err != nil { tool.Fail(err) } - _, _, err = env.BuildKernel(bisectEnv.Compiler, "", *flagUserspace, + _, _, err = env.BuildKernel(bisectEnv.Compiler, linker, ccache, *flagUserspace, *flagKernelCmdline, *flagKernelSysctl, bisectEnv.KernelConfig) if err != nil { if verr, ok := err.(*osutil.VerboseError); ok { |
