From 89b5a5097a095577d19574ae2fe3070e5af2a065 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Wed, 12 Oct 2022 12:11:12 +0000 Subject: all: add support for custom linker Add this as an option to syz-ci and syz-build tools. Otherwise we cannot use clang + ld.lld for kernel builds. --- pkg/build/linux.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'pkg/build/linux.go') diff --git a/pkg/build/linux.go b/pkg/build/linux.go index be9a38377..9fae48fc6 100644 --- a/pkg/build/linux.go +++ b/pkg/build/linux.go @@ -148,9 +148,9 @@ func (linux) writeFile(file string, data []byte) error { return osutil.SandboxChown(file) } -func runMakeImpl(arch, compiler, ccache, kernelDir string, addArgs ...string) error { +func runMakeImpl(arch, compiler, linker, ccache, kernelDir string, addArgs ...string) error { target := targets.Get(targets.Linux, arch) - args := LinuxMakeArgs(target, compiler, ccache, "") + args := LinuxMakeArgs(target, compiler, linker, ccache, "") args = append(args, addArgs...) cmd := osutil.Command("make", args...) if err := osutil.Sandbox(cmd, true, true); err != nil { @@ -175,10 +175,10 @@ func runMakeImpl(arch, compiler, ccache, kernelDir string, addArgs ...string) er } func runMake(params Params, addArgs ...string) error { - return runMakeImpl(params.TargetArch, params.Compiler, params.Ccache, params.KernelDir, addArgs...) + return runMakeImpl(params.TargetArch, params.Compiler, params.Linker, params.Ccache, params.KernelDir, addArgs...) } -func LinuxMakeArgs(target *targets.Target, compiler, ccache, buildDir string) []string { +func LinuxMakeArgs(target *targets.Target, compiler, linker, ccache, buildDir string) []string { args := []string{ "-j", fmt.Sprint(runtime.NumCPU()), "ARCH=" + target.KernelArch, @@ -189,7 +189,7 @@ func LinuxMakeArgs(target *targets.Target, compiler, ccache, buildDir string) [] if compiler == "" { compiler = target.KernelCompiler if target.KernelLinker != "" { - args = append(args, "LD="+target.KernelLinker) + linker = target.KernelLinker } } if compiler != "" { @@ -198,6 +198,9 @@ func LinuxMakeArgs(target *targets.Target, compiler, ccache, buildDir string) [] } args = append(args, "CC="+compiler) } + if linker != "" { + args = append(args, "LD="+linker) + } if buildDir != "" { args = append(args, "O="+buildDir) } -- cgit mrf-deployment