Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
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

  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