]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.17] cmd/link: do not use GO_LDSO when cross compile
authorCherry Mui <cherryyz@google.com>
Tue, 17 Aug 2021 21:21:03 +0000 (17:21 -0400)
committerCherry Mui <cherryyz@google.com>
Wed, 1 Sep 2021 17:06:03 +0000 (17:06 +0000)
GO_LDSO is a setting that is set when the toolchain is build. It
only makes sense to use it on the host platform. Do not use it
when targetting a different platform.

In the past it was not a problem as GO_LDSO was almost always
unset. Now, with CL 301989 it is almost always set (maybe we want
to revisit it).

Updates #47760.
Fixes #47782.

Change-Id: I2704b9968781f46e2d2f8624090db19689b1a32f
Reviewed-on: https://go-review.googlesource.com/c/go/+/343010
Trust: Cherry Mui <cherryyz@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
(cherry picked from commit ddfcc02352feb9e15ff9aa423bb49bfb37d689a3)
Reviewed-on: https://go-review.googlesource.com/c/go/+/343309

src/cmd/link/internal/ld/elf.go

index 81011638bc5fae6b52cf2898d2849dced105c74d..d16539e4bf3b2be8ecc2a7ad2c8c23b1c2ac9097 100644 (file)
@@ -16,6 +16,7 @@ import (
        "fmt"
        "internal/buildcfg"
        "path/filepath"
+       "runtime"
        "sort"
        "strings"
 )
@@ -1749,7 +1750,7 @@ func asmbElf(ctxt *Link) {
                sh.Flags = uint64(elf.SHF_ALLOC)
                sh.Addralign = 1
 
-               if interpreter == "" && buildcfg.GO_LDSO != "" {
+               if interpreter == "" && buildcfg.GOOS == runtime.GOOS && buildcfg.GOARCH == runtime.GOARCH && buildcfg.GO_LDSO != "" {
                        interpreter = buildcfg.GO_LDSO
                }