summaryrefslogtreecommitdiff
path: root/system/pcre/ppc64-elfv2-fix.patch
diff options
context:
space:
mode:
Diffstat (limited to 'system/pcre/ppc64-elfv2-fix.patch')
-rw-r--r--system/pcre/ppc64-elfv2-fix.patch25
1 files changed, 25 insertions, 0 deletions
diff --git a/system/pcre/ppc64-elfv2-fix.patch b/system/pcre/ppc64-elfv2-fix.patch
new file mode 100644
index 000000000..040f93ee9
--- /dev/null
+++ b/system/pcre/ppc64-elfv2-fix.patch
@@ -0,0 +1,25 @@
+diff -Naur pcre-8.42-original/sljit/sljitConfigInternal.h pcre-8.42/sljit/sljitConfigInternal.h
+--- pcre-8.42-original/sljit/sljitConfigInternal.h 2018-03-13 16:15:23.000000000 +0000
++++ pcre-8.42/sljit/sljitConfigInternal.h 2018-09-13 01:16:46.640000000 +0000
+@@ -530,7 +530,7 @@
+ #endif /* !SLJIT_FUNC */
+
+ #ifndef SLJIT_INDIRECT_CALL
+-#if ((defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64) && (defined SLJIT_BIG_ENDIAN && SLJIT_BIG_ENDIAN)) \
++#if ((defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64) && ((defined _CALL_ELF && _CALL_ELF == 1) || (!defined _CALL_ELF))) \
+ || ((defined SLJIT_CONFIG_PPC_32 && SLJIT_CONFIG_PPC_32) && defined _AIX)
+ /* It seems certain ppc compilers use an indirect addressing for functions
+ which makes things complicated. */
+diff -Naur pcre-8.42-original/sljit/sljitNativePPC_common.c pcre-8.42/sljit/sljitNativePPC_common.c
+--- pcre-8.42-original/sljit/sljitNativePPC_common.c 2018-01-08 10:25:56.000000000 +0000
++++ pcre-8.42/sljit/sljitNativePPC_common.c 2018-09-13 01:21:00.360000000 +0000
+@@ -42,7 +42,8 @@
+ #include <sys/cache.h>
+ #endif
+
+-#if (defined SLJIT_LITTLE_ENDIAN && SLJIT_LITTLE_ENDIAN)
++#if (defined SLJIT_LITTLE_ENDIAN && SLJIT_LITTLE_ENDIAN) \
++ || (defined _CALL_ELF && _CALL_ELF == 2)
+ #define SLJIT_PASS_ENTRY_ADDR_TO_CALL 1
+ #endif
+