From eeaa171604b59d8ad3d86944ebf21ee758e92f95 Mon Sep 17 00:00:00 2001 From: "Paul D. Weber" Date: Fri, 22 May 2020 21:33:59 +0200 Subject: [PATCH] cmd/link/internal/ld/lib.go: use lld on Android Set linker explicitly to lld because the default does not work on NDK versions 20.0, 20.1, 21.0 and 21.1. NDK 17c (or earlier) based builds will need to specify -fuse-ld=gold. Fixes #38838 --- src/cmd/link/internal/ld/lib.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go index 523a7992bb..707e664bd0 100644 --- a/src/cmd/link/internal/ld/lib.go +++ b/src/cmd/link/internal/ld/lib.go @@ -1478,6 +1478,11 @@ func (ctxt *Link) hostlink() { // from the beginning of the section (like sym.STYPE). argv = append(argv, "-Wl,-znocopyreloc") + if objabi.GOOS == "android" { + // Use lld to avoid errors from default linker (issue #38838) + altLinker = "lld" + } + if ctxt.Arch.InFamily(sys.ARM, sys.ARM64) && objabi.GOOS == "linux" { // On ARM, the GNU linker will generate COPY relocations // even with -znocopyreloc set.