summaryrefslogtreecommitdiffstats
path: root/debian/patches/0002-cmd-link-internal-riscv64-generate-local-text-symbol.patch
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--debian/patches/0002-cmd-link-internal-riscv64-generate-local-text-symbol.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/debian/patches/0002-cmd-link-internal-riscv64-generate-local-text-symbol.patch b/debian/patches/0002-cmd-link-internal-riscv64-generate-local-text-symbol.patch
new file mode 100644
index 0000000..1797128
--- /dev/null
+++ b/debian/patches/0002-cmd-link-internal-riscv64-generate-local-text-symbol.patch
@@ -0,0 +1,43 @@
+From: Joel Sing <joel@sing.id.au>
+Date: Tue, 27 Feb 2024 23:57:43 +1100
+Subject: cmd/link/internal/riscv64: generate local text symbols for
+ R_RISCV_CALL
+
+Correctly generate local text symbols needed for R_RISCV_CALL when
+external linking. R_RISCV_CALL was added in CL #520095 as a way of
+marking AUIPC+JALR pairs, instead of overloading R_RISCV_PCREL_ITYPE.
+However, genSymsLate was not updated to generate local text symbols
+for the new relocation type, leading to HI20 symbol lookup failures.
+
+This issue is detected by cmd/internal/obj/riscv.TestLargeCall,
+however this is unfortunately skipped in short mode.
+
+Fixes #65646
+
+Change-Id: I8ee0f13791e0628f31657bf7dae2be8482b689b5
+Reviewed-on: https://go-review.googlesource.com/c/go/+/567375
+Reviewed-by: Mauri de Souza Meneguzzo <mauri870@gmail.com>
+Reviewed-by: Carlos Amedee <carlos@golang.org>
+Run-TryBot: Joel Sing <joel@sing.id.au>
+Reviewed-by: Cherry Mui <cherryyz@google.com>
+TryBot-Result: Gopher Robot <gobot@golang.org>
+LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
+---
+ src/cmd/link/internal/riscv64/asm.go | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/cmd/link/internal/riscv64/asm.go b/src/cmd/link/internal/riscv64/asm.go
+index d95de6c..6a4dd01 100644
+--- a/src/cmd/link/internal/riscv64/asm.go
++++ b/src/cmd/link/internal/riscv64/asm.go
+@@ -170,8 +170,8 @@ func genSymsLate(ctxt *ld.Link, ldr *loader.Loader) {
+ relocs := ldr.Relocs(s)
+ for ri := 0; ri < relocs.Count(); ri++ {
+ r := relocs.At(ri)
+- if r.Type() != objabi.R_RISCV_PCREL_ITYPE && r.Type() != objabi.R_RISCV_PCREL_STYPE &&
+- r.Type() != objabi.R_RISCV_TLS_IE {
++ if r.Type() != objabi.R_RISCV_CALL && r.Type() != objabi.R_RISCV_PCREL_ITYPE &&
++ r.Type() != objabi.R_RISCV_PCREL_STYPE && r.Type() != objabi.R_RISCV_TLS_IE {
+ continue
+ }
+ if r.Off() == 0 && ldr.SymType(s) == sym.STEXT {