From: Arnout Vandecappelle via buildroot <buildroot@buildroot.org>
To: Fiona Klute <fiona.klute@gmx.de>, buildroot@buildroot.org
Cc: Thomas Perale <thomas.perale@mind.be>,
Christian Stewart <christian@aperture.us>
Subject: Re: [Buildroot] [PATCH 1/1] package/go/go-src: stop forcing binutils-gold dependency on aarch64
Date: Mon, 3 Feb 2025 13:48:47 +0100 [thread overview]
Message-ID: <3dfa6faa-9307-4091-9a8b-f327a0be19be@mind.be> (raw)
In-Reply-To: <20250203120130.2332720-1-fiona.klute@gmx.de>
Hi Fiona,
On 03/02/2025 13:01, Fiona Klute wrote:
> From: "Fiona Klute (WIWA)" <fiona.klute@gmx.de>
>
> Go forces the GOLD linker when dynamically linking Go code, because
> old versions of BFD caused errors. The issue has been fixed in
> Binutils since at least 2.41 according to the upstream description of
> the patch added with this commit [1], and now forcing GOLD causes
> linking failure if ld.gold is not available. The associated Golang
> issue [2] is still open.
>
> Import the patch to stop forcing GOLD.
This fixes the issue for go-src, but not for go-bin unfortunately... And
go-bin is the default...
On the other hand, we don't have any autobuilder failures yet, so maybe it's a
corner case problem and we can live with it until go-bin gets bumped to 1.23.6
(assuming upstream applies the fix to their stable branch of course).
Regards,
Arnout
>
> [1] https://go-review.googlesource.com/c/go/+/391115
> [2] https://github.com/golang/go/issues/22040
>
> Signed-off-by: Fiona Klute (WIWA) <fiona.klute@gmx.de>
> ---
> ...-binutils-gold-dependency-on-aarch64.patch | 70 +++++++++++++++++++
> 1 file changed, 70 insertions(+)
> create mode 100644 package/go/go-src/0003-cmd-link-stop-forcing-binutils-gold-dependency-on-aarch64.patch
>
> diff --git a/package/go/go-src/0003-cmd-link-stop-forcing-binutils-gold-dependency-on-aarch64.patch b/package/go/go-src/0003-cmd-link-stop-forcing-binutils-gold-dependency-on-aarch64.patch
> new file mode 100644
> index 0000000000..1ba31b6577
> --- /dev/null
> +++ b/package/go/go-src/0003-cmd-link-stop-forcing-binutils-gold-dependency-on-aarch64.patch
> @@ -0,0 +1,70 @@
> +From 6d265b008e3d106b2706645e5a88cd8e2fb98953 Mon Sep 17 00:00:00 2001
> +From: Dirk Müller <dirk@dmllr.de>
> +Date: Wed, 09 Mar 2022 17:47:23 +0100
> +Subject: [PATCH] cmd/link: stop forcing binutils-gold dependency on aarch64
> +
> +The bfd linker appears to be working just fine at least in version
> +2.41 or above. Reject the known broken one instead, which
> +avoids an architecture specific linker dependency that
> +is cumbersome for distributions.
> +
> +Fixes #22040.
> +
> +Change-Id: I9f377e47c22ef20497479c0978c053ed5de46a38
> +Upstream: https://go-review.googlesource.com/c/go/+/391115
> +Signed-off-by: Fiona Klute (WIWA) <fiona.klute@gmx.de>
> +---
> +
> +diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go
> +index 2d8f964..fcf0bc7 100644
> +--- a/src/cmd/link/internal/ld/lib.go
> ++++ b/src/cmd/link/internal/ld/lib.go
> +@@ -1670,27 +1670,6 @@
> + // Use lld to avoid errors from default linker (issue #38838)
> + altLinker = "lld"
> + }
> +-
> +- if ctxt.Arch.InFamily(sys.ARM64) && buildcfg.GOOS == "linux" {
> +- // On ARM64, the GNU linker will fail with
> +- // -znocopyreloc if it thinks a COPY relocation is
> +- // required. Switch to gold.
> +- // https://sourceware.org/bugzilla/show_bug.cgi?id=19962
> +- // https://go.dev/issue/22040
> +- altLinker = "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.
> +- name, args := flagExtld[0], flagExtld[1:]
> +- args = append(args, "-fuse-ld=gold", "-Wl,--version")
> +- cmd := exec.Command(name, args...)
> +- if out, err := cmd.CombinedOutput(); err == nil {
> +- if !bytes.Contains(out, []byte("GNU gold")) {
> +- log.Fatalf("ARM64 external linker must be gold (issue #15696, 22040), but is not: %s", out)
> +- }
> +- }
> +- }
> + }
> + if ctxt.Arch.Family == sys.ARM64 && buildcfg.GOOS == "freebsd" {
> + // Switch to ld.bfd on freebsd/arm64.
> +diff --git a/src/make.bash b/src/make.bash
> +index b67ae15..7df4910 100755
> +--- a/src/make.bash
> ++++ b/src/make.bash
> +@@ -94,6 +94,16 @@
> + ;;
> + esac
> +
> ++# Test for bad bfd.ld
> ++if test "$(uname -m)" = "aarch64" && ld -v | grep -E "GNU ld.* 2\.([0-3]|40)"; then
> ++ echo 'ERROR: Your system uses bfd.LD 2.40 or older which has issues with dynamic linking on aarch64'
> ++ echo 'Consider upgrading or switching to binutils-gold.'
> ++ echo
> ++ echo 'See https://sourceware.org/bugzilla/show_bug.cgi?id=30437'
> ++
> ++ exit 1
> ++fi
> ++
> + # Test for bad ld.
> + if ld --version 2>&1 | grep 'gold.* 2\.20' >/dev/null; then
> + echo 'ERROR: Your system has gold 2.20 installed.'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
next prev parent reply other threads:[~2025-02-03 12:48 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-03 12:01 [Buildroot] [PATCH 1/1] package/go/go-src: stop forcing binutils-gold dependency on aarch64 Fiona Klute via buildroot
2025-02-03 12:48 ` Arnout Vandecappelle via buildroot [this message]
2025-02-03 13:04 ` Fiona Klute via buildroot
2025-02-03 14:13 ` Arnout Vandecappelle via buildroot
2025-02-03 15:17 ` Fiona Klute via buildroot
2025-02-03 20:08 ` Christian Stewart via buildroot
2025-02-04 3:41 ` Christian Stewart via buildroot
2025-02-04 6:27 ` yann.morin
2025-02-04 14:50 ` Fiona Klute via buildroot
2025-02-04 6:26 ` yann.morin
2025-02-04 10:52 ` Fiona Klute via buildroot
2025-02-04 11:13 ` yann.morin
2025-02-04 11:37 ` Fiona Klute via buildroot
2025-02-04 12:13 ` yann.morin
2025-02-04 14:37 ` Fiona Klute via buildroot
2025-02-04 11:27 ` Arnout Vandecappelle via buildroot
2025-02-04 14:46 ` Fiona Klute via buildroot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3dfa6faa-9307-4091-9a8b-f327a0be19be@mind.be \
--to=buildroot@buildroot.org \
--cc=arnout@mind.be \
--cc=christian@aperture.us \
--cc=fiona.klute@gmx.de \
--cc=thomas.perale@mind.be \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox