From 912a257dea52caf9601ae7d363618bda3ff4ef41 Mon Sep 17 00:00:00 2001 From: Tomas Popela Date: Aug 25 2014 07:07:35 +0000 Subject: Add support for secondary arches --- diff --git a/webkitgtk-2.4.2-ppc64le.patch b/webkitgtk-2.4.2-ppc64le.patch new file mode 100644 index 0000000..3618d98 --- /dev/null +++ b/webkitgtk-2.4.2-ppc64le.patch @@ -0,0 +1,69 @@ +diff -up webkitgtk-2.4.2/Source/WTF/wtf/dtoa/utils.h.ppc64le webkitgtk-2.4.2/Source/WTF/wtf/dtoa/utils.h +--- webkitgtk-2.4.2/Source/WTF/wtf/dtoa/utils.h.ppc64le 2014-05-14 15:37:26.360159487 +0200 ++++ webkitgtk-2.4.2/Source/WTF/wtf/dtoa/utils.h 2014-05-14 15:38:46.938315499 +0200 +@@ -49,7 +49,7 @@ + defined(__ARMEL__) || \ + defined(_MIPS_ARCH_MIPS32R2) + #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 +-#elif CPU(MIPS) || CPU(PPC) || CPU(PPC64) || OS(WINCE) || CPU(SH4) || CPU(S390) || CPU(S390X) || CPU(IA64) || CPU(ALPHA) || CPU(ARM64) || CPU(HPPA) ++#elif CPU(MIPS) || CPU(PPC) || CPU(PPC64) || CPU(PPC64LE) || OS(WINCE) || CPU(SH4) || CPU(S390) || CPU(S390X) || CPU(IA64) || CPU(ALPHA) || CPU(ARM64) || CPU(HPPA) + #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 + #elif defined(_M_IX86) || defined(__i386__) + #if defined(_WIN32) +diff -up webkitgtk-2.4.2/Source/WTF/wtf/Platform.h.ppc64le webkitgtk-2.4.2/Source/WTF/wtf/Platform.h +--- webkitgtk-2.4.2/Source/WTF/wtf/Platform.h.ppc64le 2014-05-12 08:03:53.000000000 +0200 ++++ webkitgtk-2.4.2/Source/WTF/wtf/Platform.h 2014-05-14 15:39:08.402622454 +0200 +@@ -101,24 +101,38 @@ + #endif /* MIPS */ + + /* CPU(PPC) - PowerPC 32-bit */ +-#if defined(__ppc__) \ ++#if ( defined(__ppc__) \ + || defined(__PPC__) \ + || defined(__powerpc__) \ + || defined(__powerpc) \ + || defined(__POWERPC__) \ + || defined(_M_PPC) \ +- || defined(__PPC) ++ || defined(__PPC)) \ ++ && defined(__BYTE_ORDER__) \ ++ && (__BYTE_ORDER__==__ORDER_BIG_ENDIAN__) + #define WTF_CPU_PPC 1 + #define WTF_CPU_BIG_ENDIAN 1 + #endif + +-/* CPU(PPC64) - PowerPC 64-bit */ +-#if defined(__ppc64__) \ +- || defined(__PPC64__) ++/* CPU(PPC64) - PowerPC 64-bit Big Endian */ ++#if ( defined(__ppc64__) \ ++ || defined(__PPC64__)) \ ++ && defined(__BYTE_ORDER__) \ ++ && (__BYTE_ORDER__==__ORDER_BIG_ENDIAN__) + #define WTF_CPU_PPC64 1 + #define WTF_CPU_BIG_ENDIAN 1 + #endif + ++/* CPU(PPC64) - PowerPC 64-bit Little Endian */ ++#if ( defined(__ppc64__) \ ++ || defined(__PPC64__) \ ++ || defined(__ppc64le__) \ ++ || defined(__PPC64LE__)) \ ++ && defined(__BYTE_ORDER__) \ ++ && (__BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__) ++#define WTF_CPU_PPC64LE 1 ++#endif ++ + /* CPU(SH4) - SuperH SH-4 */ + #if defined(__SH4__) + #define WTF_CPU_SH4 1 +@@ -641,7 +655,8 @@ + || CPU(ALPHA) \ + || CPU(ARM64) \ + || CPU(S390X) \ +- || CPU(PPC64) ++ || CPU(PPC64) \ ++ || CPU(PPC64LE) + #define WTF_USE_JSVALUE64 1 + #else + #define WTF_USE_JSVALUE32_64 1 diff --git a/webkitgtk-2.5.2-cloop_fix.patch b/webkitgtk-2.5.2-cloop_fix.patch new file mode 100644 index 0000000..cac0270 --- /dev/null +++ b/webkitgtk-2.5.2-cloop_fix.patch @@ -0,0 +1,142 @@ +diff -up webkitgtk-2.5.2/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm.cloop_fix webkitgtk-2.5.2/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm +--- webkitgtk-2.5.2/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm.cloop_fix 2014-08-14 09:21:48.792442811 -0600 ++++ webkitgtk-2.5.2/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm 2014-08-14 09:21:48.792442811 -0600 +@@ -225,7 +225,7 @@ macro doCallToJavaScript(makeCall) + storep 0, ArgumentCount[cfr] + storep vm, Callee[cfr] + loadp VM::topCallFrame[vm], temp2 +- storep temp2, ScopeChain[cfr] ++ storep temp2, ScopeChain + PayloadOffset[cfr] + storep 1, CodeBlock[cfr] + if X86 + loadp 28[sp], previousPC +@@ -324,7 +324,7 @@ macro doCallToJavaScript(makeCall) + + .calleeFramePopped: + loadp Callee[cfr], temp3 # VM +- loadp ScopeChain[cfr], temp4 # previous topCallFrame ++ loadp ScopeChain + PayloadOffset[cfr], temp4 # previous topCallFrame + storep temp4, VM::topCallFrame[temp3] + + callToJavaScriptEpilogue() +@@ -383,10 +383,10 @@ _handleUncaughtException: + # Check if we need to pop to the sentinel frame and do the necessary clean up for + # returning to the caller C frame. + bpeq CodeBlock[cfr], 1, .handleUncaughtExceptionAlreadyIsSentinel +- loadp CallerFrame + PayloadOffset[cfr], cfr ++ loadp CallerFrame[cfr], cfr + .handleUncaughtExceptionAlreadyIsSentinel: + +- loadp Callee + PayloadOffset[cfr], t3 # VM ++ loadp Callee[cfr], t3 # VM + loadp ScopeChain + PayloadOffset[cfr], t5 # previous topCallFrame + storep t5, VM::topCallFrame[t3] + +@@ -664,7 +664,7 @@ macro functionArityCheck(doneLabel, slow + end + + macro branchIfException(label) +- loadp ScopeChain[cfr], t3 ++ loadp ScopeChain + PayloadOffset[cfr], t3 + andp MarkedBlockMask, t3 + loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3 + bieq VM::m_exception + TagOffset[t3], EmptyValueTag, .noException +@@ -2110,7 +2110,7 @@ macro nativeCallTrampoline(executableOff + loadp JSFunction::m_executable[t1], t1 + checkStackPointerAlignment(t3, 0xdead0001) + call executableOffsetToFunction[t1] +- loadp ScopeChain[cfr], t3 ++ loadp ScopeChain + PayloadOffset[cfr], t3 + andp MarkedBlockMask, t3 + loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3 + addp 8, sp +@@ -2133,7 +2133,7 @@ macro nativeCallTrampoline(executableOff + else + call executableOffsetToFunction[t1] + end +- loadp ScopeChain[cfr], t3 ++ loadp ScopeChain + PayloadOffset[cfr], t3 + andp MarkedBlockMask, t3 + loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3 + addp 8, sp +@@ -2176,7 +2176,7 @@ macro resolveScope() + addi 1, t2 + + .resolveScopeAfterActivationCheck: +- loadp ScopeChain[cfr], t0 ++ loadp ScopeChain + PayloadOffset[cfr], t0 + btiz t2, .resolveScopeLoopEnd + + .resolveScopeLoop: +@@ -2235,7 +2235,7 @@ _llint_op_resolve_scope: + + macro loadWithStructureCheck(operand, slowPath) + loadisFromInstruction(operand, t0) +- loadp [cfr, t0, 8], t0 ++ loadp PayloadOffset[cfr, t0, 8], t0 + loadpFromInstruction(5, t1) + bpneq JSCell::m_structureID[t0], t1, slowPath + end +diff -up webkitgtk-2.5.2/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm.cloop_fix webkitgtk-2.5.2/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm +--- webkitgtk-2.5.2/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm.cloop_fix 2014-08-14 23:57:06.193271648 -0600 ++++ webkitgtk-2.5.2/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm 2014-08-15 00:00:45.613943623 -0600 +@@ -2114,7 +2114,7 @@ macro loadWithStructureCheck(operand, sl + end + + macro getProperty() +- loadisFromInstruction(6, t1) ++ loadpFromInstruction(6, t1) + loadPropertyAtVariableOffset(t1, t0, t2) + valueProfile(t2, 7, t0) + loadisFromInstruction(1, t0) +@@ -2131,7 +2131,7 @@ end + + macro getClosureVar() + loadp JSVariableObject::m_registers[t0], t0 +- loadisFromInstruction(6, t1) ++ loadpFromInstruction(6, t1) + loadq [t0, t1, 8], t0 + valueProfile(t0, 7, t1) + loadisFromInstruction(1, t1) +@@ -2188,7 +2188,7 @@ _llint_op_get_from_scope: + macro putProperty() + loadisFromInstruction(3, t1) + loadConstantOrVariable(t1, t2) +- loadisFromInstruction(6, t1) ++ loadpFromInstruction(6, t1) + storePropertyAtVariableOffset(t1, t0, t2) + end + +@@ -2205,7 +2205,7 @@ macro putClosureVar() + loadisFromInstruction(3, t1) + loadConstantOrVariable(t1, t2) + loadp JSVariableObject::m_registers[t0], t0 +- loadisFromInstruction(6, t1) ++ loadpFromInstruction(6, t1) + storeq t2, [t0, t1, 8] + end + +diff -up webkitgtk-2.5.2/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp.cloop_fix webkitgtk-2.5.2/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp +--- webkitgtk-2.5.2/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp.cloop_fix 2014-08-06 23:57:04.000000000 -0600 ++++ webkitgtk-2.5.2/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp 2014-08-14 05:33:05.980418193 -0600 +@@ -1396,7 +1396,7 @@ static JSValue getFromScopeCommon(ExecSt + { + ConcurrentJITLocker locker(codeBlock->m_lock); + pc[5].u.structure.set(exec->vm(), codeBlock->ownerExecutable(), structure); +- pc[6].u.operand = slot.cachedOffset(); ++ pc[6].u.pointer = reinterpret_cast(slot.cachedOffset()); + } + structure->startWatchingPropertyForReplacements(vm, slot.cachedOffset()); + } +diff -up webkitgtk-2.5.2/Source/JavaScriptCore/runtime/CommonSlowPaths.h.cloop_fix webkitgtk-2.5.2/Source/JavaScriptCore/runtime/CommonSlowPaths.h +--- webkitgtk-2.5.2/Source/JavaScriptCore/runtime/CommonSlowPaths.h.cloop_fix 2014-08-14 09:28:19.073638043 -0600 ++++ webkitgtk-2.5.2/Source/JavaScriptCore/runtime/CommonSlowPaths.h 2014-08-14 09:27:17.033448046 -0600 +@@ -115,7 +115,7 @@ inline void tryCachePutToScopeGlobal( + + ConcurrentJITLocker locker(codeBlock->m_lock); + pc[5].u.structure.set(exec->vm(), codeBlock->ownerExecutable(), scope->structure()); +- pc[6].u.operand = slot.cachedOffset(); ++ pc[6].u.pointer = reinterpret_cast(slot.cachedOffset()); + } + + } // namespace CommonSlowPaths diff --git a/webkitgtk-2.5.2-cloop_fix_32.patch b/webkitgtk-2.5.2-cloop_fix_32.patch new file mode 100644 index 0000000..889245f --- /dev/null +++ b/webkitgtk-2.5.2-cloop_fix_32.patch @@ -0,0 +1,19 @@ +diff -up webkitgtk-2.1.90.1/Source/JavaScriptCore/llint/LowLevelInterpreter.asm.double2intsPPC32 webkitgtk-2.1.90.1/Source/JavaScriptCore/llint/LowLevelInterpreter.asm +--- webkitgtk-2.1.90.1/Source/JavaScriptCore/llint/LowLevelInterpreter.asm.double2intsPPC32 2013-08-28 21:06:29.000000000 +0200 ++++ webkitgtk-2.1.90.1/Source/JavaScriptCore/llint/LowLevelInterpreter.asm 2013-09-12 15:32:34.000000000 +0200 +@@ -276,13 +276,13 @@ macro assertNotConstant(index) + end + + macro functionForCallCodeBlockGetter(targetRegister) +- loadp Callee[cfr], targetRegister ++ loadp Callee + PayloadOffset[cfr], targetRegister + loadp JSFunction::m_executable[targetRegister], targetRegister + loadp FunctionExecutable::m_codeBlockForCall[targetRegister], targetRegister + end + + macro functionForConstructCodeBlockGetter(targetRegister) +- loadp Callee[cfr], targetRegister ++ loadp Callee + PayloadOffset[cfr], targetRegister + loadp JSFunction::m_executable[targetRegister], targetRegister + loadp FunctionExecutable::m_codeBlockForConstruct[targetRegister], targetRegister + end diff --git a/webkitgtk-2.5.2-commit_align.patch b/webkitgtk-2.5.2-commit_align.patch new file mode 100644 index 0000000..fa75294 --- /dev/null +++ b/webkitgtk-2.5.2-commit_align.patch @@ -0,0 +1,35 @@ +diff -up webkitgtk-2.5.2/Source/JavaScriptCore/heap/CopiedBlock.h.ppc64_align webkitgtk-2.5.2/Source/JavaScriptCore/heap/CopiedBlock.h +--- webkitgtk-2.5.2/Source/JavaScriptCore/heap/CopiedBlock.h.ppc64_align 2014-07-08 06:17:14.000000000 -0600 ++++ webkitgtk-2.5.2/Source/JavaScriptCore/heap/CopiedBlock.h 2014-08-12 05:38:47.752283561 -0600 +@@ -81,7 +81,7 @@ public: + size_t size(); + size_t capacity(); + +- static const size_t blockSize = 32 * KB; ++ static const size_t blockSize = 64 * KB; + + bool hasWorkList(); + CopyWorkList& workList(); +diff -up webkitgtk-2.5.2/Source/JavaScriptCore/interpreter/JSStack.cpp.ppc64_align webkitgtk-2.5.2/Source/JavaScriptCore/interpreter/JSStack.cpp +--- webkitgtk-2.5.2/Source/JavaScriptCore/interpreter/JSStack.cpp.ppc64_align 2014-08-12 06:27:12.101177790 -0600 ++++ webkitgtk-2.5.2/Source/JavaScriptCore/interpreter/JSStack.cpp 2014-08-12 06:32:01.252063281 -0600 +@@ -58,7 +58,8 @@ JSStack::JSStack(VM& vm) + size_t capacity = Options::maxPerThreadStackUsage(); + ASSERT(capacity && isPageAligned(capacity)); + +- m_reservation = PageReservation::reserve(WTF::roundUpToMultipleOf(commitSize, capacity), OSAllocator::JSVMStackPages); ++ size_t commitsize = pageSize(); ++ m_reservation = PageReservation::reserve(WTF::roundUpToMultipleOf(commitsize, capacity), OSAllocator::JSVMStackPages); + setStackLimit(highAddress()); + m_commitTop = highAddress(); + +@@ -92,7 +93,8 @@ bool JSStack::growSlowCase(Register* new + // have it is still within our budget. If not, we'll fail to grow and + // return false. + ptrdiff_t delta = reinterpret_cast(m_commitTop) - reinterpret_cast(newTopOfStackWithReservedZone); +- delta = WTF::roundUpToMultipleOf(commitSize, delta); ++ size_t commitsize = pageSize(); ++ delta = WTF::roundUpToMultipleOf(commitsize, delta); + Register* newCommitTop = m_commitTop - (delta / sizeof(Register)); + if (newCommitTop < reservationTop()) + return false; diff --git a/webkitgtk-aarch64.patch b/webkitgtk-aarch64.patch new file mode 100644 index 0000000..fe54daa --- /dev/null +++ b/webkitgtk-aarch64.patch @@ -0,0 +1,38 @@ +--- webkitgtk-2.3.5/Source/WTF/wtf/Platform.h.orig 2014-02-04 16:38:03.000000000 +0000 ++++ webkitgtk-2.3.5/Source/WTF/wtf/Platform.h 2014-02-07 10:50:32.639441614 +0000 +@@ -317,6 +317,14 @@ + #define WTF_CPU_NEEDS_ALIGNED_ACCESS 1 + #endif + ++/* CPU(AARCH64) - AArch64 */ ++#if defined(__aarch64__) ++#define WTF_CPU_AARCH64 1 ++#if defined(__AARCH64BE__) ++#define WTF_CPU_BIG_ENDIAN 1 ++#endif ++#endif ++ + /* ==== OS() - underlying operating system; only to be used for mandated low-level services like + virtual memory, not to choose a GUI toolkit ==== */ + +@@ -641,7 +649,8 @@ + || CPU(ALPHA) \ + || CPU(ARM64) \ + || CPU(S390X) \ +- || CPU(PPC64) ++ || CPU(PPC64) \ ++ || CPU(AARCH64) + #define WTF_USE_JSVALUE64 1 + #else + #define WTF_USE_JSVALUE32_64 1 +--- webkitgtk-2.3.5/Source/WTF/wtf/dtoa/utils.h.orig 2014-02-07 10:50:15.238174894 +0000 ++++ webkitgtk-2.3.5/Source/WTF/wtf/dtoa/utils.h 2014-02-07 10:50:32.640441629 +0000 +@@ -49,7 +49,7 @@ + defined(__ARMEL__) || \ + defined(_MIPS_ARCH_MIPS32R2) + #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 +-#elif CPU(MIPS) || CPU(PPC) || CPU(PPC64) || OS(WINCE) || CPU(SH4) || CPU(S390) || CPU(S390X) || CPU(IA64) || CPU(ALPHA) || CPU(ARM64) || CPU(HPPA) ++#elif CPU(MIPS) || CPU(PPC) || CPU(PPC64) || OS(WINCE) || CPU(SH4) || CPU(S390) || CPU(S390X) || CPU(IA64) || CPU(ALPHA) || CPU(AARCH64) || CPU(HPPA) + #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 + #elif defined(_M_IX86) || defined(__i386__) + #if defined(_WIN32) diff --git a/webkitgtk4.spec b/webkitgtk4.spec index b2cad2c..352a06b 100644 --- a/webkitgtk4.spec +++ b/webkitgtk4.spec @@ -7,15 +7,22 @@ Name: webkitgtk4 Version: 2.5.3 -Release: 4%{?dist} +Release: 5%{?dist} Summary: GTK+ Web content engine library License: LGPLv2 URL: http://www.webkitgtk.org/ Source0: http://webkitgtk.org/releases/webkitgtk-%{version}.tar.xz +Patch0: webkit-1.1.14-nspluginwrapper.patch +Patch1: webkitgtk-aarch64.patch +Patch2: webkitgtk-2.5.2-cloop_fix.patch +Patch3: webkitgtk-2.5.2-cloop_fix_32.patch +Patch4: webkitgtk-2.5.2-commit_align.patch +# https://bugs.webkit.org/show_bug.cgi?id=135647 +Patch5: webkitgtk-2.4.2-ppc64le.patch # https://bugs.webkit.org/show_bug.cgi?id=136130 -Patch0: webkitgtk-2.5.3-toggle-buttons.patch +Patch6: webkitgtk-2.5.3-toggle-buttons.patch BuildRequires: at-spi2-core-devel BuildRequires: bison @@ -48,6 +55,9 @@ BuildRequires: pcre-devel BuildRequires: perl-Switch BuildRequires: ruby BuildRequires: sqlite-devel +%ifarch ppc +BuildRequires: libatomic +%endif Requires: geoclue2 # Filter out provides for private libraries @@ -69,7 +79,21 @@ files for developing applications that use %{name}. %prep %setup -q -n webkitgtk-%{version} -%patch0 -p1 -b .toggle-buttons +%patch0 -p1 -b .nspluginwrapper +%patch2 -p1 -b .cloop_fix +%ifarch s390 ppc +%patch3 -p1 -b .cloop_fix_32 +%endif +%ifarch aarch64 +%patch1 -p1 -b .aarch64 +%endif +%ifarch %{power64} aarch64 ppc +%patch4 -p1 -b .commit_align +%endif +%ifarch %{power64} +%patch5 -p1 -b .ppc64le +%endif +%patch6 -p1 -b .toggle-buttons # Remove bundled libraries rm -rf Source/ThirdParty/leveldb/ @@ -85,11 +109,24 @@ rm -rf Source/ThirdParty/qunit/ %global optflags %(echo %{optflags} | sed 's/-g /-g1 /') %endif +%ifarch ppc +# Use linker flag -relax to get WebKit build under ppc(32) with JIT disabled +%global optflags %{optflags} -Wl,-relax -latomic +%endif + +%ifarch s390 s390x ppc %{power64} aarch64 +%global optflags %{optflags} -DENABLE_YARR_JIT=0 +%endif + mkdir -p %{_target_platform} pushd %{_target_platform} %cmake \ -DPORT=GTK \ -DCMAKE_BUILD_TYPE=Release \ +%ifarch s390 s390x ppc %{power64} aarch64 + -DENABLE_JIT=OFF \ + -DENABLE_LLINT_C_LOOP=ON \ +%endif .. popd @@ -143,6 +180,9 @@ make %{?_smp_mflags} -C %{_target_platform} %{_datadir}/gir-1.0/WebKit2WebExtension-4.0.gir %changelog +* Mon Aug 25 2014 Tomas Popela - 2.5.3-5 +- Add support for secondary arches + * Fri Aug 22 2014 Michael Catanzaro - 2.5.3-4 - Add webkitgtk-2.5.3-toggle-buttons.patch