diff options
Diffstat (limited to 'www/firefox/files/patch-bug1359142')
-rw-r--r-- | www/firefox/files/patch-bug1359142 | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/www/firefox/files/patch-bug1359142 b/www/firefox/files/patch-bug1359142 new file mode 100644 index 0000000..b7998c5 --- /dev/null +++ b/www/firefox/files/patch-bug1359142 @@ -0,0 +1,57 @@ +Define EPC_sig and RFP_sig for JS_CODEGEN_(ARM64|MIPS) on BSDs + +diff --git js/src/wasm/WasmSignalHandlers.cpp js/src/wasm/WasmSignalHandlers.cpp +index 1ab76eeb4bd9..bcdff0487837 100644 +--- js/src/wasm/WasmSignalHandlers.cpp ++++ js/src/wasm/WasmSignalHandlers.cpp +@@ -108,7 +108,19 @@ class AutoSetHandlingSegFault + # define R12_sig(p) ((p)->sc_r12) + # define R13_sig(p) ((p)->sc_r13) + # define R14_sig(p) ((p)->sc_r14) +-# define R15_sig(p) ((p)->sc_r15) ++# if defined(__arm__) ++# define R15_sig(p) ((p)->sc_pc) ++# else ++# define R15_sig(p) ((p)->sc_r15) ++# endif ++# if defined(__aarch64__) ++# define EPC_sig(p) ((p)->sc_elr) ++# define RFP_sig(p) ((p)->sc_x[29]) ++# endif ++# if defined(__mips__) ++# define EPC_sig(p) ((p)->sc_pc) ++# define RFP_sig(p) ((p)->sc_regs[30]) ++# endif + #elif defined(__linux__) || defined(SOLARIS) + # if defined(__linux__) + # define XMM_sig(p,i) ((p)->uc_mcontext.fpregs->_xmm[i]) +@@ -171,6 +183,14 @@ class AutoSetHandlingSegFault + # define R13_sig(p) ((p)->uc_mcontext.__gregs[_REG_R13]) + # define R14_sig(p) ((p)->uc_mcontext.__gregs[_REG_R14]) + # define R15_sig(p) ((p)->uc_mcontext.__gregs[_REG_R15]) ++# if defined(__aarch64__) ++# define EPC_sig(p) ((p)->uc_mcontext.__gregs[_REG_PC]) ++# define RFP_sig(p) ((p)->uc_mcontext.__gregs[_REG_X29]) ++# endif ++# if defined(__mips__) ++# define EPC_sig(p) ((p)->uc_mcontext.__gregs[_REG_EPC]) ++# define RFP_sig(p) ((p)->uc_mcontext.__gregs[_REG_S8]) ++# endif + #elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) + # if defined(__DragonFly__) + # define XMM_sig(p,i) (((union savefpu*)(p)->uc_mcontext.mc_fpregs)->sv_xmm.sv_xmm[i]) +@@ -200,6 +220,14 @@ class AutoSetHandlingSegFault + # else + # define R15_sig(p) ((p)->uc_mcontext.mc_r15) + # endif ++# if defined(__FreeBSD__) && defined(__aarch64__) ++# define EPC_sig(p) ((p)->uc_mcontext.mc_gpregs.gp_elr) ++# define RFP_sig(p) ((p)->uc_mcontext.mc_gpregs.gp_x[29]) ++# endif ++# if defined(__FreeBSD__) && defined(__mips__) ++# define EPC_sig(p) ((p)->uc_mcontext.mc_pc) ++# define RFP_sig(p) ((p)->uc_mcontext.mc_regs[30]) ++# endif + #elif defined(XP_DARWIN) + # define EIP_sig(p) ((p)->uc_mcontext->__ss.__eip) + # define EBP_sig(p) ((p)->uc_mcontext->__ss.__ebp) |