From a8f019e956db40e9846e635a622489e356cb3c63 Mon Sep 17 00:00:00 2001 From: Byoungchan Lee Date: Thu, 25 Nov 2021 20:40:21 +0900 Subject: [PATCH] cmd/link: add DT_NEEDED for all 64-bit ELF dynimplib Also change the relevant test to be tested on the linux-arm64 platform as well. Fixes #49789 Change-Id: Id2eac7a45279f037957442862f8ed63838b8e929 Reviewed-on: https://go-review.googlesource.com/c/go/+/366855 Trust: Ian Lance Taylor Reviewed-by: Cherry Mui Trust: Than McIntosh Run-TryBot: Than McIntosh TryBot-Result: Gopher Robot --- AUTHORS | 1 + CONTRIBUTORS | 1 + src/cmd/link/internal/ld/elf.go | 2 +- src/cmd/link/internal/ld/elf_test.go | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/AUTHORS b/AUTHORS index bffd52275d..3835243896 100644 --- a/AUTHORS +++ b/AUTHORS @@ -570,6 +570,7 @@ Hootsuite Inc. Hsin-Ho Yeh Hu Keping Hugues Bruant +HyperConnect Inc. Ian Gudger Ian Kent IBM diff --git a/CONTRIBUTORS b/CONTRIBUTORS index e6ac7bda21..7c0531cd6f 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -451,6 +451,7 @@ Bryan Ford Bryan Heden Bulat Gaifullin Burak Guven +Byoungchan Lee Caine Tighe Caio Marcelo de Oliveira Filho Caleb Martinez diff --git a/src/cmd/link/internal/ld/elf.go b/src/cmd/link/internal/ld/elf.go index 7f45a8fce5..cb094a373a 100644 --- a/src/cmd/link/internal/ld/elf.go +++ b/src/cmd/link/internal/ld/elf.go @@ -2258,7 +2258,7 @@ func elfadddynsym(ldr *loader.Loader, target *Target, syms *ArchSyms, s loader.S dil := ldr.SymDynimplib(s) - if target.Arch.Family == sys.AMD64 && !cgoeDynamic && dil != "" && !seenlib[dil] { + if !cgoeDynamic && dil != "" && !seenlib[dil] { du := ldr.MakeSymbolUpdater(syms.Dynamic) Elfwritedynent(target.Arch, du, elf.DT_NEEDED, uint64(dstru.Addstring(dil))) seenlib[dil] = true diff --git a/src/cmd/link/internal/ld/elf_test.go b/src/cmd/link/internal/ld/elf_test.go index d86ebb89e0..15eaa1388b 100644 --- a/src/cmd/link/internal/ld/elf_test.go +++ b/src/cmd/link/internal/ld/elf_test.go @@ -86,7 +86,7 @@ func TestNoDuplicateNeededEntries(t *testing.T) { // across the board given the nature of the test). pair := runtime.GOOS + "-" + runtime.GOARCH switch pair { - case "linux-amd64", "freebsd-amd64", "openbsd-amd64": + case "linux-amd64", "linux-arm64", "freebsd-amd64", "openbsd-amd64": default: t.Skip("no need for test on " + pair) }