From: Dmitri Goutnik Date: Sun, 27 Oct 2019 17:22:02 +0000 (-0500) Subject: cmd/link: switch to ld.bfd on freebsd/arm64 X-Git-Tag: go1.14beta1~547 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=152dddee7ec08e0bcf9acc41487a826f468ba8ab;p=gostls13.git 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 TryBot-Result: Gobot Gobot Reviewed-by: Tobias Klauser --- 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)) }