summaryrefslogtreecommitdiff
path: root/recipes-mozilla/firefox
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-mozilla/firefox')
-rw-r--r--recipes-mozilla/firefox/files/Prevent-SIGILL-crashes-on-ARMv6-builds-built-with-the-NDK_10.0esr.patch78
-rw-r--r--recipes-mozilla/firefox/firefox_10.0.11esr.bbappend3
2 files changed, 80 insertions, 1 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"
diff --git a/recipes-mozilla/firefox/firefox_10.0.11esr.bbappend b/recipes-mozilla/firefox/firefox_10.0.11esr.bbappend
index 5876184..f2121a4 100644
--- a/recipes-mozilla/firefox/firefox_10.0.11esr.bbappend
+++ b/recipes-mozilla/firefox/firefox_10.0.11esr.bbappend
@@ -1,10 +1,11 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += "file://alignment.patch \
file://distribution.ini \
+ file://Prevent-SIGILL-crashes-on-ARMv6-builds-built-with-the-NDK_10.0esr.patch \
"
do_install_append() {
install -d ${D}${libdir}/${PN}/distribution
- install -m 0644 ${WORKDIR}/distribution.ini ${D}${libdir}/${PN}/distribution/
+ install -m 0644 ${WORKDIR}/distribution.ini ${D}${libdir}/${PN}/distribution/
}