commit:     180d1e95aaa2e831bd2480b73af927a1632a9817
Author:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
AuthorDate: Mon Sep  7 03:14:36 2020 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Mon Sep  7 04:04:24 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=180d1e95

sys-fs/zfs-kmod: add powerpc setjmp/longjmp patch to 0.8.4

kernel-builtin build fails with
powerpc64le-unknown-linux-gnu-ld.bfd: fs/zfs/lua/setjmp/setjmp.o: in
function `setjmp':
(.text+0x0): multiple definition of `setjmp';
arch/powerpc/kernel/misc.o:(.text+0x30): first defined here
powerpc64le-unknown-linux-gnu-ld.bfd: fs/zfs/lua/setjmp/setjmp.o: in
function `longjmp':
(.text+0x78): multiple definition of `longjmp';
arch/powerpc/kernel/misc.o:(.text+0x9c): first defined here
Package-Manager: Portage-3.0.5, Repoman-3.0.1
Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 sys-fs/zfs-kmod/files/0.8.4-powerpc_jmp_weak.patch | 48 ++++++++++++++++++++++
 sys-fs/zfs-kmod/zfs-kmod-0.8.4-r1.ebuild           |  2 +
 2 files changed, 50 insertions(+)

diff --git a/sys-fs/zfs-kmod/files/0.8.4-powerpc_jmp_weak.patch 
b/sys-fs/zfs-kmod/files/0.8.4-powerpc_jmp_weak.patch
new file mode 100644
index 00000000000..1a2948a3158
--- /dev/null
+++ b/sys-fs/zfs-kmod/files/0.8.4-powerpc_jmp_weak.patch
@@ -0,0 +1,48 @@
+From bd0efd1f062bfba5dd2d6b1fe30b6949f8e0a8ef Mon Sep 17 00:00:00 2001
+From: sterlingjensen <[email protected]>
+Date: Mon, 24 Aug 2020 22:41:05 -0500
+Subject: [PATCH] Mark lua setjmp/longjmp for powerpc weak
+
+Linux already defines setjmp/longjmp for powerpc, which leads to
+duplicate symbols in a statically linked build.
+
+Signed-off-by: Sterlng Jensen <[email protected]>
+---
+ module/lua/setjmp/setjmp_ppc.S | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/module/lua/setjmp/setjmp_ppc.S b/module/lua/setjmp/setjmp_ppc.S
+index f787ef34913..72aa5d5ab5b 100644
+--- a/module/lua/setjmp/setjmp_ppc.S
++++ b/module/lua/setjmp/setjmp_ppc.S
+@@ -56,7 +56,7 @@
+ #define       ENTRY(name) \
+       .align 2 ; \
+       .type name,@function; \
+-      .globl name; \
++      .weak name; \
+ name:
+ 
+ #else /* PPC64_ELF_ABI_v1 */
+@@ -65,8 +65,8 @@ name:
+ #define       GLUE(a,b) XGLUE(a,b)
+ #define       ENTRY(name) \
+       .align 2 ; \
+-      .globl name; \
+-      .globl GLUE(.,name); \
++      .weak name; \
++      .weak GLUE(.,name); \
+       .pushsection ".opd","aw"; \
+ name: \
+       .quad GLUE(.,name); \
+@@ -83,8 +83,8 @@ GLUE(.,name):
+ #define       ENTRY(name) \
+       .text; \
+       .p2align 4; \
+-      .globl  name; \
+-      .type   name,@function; \
++      .weak name; \
++      .type name,@function; \
+ name:
+ 
+ #endif /* __powerpc64__ */

diff --git a/sys-fs/zfs-kmod/zfs-kmod-0.8.4-r1.ebuild 
b/sys-fs/zfs-kmod/zfs-kmod-0.8.4-r1.ebuild
index 59ea52ab658..2276604b161 100644
--- a/sys-fs/zfs-kmod/zfs-kmod-0.8.4-r1.ebuild
+++ b/sys-fs/zfs-kmod/zfs-kmod-0.8.4-r1.ebuild
@@ -37,6 +37,8 @@ RESTRICT="debug? ( strip ) test"
 
 DOCS=( AUTHORS COPYRIGHT META README.md )
 
+PATCHES=( "${FILESDIR}/${PV}-powerpc_jmp_weak.patch" )
+
 pkg_setup() {
        CONFIG_CHECK="
                !DEBUG_LOCK_ALLOC

Reply via email to