From: yann.morin@orange.com
To: Fiona Klute <fiona.klute@gmx.de>
Cc: <buildroot@buildroot.org>, 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: Tue, 4 Feb 2025 07:26:17 +0100 [thread overview]
Message-ID: <Z6GzCbcs9k0Rul1a@yd-6wlzhs3> (raw)
In-Reply-To: <20250203120130.2332720-1-fiona.klute@gmx.de>
Fiona, All,
On 2025-02-03 13:01 +0100, Fiona Klute via buildroot spake thusly:
> 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.
I have send a patch back a while ago, that allowed to at least work
around the issue for affected packages:
https://patchwork.ozlabs.org/project/buildroot/patch/876f3a7bb6a2375193fc8f06ab856d2449f83727.1699547993.git.yann.morin@orange.com/
This would work for both go-src and go-bin.
I needed that for filebeat, but as we no longer use filebeat, I withdrew
the patch:
https://patchwork.ozlabs.org/project/buildroot/patch/46f20e86fa6c17ada33ede672ffe4229d8bf26a3.1699547993.git.yann.morin@orange.com/
Regards,
Yann E. MORIN.
> Import the patch to stop forcing GOLD.
>
> [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.'
> --
> 2.47.2
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
--
____________
.-----------------.--------------------: _ :------------------.
| Yann E. MORIN | Real-Time Embedded | __/ ) | /"\ ASCII RIBBON |
| | Software Designer | _/ - /' | \ / CAMPAIGN |
| +33 638.411.245 '--------------------: (_ `--, | X AGAINST |
| yann.morin (at) orange.com |_=" ,--' | / \ HTML MAIL |
'--------------------------------------:______/_____:------------------'
____________________________________________________________________________________________________________
Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.
This message and its attachments may contain confidential or privileged information that may be protected by law;
they should not be distributed, used or copied without authorisation.
If you have received this email in error, please notify the sender and delete this message and its attachments.
As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
Thank you.
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
next prev parent reply other threads:[~2025-02-04 6:26 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
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 [this message]
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=Z6GzCbcs9k0Rul1a@yd-6wlzhs3 \
--to=yann.morin@orange.com \
--cc=buildroot@buildroot.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.