summaryrefslogtreecommitdiff
path: root/recipes-mozilla/firefox/files/Prevent-SIGILL-crashes-on-ARMv6-builds-built-with-the-NDK_10.0esr.patch
diff options
context:
space:
mode:
authorMax Krummenacher <max.krummenacher@toradex.com>2014-06-26 14:36:24 +0200
committerMax Krummenacher <max.krummenacher@toradex.com>2014-08-04 11:12:26 +0200
commit35290610586f44963e93d8bcd15316229da507b2 (patch)
tree33a496d85bc57b79f2a339a31568641d50e4916a /recipes-mozilla/firefox/files/Prevent-SIGILL-crashes-on-ARMv6-builds-built-with-the-NDK_10.0esr.patch
parente921a6d67b50a55983f9e439e93410cdaddcc112 (diff)
firefox: fix SIGILL abort on start
This seems to only happen in our setup. (with gcc provided from meta-linaro, 4.8.3) With a meta-fsl-arm setup + meta-browser firefox starts correctly. (with gcc from oe, meta-oe, 4.8.2)
Diffstat (limited to 'recipes-mozilla/firefox/files/Prevent-SIGILL-crashes-on-ARMv6-builds-built-with-the-NDK_10.0esr.patch')
-rw-r--r--recipes-mozilla/firefox/files/Prevent-SIGILL-crashes-on-ARMv6-builds-built-with-the-NDK_10.0esr.patch78
1 files changed, 78 insertions, 0 deletions
diff --git a/recipes-mozilla/firefox/files/Prevent-SIGILL-crashes-on-ARMv6-builds-built-with-the-NDK_10.0esr.patch b/recipes-mozilla/firefox/files/Prevent-SIGILL-crashes-on-ARMv6-builds-built-with-the-NDK_10.0esr.patch
new file mode 100644
index 0000000..f8bbfa0
--- /dev/null
+++ b/recipes-mozilla/firefox/files/Prevent-SIGILL-crashes-on-ARMv6-builds-built-with-the-NDK_10.0esr.patch
@@ -0,0 +1,78 @@
+# HG changeset patch
+# User Kartikaya Gupta <kgupta@mozilla.com>
+# Date 1356843815 18000
+# Node ID f9be5a3d9b3ce26ad94e31a4c0275fee19db7ca8
+# Parent 414b431ad3fa831ecf5bf69abd3b5cb8670781db
+Bug 803601 - Prevent SIGILL crashes on ARMv6 builds built with the NDK r8c toolchain (gcc-4.6, gold). r=mjrosenb
+
+diff --git a/js/src/methodjit/MethodJIT.cpp b/js/src/methodjit/MethodJIT.cpp
+--- a/js/src/methodjit/MethodJIT.cpp
++++ b/js/src/methodjit/MethodJIT.cpp
+@@ -671,8 +671,10 @@
+ ".align 2\n" \
+ ".thumb\n" \
+ ".thumb_func\n"
++#define BRANCH_AND_LINK(x) "blx " x
+ #else
+ #define FUNCTION_HEADER_EXTRA
++#define BRANCH_AND_LINK(x) "bl " x
+ #endif
+
+ asm (
+@@ -731,9 +733,9 @@
+ " mov r10, r1" "\n"
+
+ " mov r0, sp" "\n"
+-" blx " SYMBOL_STRING_VMFRAME(SetVMFrameRegs) "\n"
++" " BRANCH_AND_LINK(SYMBOL_STRING_VMFRAME(SetVMFrameRegs)) "\n "
+ " mov r0, sp" "\n"
+-" blx " SYMBOL_STRING_VMFRAME(PushActiveVMFrame)"\n"
++" " BRANCH_AND_LINK(SYMBOL_STRING_VMFRAME(PushActiveVMFrame)) "\n"
+
+ /* Call the compiled JavaScript function. */
+ " bx r4" "\n"
+@@ -748,7 +750,7 @@
+
+ /* Tidy up. */
+ " mov r0, sp" "\n"
+-" blx " SYMBOL_STRING_VMFRAME(PopActiveVMFrame) "\n"
++" " BRANCH_AND_LINK(SYMBOL_STRING_VMFRAME(PopActiveVMFrame)) "\n"
+
+ /* Skip past the parameters we pushed (such as cx and the like). */
+ " add sp, sp, #(4*7 + 4*6)" "\n"
+@@ -767,7 +769,7 @@
+ " mov r0, sp" "\n"
+
+ /* Call the utility function that sets up the internal throw routine. */
+-" blx " SYMBOL_STRING_RELOC(js_InternalThrow) "\n"
++" " BRANCH_AND_LINK(SYMBOL_STRING_RELOC(js_InternalThrow)) "\n"
+
+ /* If js_InternalThrow found a scripted handler, jump to it. Otherwise, tidy
+ * up and return. */
+@@ -777,7 +779,7 @@
+
+ /* Tidy up, then return '0' to represent an unhandled exception. */
+ " mov r0, sp" "\n"
+-" blx " SYMBOL_STRING_VMFRAME(PopActiveVMFrame) "\n"
++" " BRANCH_AND_LINK(SYMBOL_STRING_VMFRAME(PopActiveVMFrame)) "\n"
+ " add sp, sp, #(4*7 + 4*6)" "\n"
+ " mov r0, #0" "\n"
+ " pop {r4-r11,pc}" "\n"
+@@ -801,7 +803,7 @@
+ " mov r2, r0" "\n" /* returnReg */
+ " mov r1, r5" "\n" /* returnType */
+ " mov r0, r4" "\n" /* returnData */
+-" blx " SYMBOL_STRING_RELOC(js_InternalInterpret) "\n"
++" " BRANCH_AND_LINK(SYMBOL_STRING_RELOC(js_InternalInterpret)) "\n"
+ " cmp r0, #0" "\n"
+ " ldr r10, [sp, #(4*7)]" "\n" /* Load (StackFrame*)f->regs->fp_ */
+ " ldrd r4, r5, [r10, #(4*6)]" "\n" /* Load rval payload and type. */
+@@ -810,7 +812,7 @@
+ " bxne r0" "\n"
+ /* Tidy up, then return 0. */
+ " mov r0, sp" "\n"
+-" blx " SYMBOL_STRING_VMFRAME(PopActiveVMFrame) "\n"
++" " BRANCH_AND_LINK(SYMBOL_STRING_VMFRAME(PopActiveVMFrame)) "\n"
+ " add sp, sp, #(4*7 + 4*6)" "\n"
+ " mov r0, #0" "\n"
+ " pop {r4-r11,pc}" "\n"