summaryrefslogtreecommitdiff
path: root/Build/source/libs/luajit/LuaJIT-PATCHES
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/luajit/LuaJIT-PATCHES')
-rw-r--r--Build/source/libs/luajit/LuaJIT-PATCHES/ChangeLog7
-rw-r--r--Build/source/libs/luajit/LuaJIT-PATCHES/patch-01-LuaJITTeX94
-rw-r--r--Build/source/libs/luajit/LuaJIT-PATCHES/patch-05-LuaJITTeX75
-rw-r--r--Build/source/libs/luajit/LuaJIT-PATCHES/patch-06-ppc-darwin15
-rw-r--r--Build/source/libs/luajit/LuaJIT-PATCHES/patch-07-x86_64-cygwin69
5 files changed, 116 insertions, 144 deletions
diff --git a/Build/source/libs/luajit/LuaJIT-PATCHES/ChangeLog b/Build/source/libs/luajit/LuaJIT-PATCHES/ChangeLog
index 0306037354a..b74ee1d6be4 100644
--- a/Build/source/libs/luajit/LuaJIT-PATCHES/ChangeLog
+++ b/Build/source/libs/luajit/LuaJIT-PATCHES/ChangeLog
@@ -1,3 +1,10 @@
+2016-03-07 Luigi Scarso <luigi.scarso@gmail.com>
+ Luajit-2.1.0-beta2
+
+2016-03-04 Luigi Scarso <luigi.scarso@gmail.com>
+
+ * added RESERVED_load_aux_JIT needed to Luajittex loadfile
+
2015-09-27 Peter Breitenlohner <peb@mppmu.mpg.de>
* patch-07-x86_64-cygwin (new): Backport from upstream git.
diff --git a/Build/source/libs/luajit/LuaJIT-PATCHES/patch-01-LuaJITTeX b/Build/source/libs/luajit/LuaJIT-PATCHES/patch-01-LuaJITTeX
index 4853f00cc52..2e8220e0c36 100644
--- a/Build/source/libs/luajit/LuaJIT-PATCHES/patch-01-LuaJITTeX
+++ b/Build/source/libs/luajit/LuaJIT-PATCHES/patch-01-LuaJITTeX
@@ -1,6 +1,6 @@
-diff -ur LuaJIT-2.1.0-beta1.orig/src/lauxlib.h LuaJIT-2.1.0-beta1/src/lauxlib.h
---- LuaJIT-2.1.0-beta1.orig/src/lauxlib.h 2015-08-25 23:35:00.000000000 +0200
-+++ LuaJIT-2.1.0-beta1/src/lauxlib.h 2015-09-04 08:42:39.000000000 +0200
+diff -bur LuaJIT-src-orig/src/lauxlib.h LuaJIT-src/src/lauxlib.h
+--- LuaJIT-src-orig/src/lauxlib.h 2016-03-07 09:43:42.708069718 +0100
++++ LuaJIT-src/src/lauxlib.h 2016-03-04 16:52:23.000000000 +0100
@@ -86,6 +86,32 @@
int level);
@@ -34,9 +34,18 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/lauxlib.h LuaJIT-2.1.0-beta1/src/lauxlib.h
/*
** ===============================================================
** some useful macros
-diff -ur LuaJIT-2.1.0-beta1.orig/src/lib_init.c LuaJIT-2.1.0-beta1/src/lib_init.c
---- LuaJIT-2.1.0-beta1.orig/src/lib_init.c 2015-08-25 23:35:00.000000000 +0200
-+++ LuaJIT-2.1.0-beta1/src/lib_init.c 2015-09-04 08:42:39.000000000 +0200
+@@ -144,6 +170,8 @@
+ LUALIB_API void (luaL_addvalue) (luaL_Buffer *B);
+ LUALIB_API void (luaL_pushresult) (luaL_Buffer *B);
+
++/* Luajittex needs this one because it overloads loadfile */
++LUALIB_API int (RESERVED_load_aux_JIT) (lua_State *L, int status, int envarg);
+
+ /* }====================================================== */
+
+diff -bur LuaJIT-src-orig/src/lib_init.c LuaJIT-src/src/lib_init.c
+--- LuaJIT-src-orig/src/lib_init.c 2016-03-07 09:43:42.720069718 +0100
++++ LuaJIT-src/src/lib_init.c 2016-03-07 11:47:15.847946480 +0100
@@ -26,6 +26,7 @@
{ LUA_DBLIBNAME, luaopen_debug },
{ LUA_BITLIBNAME, luaopen_bit },
@@ -45,9 +54,9 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/lib_init.c LuaJIT-2.1.0-beta1/src/lib_init.
{ NULL, NULL }
};
-diff -ur LuaJIT-2.1.0-beta1.orig/src/lib_package.c LuaJIT-2.1.0-beta1/src/lib_package.c
---- LuaJIT-2.1.0-beta1.orig/src/lib_package.c 2015-08-25 23:35:00.000000000 +0200
-+++ LuaJIT-2.1.0-beta1/src/lib_package.c 2015-09-04 08:42:39.000000000 +0200
+diff -bur LuaJIT-src-orig/src/lib_package.c LuaJIT-src/src/lib_package.c
+--- LuaJIT-src-orig/src/lib_package.c 2016-03-07 09:43:42.712069718 +0100
++++ LuaJIT-src/src/lib_package.c 2016-03-07 11:49:15.655944489 +0100
@@ -362,6 +362,29 @@
return 1; /* library loaded successfully */
}
@@ -100,10 +109,45 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/lib_package.c LuaJIT-2.1.0-beta1/src/lib_pa
static int lj_cf_package_loader_preload(lua_State *L)
{
const char *name = luaL_checkstring(L, 1);
-diff -ur LuaJIT-2.1.0-beta1.orig/src/lua.h LuaJIT-2.1.0-beta1/src/lua.h
---- LuaJIT-2.1.0-beta1.orig/src/lua.h 2015-08-25 23:35:00.000000000 +0200
-+++ LuaJIT-2.1.0-beta1/src/lua.h 2015-09-04 08:42:39.000000000 +0200
-@@ -348,6 +348,16 @@
+
+diff -bur LuaJIT-src-orig/src/lj_load.c LuaJIT-src/src/lj_load.c
+--- LuaJIT-src-orig/src/lj_load.c 2016-03-07 09:43:42.716069718 +0100
++++ LuaJIT-src/src/lj_load.c 2016-03-07 12:09:10.771924621 +0100
+@@ -166,3 +166,19 @@
+ return 1;
+ }
+
++/* -- Luajittex needs this one because it overloads loadfile -- */
++LUALIB_API int RESERVED_load_aux_JIT(lua_State *L, int status, int envarg)
++{
++ if (status == 0) {
++ if (tvistab(L->base+envarg-1)) {
++ GCfunc *fn = funcV(L->top-1);
++ GCtab *t = tabV(L->base+envarg-1);
++ setgcref(fn->c.env, obj2gco(t));
++ lj_gc_objbarrier(L, fn, t);
++ }
++ return 1;
++ } else {
++ setnilV(L->top-2);
++ return 2;
++ }
++}
+
+diff -bur LuaJIT-src-orig/src/lua.h LuaJIT-src/src/lua.h
+--- LuaJIT-src-orig/src/lua.h 2016-03-07 09:43:42.716069718 +0100
++++ LuaJIT-src/src/lua.h 2016-03-07 11:56:24.855937353 +0100
+@@ -103,6 +103,9 @@
+ typedef LUA_INTEGER lua_Integer;
+
+
++/* communication with LuaJiTTeX */
++LUA_API int luajittex_choose_hash_function;
++
+
+ /*
+ ** state manipulation
+@@ -349,6 +352,16 @@
const char *chunkname, const char *mode);
@@ -120,9 +164,10 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/lua.h LuaJIT-2.1.0-beta1/src/lua.h
struct lua_Debug {
int event;
const char *name; /* (n) */
-diff -ur LuaJIT-2.1.0-beta1.orig/src/lualib.h LuaJIT-2.1.0-beta1/src/lualib.h
---- LuaJIT-2.1.0-beta1.orig/src/lualib.h 2015-08-25 23:35:00.000000000 +0200
-+++ LuaJIT-2.1.0-beta1/src/lualib.h 2015-09-04 08:42:39.000000000 +0200
+
+diff -bur LuaJIT-src-orig/src/lualib.h LuaJIT-src/src/lualib.h
+--- LuaJIT-src-orig/src/lualib.h 2016-03-07 09:43:42.724069718 +0100
++++ LuaJIT-src/src/lualib.h 2016-03-07 11:58:19.151935453 +0100
@@ -22,6 +22,8 @@
#define LUA_JITLIBNAME "jit"
#define LUA_FFILIBNAME "ffi"
@@ -141,10 +186,11 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/lualib.h LuaJIT-2.1.0-beta1/src/lualib.h
LUALIB_API void luaL_openlibs(lua_State *L);
#ifndef lua_assert
-diff -ur LuaJIT-2.1.0-beta1.orig/src/Makefile LuaJIT-2.1.0-beta1/src/Makefile
---- LuaJIT-2.1.0-beta1.orig/src/Makefile 2015-08-25 23:35:00.000000000 +0200
-+++ LuaJIT-2.1.0-beta1/src/Makefile 2015-09-04 08:42:39.000000000 +0200
-@@ -97,7 +97,7 @@
+
+diff -bur LuaJIT-src-orig/src/Makefile LuaJIT-src/src/Makefile
+--- LuaJIT-src-orig/src/Makefile 2016-03-07 09:43:42.716069718 +0100
++++ LuaJIT-src/src/Makefile 2016-03-07 12:02:42.319931078 +0100
+@@ -99,7 +99,7 @@
# enabled by default. Some other features that *might* break some existing
# code (e.g. __pairs or os.execute() return values) can be enabled here.
# Note: this does not provide full compatibility with Lua 5.2 at this time.
@@ -153,7 +199,7 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/Makefile LuaJIT-2.1.0-beta1/src/Makefile
#
# Disable the JIT compiler, i.e. turn LuaJIT into a pure interpreter.
#XCFLAGS+= -DLUAJIT_DISABLE_JIT
-@@ -456,7 +456,7 @@
+@@ -471,7 +471,7 @@
LJVM_BOUT= $(LJVM_S)
LJVM_MODE= elfasm
@@ -162,9 +208,9 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/Makefile LuaJIT-2.1.0-beta1/src/Makefile
lib_io.o lib_os.o lib_package.o lib_debug.o lib_jit.o lib_ffi.o
LJLIB_C= $(LJLIB_O:.o=.c)
-diff -ur LuaJIT-2.1.0-beta1.orig/src/Makefile.dep LuaJIT-2.1.0-beta1/src/Makefile.dep
---- LuaJIT-2.1.0-beta1.orig/src/Makefile.dep 2015-08-25 23:35:00.000000000 +0200
-+++ LuaJIT-2.1.0-beta1/src/Makefile.dep 2015-09-04 08:46:10.000000000 +0200
+diff -bur LuaJIT-src-orig/src/Makefile.dep LuaJIT-src/src/Makefile.dep
+--- LuaJIT-src-orig/src/Makefile.dep 2016-03-07 09:43:42.696069718 +0100
++++ LuaJIT-src/src/Makefile.dep 2016-03-07 12:05:19.343928468 +0100
@@ -6,6 +6,7 @@
lj_tab.h lj_meta.h lj_state.h lj_ctype.h lj_cconv.h lj_bc.h lj_ff.h \
lj_ffdef.h lj_dispatch.h lj_jit.h lj_ir.h lj_char.h lj_strscan.h \
diff --git a/Build/source/libs/luajit/LuaJIT-PATCHES/patch-05-LuaJITTeX b/Build/source/libs/luajit/LuaJIT-PATCHES/patch-05-LuaJITTeX
index 3a05a52d896..c2818a71b9d 100644
--- a/Build/source/libs/luajit/LuaJIT-PATCHES/patch-05-LuaJITTeX
+++ b/Build/source/libs/luajit/LuaJIT-PATCHES/patch-05-LuaJITTeX
@@ -1,6 +1,6 @@
-diff -ur LuaJIT-2.1.0-beta1.orig/src/lj_def.h LuaJIT-2.1.0-beta1/src/lj_def.h
---- LuaJIT-2.1.0-beta1.orig/src/lj_def.h 2015-08-25 23:35:00.000000000 +0200
-+++ LuaJIT-2.1.0-beta1/src/lj_def.h 2015-09-04 08:51:52.000000000 +0200
+diff -bur LuaJIT-src-orig/src/lj_def.h LuaJIT-src/src/lj_def.h
+--- LuaJIT-src-orig/src/lj_def.h 2016-03-07 09:43:42.728069718 +0100
++++ LuaJIT-src/src/lj_def.h 2016-03-07 12:23:43.327910115 +0100
@@ -66,7 +66,7 @@
#define LJ_MAX_BCINS (1<<26) /* Max. # of bytecode instructions. */
#define LJ_MAX_SLOTS 250 /* Max. # of slots in a Lua func. */
@@ -10,9 +10,10 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/lj_def.h LuaJIT-2.1.0-beta1/src/lj_def.h
#define LJ_MAX_IDXCHAIN 100 /* __index/__newindex chain limit. */
#define LJ_STACK_EXTRA (5+2*LJ_FR2) /* Extra stack space (metamethods). */
-diff -ur LuaJIT-2.1.0-beta1.orig/src/lj_str.c LuaJIT-2.1.0-beta1/src/lj_str.c
---- LuaJIT-2.1.0-beta1.orig/src/lj_str.c 2015-08-25 23:35:00.000000000 +0200
-+++ LuaJIT-2.1.0-beta1/src/lj_str.c 2015-09-04 08:51:52.000000000 +0200
+
+diff -bur LuaJIT-src-orig/src/lj_str.c LuaJIT-src/src/lj_str.c
+--- LuaJIT-src-orig/src/lj_str.c 2016-03-07 09:43:42.696069718 +0100
++++ LuaJIT-src/src/lj_str.c 2016-03-07 12:25:22.031908474 +0100
@@ -118,6 +118,16 @@
g->strhash = newhash;
}
@@ -30,7 +31,7 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/lj_str.c LuaJIT-2.1.0-beta1/src/lj_str.c
/* Intern a string and return string object. */
GCstr *lj_str_new(lua_State *L, const char *str, size_t lenx)
{
-@@ -126,27 +136,44 @@
+@@ -126,9 +136,22 @@
GCobj *o;
MSize len = (MSize)lenx;
MSize a, b, h = len;
@@ -51,58 +52,22 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/lj_str.c LuaJIT-2.1.0-beta1/src/lj_str.c
+ } else {
+ /* LuaJIT 2.0.2 hash function */
/* Compute string hash. Constants taken from lookup3 hash by Bob Jenkins. */
-- if (len >= 4) { /* Caveat: unaligned access! */
-- a = lj_getu32(str);
-- h ^= lj_getu32(str+len-4);
-- b = lj_getu32(str+(len>>1)-2);
-- h ^= b; h -= lj_rol(b, 14);
-- b += lj_getu32(str+(len>>2)-1);
-- } else if (len > 0) {
-- a = *(const uint8_t *)str;
-- h ^= *(const uint8_t *)(str+len-1);
-- b = *(const uint8_t *)(str+(len>>1));
-- h ^= b; h -= lj_rol(b, 14);
-- } else {
-- return &g->strempty;
-- }
-- a ^= h; a -= lj_rol(h, 11);
-- b ^= a; b -= lj_rol(a, 25);
-- h ^= b; h -= lj_rol(b, 16);
-+ if (len >= 4) { /* Caveat: unaligned access! */
-+ a = lj_getu32(str);
-+ h ^= lj_getu32(str+len-4);
-+ b = lj_getu32(str+(len>>1)-2);
-+ h ^= b; h -= lj_rol(b, 14);
-+ b += lj_getu32(str+(len>>2)-1);
-+ } else if (len > 0) {
-+ a = *(const uint8_t *)str;
-+ h ^= *(const uint8_t *)(str+len-1);
-+ b = *(const uint8_t *)(str+(len>>1));
-+ h ^= b; h -= lj_rol(b, 14);
-+ } else {
+ if (len >= 4) { /* Caveat: unaligned access! */
+ a = lj_getu32(str);
+@@ -142,11 +165,15 @@
+ b = *(const uint8_t *)(str+(len>>1));
+ h ^= b; h -= lj_rol(b, 14);
+ } else {
+ /* Already done, kept for reference */
-+ return &g->strempty;
-+ }
-+ a ^= h; a -= lj_rol(h, 11);
-+ b ^= a; b -= lj_rol(a, 25);
-+ h ^= b; h -= lj_rol(b, 16);
+ return &g->strempty;
+ }
+ a ^= h; a -= lj_rol(h, 11);
+ b ^= a; b -= lj_rol(a, 25);
+ h ^= b; h -= lj_rol(b, 16);
+ }
+
+
/* Check if the string has already been interned. */
o = gcref(g->strhash[h & g->strmask]);
if (LJ_LIKELY((((uintptr_t)str+len-1) & (LJ_PAGESIZE-1)) <= LJ_PAGESIZE-4)) {
-Only in LuaJIT-2.1.0-beta1/src: lj_str.c.orig
-diff -ur LuaJIT-2.1.0-beta1.orig/src/lua.h LuaJIT-2.1.0-beta1/src/lua.h
---- LuaJIT-2.1.0-beta1.orig/src/lua.h 2015-09-04 08:42:39.000000000 +0200
-+++ LuaJIT-2.1.0-beta1/src/lua.h 2015-09-04 08:51:52.000000000 +0200
-@@ -103,6 +103,9 @@
- typedef LUA_INTEGER lua_Integer;
-
-
-+/* communication with LuaJiTTeX */
-+LUA_API int luajittex_choose_hash_function;
-+
-
- /*
- ** state manipulation
+
diff --git a/Build/source/libs/luajit/LuaJIT-PATCHES/patch-06-ppc-darwin b/Build/source/libs/luajit/LuaJIT-PATCHES/patch-06-ppc-darwin
index 17f7e4a1c08..cc4855ea8de 100644
--- a/Build/source/libs/luajit/LuaJIT-PATCHES/patch-06-ppc-darwin
+++ b/Build/source/libs/luajit/LuaJIT-PATCHES/patch-06-ppc-darwin
@@ -1,6 +1,6 @@
-diff -ur LuaJIT-2.1.0-beta1.orig/src/host/buildvm.c LuaJIT-2.1.0-beta1/src/host/buildvm.c
---- LuaJIT-2.1.0-beta1.orig/src/host/buildvm.c 2015-08-25 23:35:00.000000000 +0200
-+++ LuaJIT-2.1.0-beta1/src/host/buildvm.c 2015-09-04 09:03:00.000000000 +0200
+diff -bur LuaJIT-src-orig/src/host/buildvm.c LuaJIT-src/src/host/buildvm.c
+--- LuaJIT-src-orig/src/host/buildvm.c 2016-03-07 09:43:42.728069718 +0100
++++ LuaJIT-src/src/host/buildvm.c 2016-03-07 12:29:03.891904786 +0100
@@ -113,7 +113,7 @@
name[0] = '@';
else
@@ -10,10 +10,11 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/host/buildvm.c LuaJIT-2.1.0-beta1/src/host/
/* Keep @plt etc. */
#else
*p = '\0';
-diff -ur LuaJIT-2.1.0-beta1.orig/src/lj_arch.h LuaJIT-2.1.0-beta1/src/lj_arch.h
---- LuaJIT-2.1.0-beta1.orig/src/lj_arch.h 2015-08-25 23:35:00.000000000 +0200
-+++ LuaJIT-2.1.0-beta1/src/lj_arch.h 2015-09-04 08:58:07.000000000 +0200
-@@ -324,7 +324,7 @@
+
+diff -bur LuaJIT-src-orig/src/lj_arch.h LuaJIT-src/src/lj_arch.h
+--- LuaJIT-src-orig/src/lj_arch.h 2016-03-07 09:43:42.712069718 +0100
++++ LuaJIT-src/src/lj_arch.h 2016-03-07 12:31:33.351902301 +0100
+@@ -350,7 +350,7 @@
#if __GNUC__ < 4
#error "Need at least GCC 4.0 or newer"
#endif
diff --git a/Build/source/libs/luajit/LuaJIT-PATCHES/patch-07-x86_64-cygwin b/Build/source/libs/luajit/LuaJIT-PATCHES/patch-07-x86_64-cygwin
index b3bdead9dd6..4b278dd2c99 100644
--- a/Build/source/libs/luajit/LuaJIT-PATCHES/patch-07-x86_64-cygwin
+++ b/Build/source/libs/luajit/LuaJIT-PATCHES/patch-07-x86_64-cygwin
@@ -1,59 +1,12 @@
-diff -ur LuaJIT-2.1.0-beta1.orig/src/lj_alloc.c LuaJIT-2.1.0-beta1/src/lj_alloc.c
---- LuaJIT-2.1.0-beta1.orig/src/lj_alloc.c 2015-08-25 23:35:00.000000000 +0200
-+++ LuaJIT-2.1.0-beta1/src/lj_alloc.c 2015-09-27 19:05:37.000000000 +0200
-@@ -196,7 +196,7 @@
- return ptr;
- }
-
--#elif LJ_TARGET_OSX || LJ_TARGET_PS4 || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__sun__)
-+#elif LJ_TARGET_OSX || LJ_TARGET_PS4 || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__sun__) || defined(__CYGWIN__)
-
- /* OSX and FreeBSD mmap() use a naive first-fit linear search.
- ** That's perfect for us. Except that -pagezero_size must be set for OSX,
-diff -ur LuaJIT-2.1.0-beta1.orig/src/lj_arch.h LuaJIT-2.1.0-beta1/src/lj_arch.h
---- LuaJIT-2.1.0-beta1.orig/src/lj_arch.h 2015-09-04 08:58:07.000000000 +0200
-+++ LuaJIT-2.1.0-beta1/src/lj_arch.h 2015-09-27 19:05:37.000000000 +0200
-@@ -155,7 +155,11 @@
- #define LJ_ARCH_NAME "x64"
- #define LJ_ARCH_BITS 64
- #define LJ_ARCH_ENDIAN LUAJIT_LE
--#define LJ_ABI_WIN LJ_TARGET_WINDOWS
-+#if LJ_TARGET_WINDOWS || __CYGWIN__
-+#define LJ_ABI_WIN 1
-+#else
-+#define LJ_ABI_WIN 0
-+#endif
- #define LJ_TARGET_X64 1
- #define LJ_TARGET_X86ORX64 1
- #define LJ_TARGET_EHRETREG 0
-diff -ur LuaJIT-2.1.0-beta1.orig/src/lj_err.c LuaJIT-2.1.0-beta1/src/lj_err.c
---- LuaJIT-2.1.0-beta1.orig/src/lj_err.c 2015-08-25 23:35:00.000000000 +0200
-+++ LuaJIT-2.1.0-beta1/src/lj_err.c 2015-09-27 19:05:37.000000000 +0200
-@@ -183,7 +183,7 @@
-
- /* -- External frame unwinding -------------------------------------------- */
-
--#if defined(__GNUC__) && !LJ_NO_UNWIND && !LJ_TARGET_WINDOWS
-+#if defined(__GNUC__) && !LJ_NO_UNWIND && !LJ_ABI_WIN
-
- /*
- ** We have to use our own definitions instead of the mandatory (!) unwind.h,
-@@ -349,7 +349,7 @@
-
+diff -bur LuaJIT-src-orig/src/lj_arch.h LuaJIT-src/src/lj_arch.h
+--- LuaJIT-src-orig/src/lj_arch.h 2016-03-07 09:43:42.712069718 +0100
++++ LuaJIT-src/src/lj_arch.h 2016-03-07 12:31:33.351902301 +0100
+@@ -350,7 +350,7 @@
+ #if __GNUC__ < 4
+ #error "Need at least GCC 4.0 or newer"
+ #endif
+-#elif LJ_TARGET_ARM
++#elif LJ_TARGET_ARM || LJ_TARGET_PPC
+ #if (__GNUC__ < 4) || ((__GNUC__ == 4) && __GNUC_MINOR__ < 2)
+ #error "Need at least GCC 4.2 or newer"
#endif
-
--#elif LJ_TARGET_X64 && LJ_TARGET_WINDOWS
-+#elif LJ_TARGET_X64 && LJ_ABI_WIN
-
- /*
- ** Someone in Redmond owes me several days of my life. A lot of this is
-@@ -414,7 +414,9 @@
- if (cf2) { /* We catch it, so start unwinding the upper frames. */
- if (rec->ExceptionCode == LJ_MSVC_EXCODE ||
- rec->ExceptionCode == LJ_GCC_EXCODE) {
-+#if LJ_TARGET_WINDOWS
- __DestructExceptionObject(rec, 1);
-+#endif
- setstrV(L, L->top++, lj_err_str(L, LJ_ERR_ERRCPP));
- } else if (!LJ_EXCODE_CHECK(rec->ExceptionCode)) {
- /* Don't catch access violations etc. */