From: David Crawshaw Date: Tue, 24 May 2016 17:40:02 +0000 (-0400) Subject: cmd/link: ensure -fuse-ld=gold uses gold X-Git-Tag: go1.7beta1~111 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=a0abecf1020c33e82c464f7891b317e83f0c6a78;p=gostls13.git cmd/link: ensure -fuse-ld=gold uses gold Fixes #15696 Change-Id: I134e918dc56f79a72a04aa54f415371884113d2a Reviewed-on: https://go-review.googlesource.com/23400 Reviewed-by: Ian Lance Taylor --- diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go index 4fff35c38e..3860287e67 100644 --- a/src/cmd/link/internal/ld/lib.go +++ b/src/cmd/link/internal/ld/lib.go @@ -1137,6 +1137,16 @@ func hostlink() { // // In both cases, switch to gold. argv = append(argv, "-fuse-ld=gold") + + // If gold is not installed, gcc will silently switch + // back to ld.bfd. So we parse the version information + // and provide a useful error if gold is missing. + cmd := exec.Command(extld, "-fuse-ld=gold", "-Wl,--version") + if out, err := cmd.CombinedOutput(); err != nil { + if !bytes.Contains(out, []byte("GNU gold")) { + log.Fatalf("ARM external linker must be gold (issue #15696), but is not: %s", out) + } + } } }