From a0abecf1020c33e82c464f7891b317e83f0c6a78 Mon Sep 17 00:00:00 2001 From: David Crawshaw Date: Tue, 24 May 2016 13:40:02 -0400 Subject: [PATCH] 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 --- src/cmd/link/internal/ld/lib.go | 10 ++++++++++ 1 file changed, 10 insertions(+) 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) + } + } } } -- 2.50.0