Mar 9, 2014, 4:48:58 AM3/9/14
The Webkit is buggy on MIPS, especially on N32 ABI, is a one
well-known fact for the Loongson community. That's means we can't use
program and browser which is used Webkit as their engine.
unaligned memory, etc. Caused the bus errors and segmentation faults.
Some days ago, Gentoo unmasked the latest webkit-gtk-2.2.5-r200:2, I
emerged it on my Gentoo MIPS N32 and see if any fixes. I patched it
(patch attached) to disabled the JIT engine. But I got segmentation
fault when launch Midori. I found the problem caused by fastMalloc().
I saw some years' old posts on the Internet, they said even using
USE_SYSTEM_MALLOC, it still crashing. I didn't try it yet, because
recompile Webkit need too much time.
So, I want to confirm that:
1. I saw some Debian users using Webkit. Does Webkit work well on MIPS
O32. Or we have to apply patches. Did Debian developers apply some
patches? And how stable it is?
2. Does anyone can try compile webkit-gtk-2.2.5-r200 with JIT disabled
and #define USE_SYSTEM_MALLOC 1 and see if it works?
3. Is there any exist work for Webkit on MIPS N32, and what progress
has been made?
I troubled by this problem for a long time, it means I can't access
any website with AJAX on the YeeLoong 8089D laptop. Firefox also
broken because of a Virtualenv's issue (better to discuss it in
--- webkit-1.4.1.orig/Source/WTF/wtf/Platform.h 2011-06-30
+++ webkit-1.4.1/Source/WTF/wtf/Platform.h 2011-06-30
@@ -95,8 +95,9 @@
/* CPU(MIPS) - MIPS 32-bit */
/* Note: Only O32 ABI is tested, so we enable it for O32 ABI for now. */
+/* N32 is also tested, without JIT */
#if (defined(mips) || defined(__mips__) || defined(MIPS) || defined(_MIPS_)) \
- && defined(_ABIO32)
+ && (defined(_ABIO32) || defined(_ABIN32))
#define WTF_CPU_MIPS 1
#define WTF_CPU_BIG_ENDIAN 1
@@ -726,7 +727,7 @@
/* The JIT is enabled by default on all x86, x86-64, ARM & MIPS platforms. */
#if !defined(ENABLE_JIT) \
- && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(MIPS)) \
+ && (CPU(X86) || CPU(X86_64) || CPU(ARM) || (CPU(MIPS) &&
&& (OS(DARWIN) || !COMPILER(GCC) || GCC_VERSION_AT_LEAST(4, 1, 0)) \
&& !OS(WINCE) \
&& !(OS(QNX) && !PLATFORM(QT)) /* We use JIT in QNX Qt */