aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDmitri Goutnik <dgoutnik@gmail.com>2019-10-27 12:22:02 -0500
committerTobias Klauser <tobias.klauser@gmail.com>2019-10-28 09:26:37 +0000
commit152dddee7ec08e0bcf9acc41487a826f468ba8ab (patch)
treef3a3f4c05288ab60f41166606199015969e2a468 /src
parent1f3339f441e2053f8efd7ead417761ea319fe790 (diff)
downloadgo-152dddee7ec08e0bcf9acc41487a826f468ba8ab.tar.xz
cmd/link: switch to ld.bfd on freebsd/arm64
Updates golang/go#35197 Change-Id: I4fd85c84475761d71d2c17e62796e0a411cf91d8 Reviewed-on: https://go-review.googlesource.com/c/go/+/203519 Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/cmd/link/internal/ld/lib.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go
index 1edf8cf407..a6fa14cc74 100644
--- a/src/cmd/link/internal/ld/lib.go
+++ b/src/cmd/link/internal/ld/lib.go
@@ -1294,6 +1294,19 @@ func (ctxt *Link) hostlink() {
}
}
+ if ctxt.Arch.Family == sys.ARM64 && objabi.GOOS == "freebsd" {
+ // Switch to ld.bfd on freebsd/arm64.
+ argv = append(argv, "-fuse-ld=bfd")
+
+ // Provide a useful error if ld.bfd is missing.
+ cmd := exec.Command(*flagExtld, "-fuse-ld=bfd", "-Wl,--version")
+ if out, err := cmd.CombinedOutput(); err == nil {
+ if !bytes.Contains(out, []byte("GNU ld")) {
+ log.Fatalf("ARM64 external linker must be ld.bfd (issue #35197), please install devel/binutils")
+ }
+ }
+ }
+
if ctxt.IsELF && len(buildinfo) > 0 {
argv = append(argv, fmt.Sprintf("-Wl,--build-id=0x%x", buildinfo))
}