commit:     dc5945848571723b42e3b01bb36c4aa09dacaa27
Author:     Jakov Smolić <jsmolic <AT> gentoo <DOT> org>
AuthorDate: Tue Jun 25 16:29:52 2024 +0000
Commit:     Jakov Smolić <jsmolic <AT> gentoo <DOT> org>
CommitDate: Tue Jun 25 16:31:19 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=dc594584

dev-lisp/gcl: Apply upstream patch for risc-v relocations

Closes: https://bugs.gentoo.org/893938
Signed-off-by: Jakov Smolić <jsmolic <AT> gentoo.org>

 dev-lisp/gcl/files/gcl-2.6.15-riscv.patch | 67 +++++++++++++++++++++++++++++++
 dev-lisp/gcl/gcl-2.6.15_pre3.ebuild       |  6 ++-
 2 files changed, 72 insertions(+), 1 deletion(-)

diff --git a/dev-lisp/gcl/files/gcl-2.6.15-riscv.patch 
b/dev-lisp/gcl/files/gcl-2.6.15-riscv.patch
new file mode 100644
index 000000000000..1250ac2cf1e0
--- /dev/null
+++ b/dev-lisp/gcl/files/gcl-2.6.15-riscv.patch
@@ -0,0 +1,67 @@
+From bc3324432b859477feed47e7db0e97dd33b61d1f Mon Sep 17 00:00:00 2001
+From: Camm Maguire <[email protected]>
+Date: Fri, 23 Feb 2024 07:47:26 -0500
+Subject: update relocs for riscv64
+
+---
+ gcl/h/elf64_riscv64_reloc.h | 44 +++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 43 insertions(+), 1 deletion(-)
+
+diff --git a/gcl/h/elf64_riscv64_reloc.h b/gcl/h/elf64_riscv64_reloc.h
+index c2f8232..08e94ce 100644
+--- a/h/elf64_riscv64_reloc.h
++++ b/h/elf64_riscv64_reloc.h
+@@ -23,8 +23,50 @@
+     case R_RISCV_JAL:
+       break;
+     case R_RISCV_64:
+-      store_val(where,MASK(64),(s+a));
++      store_val(where,~0L,(s+a));
+       break;
+     case R_RISCV_32:
+       store_val(where,MASK(32),(s+a));
+       break;
++    case R_RISCV_32_PCREL:
++      store_val(where,MASK(32),(s+a)-p);
++      break;
++    case R_RISCV_ADD8:
++      add_val(where,MASK(8),(s+a));
++      break;
++    case R_RISCV_ADD16:
++      add_val(where,MASK(16),(s+a));
++      break;
++    case R_RISCV_ADD32:
++      add_val(where,MASK(32),(s+a));
++      break;
++    case R_RISCV_ADD64:
++      add_val(where,~0L,(s+a));
++      break;
++    case R_RISCV_SUB6:
++      add_val(where,MASK(6),-(s+a));
++      break;
++    case R_RISCV_SUB8:
++      add_val(where,MASK(8),-(s+a));
++      break;
++    case R_RISCV_SUB16:
++      add_val(where,MASK(16),-(s+a));
++      break;
++    case R_RISCV_SUB32:
++      add_val(where,MASK(32),-(s+a));
++      break;
++    case R_RISCV_SUB64:
++      add_val(where,~0L,-(s+a));
++      break;
++    case R_RISCV_SET6:
++      store_val(where,MASK(6),(s+a));
++      break;
++    case R_RISCV_SET8:
++      store_val(where,MASK(8),(s+a));
++      break;
++    case R_RISCV_SET16:
++      store_val(where,MASK(16),(s+a));
++      break;
++    case R_RISCV_SET32:
++      store_val(where,MASK(32),(s+a));
++      break;
+-- 
+cgit v1.1

diff --git a/dev-lisp/gcl/gcl-2.6.15_pre3.ebuild 
b/dev-lisp/gcl/gcl-2.6.15_pre3.ebuild
index dd6b7e3a812d..7d14fb1a28a3 100644
--- a/dev-lisp/gcl/gcl-2.6.15_pre3.ebuild
+++ b/dev-lisp/gcl/gcl-2.6.15_pre3.ebuild
@@ -27,7 +27,11 @@ DEPEND="${RDEPEND}
        app-text/texi2html
        >=dev-build/autoconf-2.52"
 
-PATCHES=( "${WORKDIR}"/${PF}-spelling.patch )
+PATCHES=(
+       "${WORKDIR}"/${PF}-spelling.patch
+       # bug 893938
+       "${FILESDIR}"/${PN}-2.6.15-riscv.patch
+)
 S="${WORKDIR}"/${PN}-Version_2_6_15pre3/${PN}
 
 src_configure() {

Reply via email to