LuaJIT: don't apply ppc64 patchset for ppc (breaks JIT)
There is something in the ppc64 patch that breaks 32-bit ppc in some scenarios (it appears to work but segfaults e.g. when building neovim). So until that is investigated and fixed, conditionalize this.
This commit is contained in:
parent
83bf8389e1
commit
da1f946705
4 changed files with 23 additions and 10 deletions
|
@ -33,8 +33,6 @@ This fixes crashes on ppc-musl, as musl only supports secureplt.
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LJ_HASJIT
|
#if LJ_HASJIT
|
||||||
diff --git a/src/lj_dispatch.h b/src/lj_dispatch.h
|
|
||||||
index 5bda51a..23f937f 100644
|
|
||||||
--- src/lj_dispatch.h
|
--- src/lj_dispatch.h
|
||||||
+++ src/lj_dispatch.h
|
+++ src/lj_dispatch.h
|
||||||
@@ -66,6 +66,21 @@ GOTDEF(GOTENUM)
|
@@ -66,6 +66,21 @@ GOTDEF(GOTENUM)
|
||||||
|
@ -68,14 +66,12 @@ index 5bda51a..23f937f 100644
|
||||||
ASMFunction got[LJ_GOT__MAX]; /* Global offset table. */
|
ASMFunction got[LJ_GOT__MAX]; /* Global offset table. */
|
||||||
#endif
|
#endif
|
||||||
#if LJ_HASJIT
|
#if LJ_HASJIT
|
||||||
diff --git a/src/vm_ppc.dasc b/src/vm_ppc.dasc
|
|
||||||
index 14a35d2..c239006 100644
|
|
||||||
--- src/vm_ppc.dasc
|
--- src/vm_ppc.dasc
|
||||||
+++ src/vm_ppc.dasc
|
+++ src/vm_ppc.dasc
|
||||||
@@ -51,7 +51,12 @@
|
@@ -59,7 +59,12 @@
|
||||||
|.macro blex, target; bl extern target; nop; .endmacro
|
|.define ENV_OFS, 8
|
||||||
|.macro .toc, a, b; a, b; .endmacro
|
|.endif
|
||||||
|.else
|
|.else // No TOC.
|
||||||
-|.macro blex, target; bl extern target@plt; .endmacro
|
-|.macro blex, target; bl extern target@plt; .endmacro
|
||||||
+|.macro blex, target
|
+|.macro blex, target
|
||||||
+| lwz TMP0, DISPATCH_GOT(target)(DISPATCH)
|
+| lwz TMP0, DISPATCH_GOT(target)(DISPATCH)
|
||||||
|
@ -85,8 +81,8 @@ index 14a35d2..c239006 100644
|
||||||
+|.endmacro
|
+|.endmacro
|
||||||
|.macro .toc, a, b; .endmacro
|
|.macro .toc, a, b; .endmacro
|
||||||
|.endif
|
|.endif
|
||||||
|.if OPD
|
|.macro .tocenv, a, b; .if TOCENV; a, b; .endif; .endmacro
|
||||||
@@ -540,6 +545,8 @@
|
@@ -448,6 +453,8 @@
|
||||||
|// Assumes DISPATCH is relative to GL.
|
|// Assumes DISPATCH is relative to GL.
|
||||||
#define DISPATCH_GL(field) (GG_DISP2G + (int)offsetof(global_State, field))
|
#define DISPATCH_GL(field) (GG_DISP2G + (int)offsetof(global_State, field))
|
||||||
#define DISPATCH_J(field) (GG_DISP2J + (int)offsetof(jit_State, field))
|
#define DISPATCH_J(field) (GG_DISP2J + (int)offsetof(jit_State, field))
|
|
@ -47,6 +47,23 @@ if [ "$CROSS_BUILD" ]; then
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# the ppc64 patchset subtly breaks ppc, needs investigation; for
|
||||||
|
# now apply patches conditionally, separately for ppc64 and ppc
|
||||||
|
post_patch() {
|
||||||
|
local patchdir
|
||||||
|
|
||||||
|
case "$XBPS_TARGET_MACHINE" in
|
||||||
|
ppc64*) patchdir="ppc64";;
|
||||||
|
ppc*) patchdir="ppc";;
|
||||||
|
*) return;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
for i in ${FILESDIR}/patches/${patchdir}/*.patch; do
|
||||||
|
msg_normal "patching: $i\n"
|
||||||
|
patch -sNp0 -i ${i}
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
do_build() {
|
do_build() {
|
||||||
local _cflags=$CFLAGS
|
local _cflags=$CFLAGS
|
||||||
local _ldflags=$LDFLAGS
|
local _ldflags=$LDFLAGS
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue