Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v1] package/webkitgtk: bump to 2.52.3
@ 2026-04-21 10:28 Thomas Devoogdt
  2026-04-21 11:35 ` Adrian Perez de Castro
  0 siblings, 1 reply; 4+ messages in thread
From: Thomas Devoogdt @ 2026-04-21 10:28 UTC (permalink / raw)
  To: buildroot; +Cc: Adrian Perez de Castro, Thomas Devoogdt

From: Thomas Devoogdt <thomas.devoogdt@barco.com>

This is a major release to 2.52.x, see highlights:

https://webkitgtk.org/2026/03/18/webkitgtk-2.52-highlights.html

Other news:

https://webkitgtk.org/news.html

Changes:

- Use USE_GSTREAMER rather than ENABLE_{VIDEO,WEB_{AUDIO,CODECS}}.
  Move USE_GSTREAMER_GL while at it.
  See https://github.com/WebKit/WebKit/commit/92179a19a0f189ff7ddcf0e1d2792804b65653d3.

- Add 0001-JSC-Fix-ENABLE-JIT-build.patch to fix some undefined symbols.

Signed-off-by: Thomas Devoogdt <thomas.devoogdt@barco.com>
---
 .../0001-JSC-Fix-ENABLE-JIT-build.patch       | 331 ++++++++++++++++++
 package/webkitgtk/webkitgtk.hash              |   6 +-
 package/webkitgtk/webkitgtk.mk                |  24 +-
 3 files changed, 343 insertions(+), 18 deletions(-)
 create mode 100644 package/webkitgtk/0001-JSC-Fix-ENABLE-JIT-build.patch

diff --git a/package/webkitgtk/0001-JSC-Fix-ENABLE-JIT-build.patch b/package/webkitgtk/0001-JSC-Fix-ENABLE-JIT-build.patch
new file mode 100644
index 00000000000..c8779688e4d
--- /dev/null
+++ b/package/webkitgtk/0001-JSC-Fix-ENABLE-JIT-build.patch
@@ -0,0 +1,331 @@
+From ad28ad528d433cff1fec831d922e569bf446773e Mon Sep 17 00:00:00 2001
+From: Shu-yu Guo <syg@apple.com>
+Date: Fri, 17 Apr 2026 15:57:23 -0700
+Subject: [PATCH] [JSC] Fix !ENABLE(JIT) build
+ https://bugs.webkit.org/show_bug.cgi?id=306638 rdar://169822205
+
+Reviewed by Yusuke Suzuki.
+
+* Source/JavaScriptCore/jit/ExecutableAllocator.h:
+(JSC::performJITMemcpy):
+* Source/JavaScriptCore/llint/InPlaceInterpreter.asm:
+* Source/JavaScriptCore/llint/LLIntData.cpp:
+(JSC::LLInt::initialize):
+* Source/JavaScriptCore/wasm/WasmCallee.cpp:
+* Source/WTF/wtf/PlatformEnable.h:
+
+Canonical link: https://commits.webkit.org/311492@main
+
+(cherry picked from commit e7ae451260d742f70f63bd07ed1484331d534b3f)
+Upstream: https://github.com/WebKit/WebKit/pull/58096
+Signed-off-by: Thomas Devoogdt <thomas.devoogdt@barco.com>
+---
+ .../JavaScriptCore/jit/ExecutableAllocator.h  |  8 ++
+ .../llint/InPlaceInterpreter.asm              |  8 +-
+ Source/JavaScriptCore/llint/LLIntData.cpp     | 81 +++++++++++++++----
+ Source/JavaScriptCore/wasm/WasmCallee.cpp     | 18 ++++-
+ Source/WTF/wtf/PlatformEnable.h               |  2 +-
+ 5 files changed, 93 insertions(+), 24 deletions(-)
+
+diff --git a/Source/JavaScriptCore/jit/ExecutableAllocator.h b/Source/JavaScriptCore/jit/ExecutableAllocator.h
+index 3e8efce28cfe..cb81579c8703 100644
+--- a/Source/JavaScriptCore/jit/ExecutableAllocator.h
++++ b/Source/JavaScriptCore/jit/ExecutableAllocator.h
+@@ -390,6 +390,14 @@ WTF_ALLOW_UNSAFE_BUFFER_USAGE_BEGIN
+ WTF_ALLOW_UNSAFE_BUFFER_USAGE_END
+ }
+ 
++template<RepatchingInfo>
++inline void* performJITMemcpy(void *dst, const void *src, size_t n)
++{
++WTF_ALLOW_UNSAFE_BUFFER_USAGE_BEGIN
++    return memcpy(dst, src, n);
++WTF_ALLOW_UNSAFE_BUFFER_USAGE_END
++}
++
+ inline bool isJITPC(void*) { return false; }
+ #endif // ENABLE(JIT)
+ 
+diff --git a/Source/JavaScriptCore/llint/InPlaceInterpreter.asm b/Source/JavaScriptCore/llint/InPlaceInterpreter.asm
+index 64db9cdb21df..dac1faa5260a 100644
+--- a/Source/JavaScriptCore/llint/InPlaceInterpreter.asm
++++ b/Source/JavaScriptCore/llint/InPlaceInterpreter.asm
+@@ -420,7 +420,7 @@ end
+ 
+ # OSR
+ macro ipintPrologueOSR(increment)
+-if JIT
++if WEBASSEMBLY_BBQJIT
+     loadp UnboxedWasmCalleeStackSlot[cfr], ws0
+     baddis increment, Wasm::IPIntCallee::m_tierUpCounter + Wasm::IPIntTierUpCounter::m_counter[ws0], .continue
+ 
+@@ -457,11 +457,11 @@ end
+     if ARMv7
+         break # FIXME: ipint support.
+     end # ARMv7
+-end # JIT
++end # WEBASSEMBLY_BBQJIT
+ end
+ 
+ macro ipintLoopOSR(increment)
+-if JIT and not ARMv7
++if WEBASSEMBLY_BBQJIT and not ARMv7
+     validateOpcodeConfig(ws0)
+     loadp UnboxedWasmCalleeStackSlot[cfr], ws0
+     baddis increment, Wasm::IPIntCallee::m_tierUpCounter + Wasm::IPIntTierUpCounter::m_counter[ws0], .continue
+@@ -492,7 +492,7 @@ end
+ end
+ 
+ macro ipintEpilogueOSR(increment)
+-if JIT and not ARMv7
++if WEBASSEMBLY_BBQJIT and not ARMv7
+     loadp UnboxedWasmCalleeStackSlot[cfr], ws0
+     baddis increment, Wasm::IPIntCallee::m_tierUpCounter + Wasm::IPIntTierUpCounter::m_counter[ws0], .continue
+ 
+diff --git a/Source/JavaScriptCore/llint/LLIntData.cpp b/Source/JavaScriptCore/llint/LLIntData.cpp
+index 5d7c88f72571..2509dc4132f3 100644
+--- a/Source/JavaScriptCore/llint/LLIntData.cpp
++++ b/Source/JavaScriptCore/llint/LLIntData.cpp
+@@ -199,8 +199,28 @@ void initialize()
+ #if CPU(ARM64E)
+ 
+ #if ENABLE(JIT_CAGE)
+-    if (Options::useJITCage())
++    if (Options::useJITCage()) {
+         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::jitCagePtr)] = jitCagePtrThunk().code().taggedPtr();
++#if ENABLE(WEBASSEMBLY)
++        // JSPI JITCage gates
++        g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::jspiResignReturnPCs)] = jspiResignReturnPCsThunk().code().taggedPtr();
++        g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::jspiExecuteSliceEntry)] = jspiExecuteSliceEntryThunk().code().taggedPtr();
++        // jspiExitImplantedSlice is stored untagged because it's used as a return address
++        // (not as a jump target) and will be signed by JITCage with the stack pointer diversifier.
++        g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::jspiExitImplantedSlice)] = jspiExitImplantedSliceThunk().code().untaggedPtr();
++#endif // ENABLE(WEBASSEMBLY)
++    }
++#endif
++
++#if ENABLE(JIT)
++#define INITIALIZE_JS_GATE_JIT_PATH(name, tag) \
++    if (Options::useJIT()) { \
++        codeRef8.construct(createJSGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getCodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name)); \
++        codeRef16.construct(createJSGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getWide16CodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name "_wide16")); \
++        codeRef32.construct(createJSGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getWide32CodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name "_wide32")); \
++    } else
++#else
++#define INITIALIZE_JS_GATE_JIT_PATH(name, tag)
+ #endif
+ 
+ #define INITIALIZE_JS_GATE(name, tag) \
+@@ -208,11 +228,7 @@ void initialize()
+         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef8; \
+         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef16; \
+         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef32; \
+-        if (Options::useJIT()) { \
+-            codeRef8.construct(createJSGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getCodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name)); \
+-            codeRef16.construct(createJSGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getWide16CodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name "_wide16")); \
+-            codeRef32.construct(createJSGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getWide32CodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name "_wide32")); \
+-        } else { \
++        INITIALIZE_JS_GATE_JIT_PATH(name, tag) { \
+             codeRef8.construct(LLInt::getCodeRef<NativeToJITGatePtrTag>(js_trampoline_##name)); \
+             codeRef16.construct(LLInt::getWide16CodeRef<NativeToJITGatePtrTag>(js_trampoline_##name)); \
+             codeRef32.construct(LLInt::getWide32CodeRef<NativeToJITGatePtrTag>(js_trampoline_##name)); \
+@@ -226,16 +242,23 @@ void initialize()
+ 
+ #if ENABLE(WEBASSEMBLY)
+ 
++#if ENABLE(JIT)
++#define INITIALIZE_WASM_GATE_JIT_PATH(name, tag) \
++    if (Options::useJIT()) { \
++        codeRef8.construct(createWasmGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getCodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name)); \
++        codeRef16.construct(createWasmGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getWide16CodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name "_wide16")); \
++        codeRef32.construct(createWasmGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getWide32CodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name "_wide32")); \
++    } else
++#else
++#define INITIALIZE_WASM_GATE_JIT_PATH(name, tag)
++#endif
++
+ #define INITIALIZE_WASM_GATE(name, tag) \
+     do { \
+         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef8; \
+         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef16; \
+         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef32; \
+-        if (Options::useJIT()) { \
+-            codeRef8.construct(createWasmGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getCodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name)); \
+-            codeRef16.construct(createWasmGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getWide16CodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name "_wide16")); \
+-            codeRef32.construct(createWasmGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getWide32CodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name "_wide32")); \
+-        } else { \
++        INITIALIZE_WASM_GATE_JIT_PATH(name, tag) { \
+             codeRef8.construct(LLInt::getCodeRef<NativeToJITGatePtrTag>(wasm_trampoline_##name)); \
+             codeRef16.construct(LLInt::getWide16CodeRef<NativeToJITGatePtrTag>(wasm_trampoline_##name)); \
+             codeRef32.construct(LLInt::getWide32CodeRef<NativeToJITGatePtrTag>(wasm_trampoline_##name)); \
+@@ -253,10 +276,12 @@ void initialize()
+     // This is key to entering the interpreter.
+     {
+         static LazyNeverDestroyed<MacroAssemblerCodeRef<VMEntryToJITGatePtrTag>> codeRef;
++#if ENABLE(JIT)
+         if (Options::useJIT()) {
+             auto gateCodeRef = createJSGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(&vmEntryToJavaScriptGateAfter), JSEntryPtrTag, "vmEntryToJavaScript");
+             codeRef.construct(gateCodeRef.retagged<VMEntryToJITGatePtrTag>());
+         } else
++#endif
+             codeRef.construct(MacroAssemblerCodeRef<VMEntryToJITGatePtrTag>::createSelfManagedCodeRef(CodePtr<VMEntryToJITGatePtrTag>::fromTaggedPtr(retagCodePtr<void*, CFunctionPtrTag, VMEntryToJITGatePtrTag>(&vmEntryToJavaScriptTrampoline))));
+         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::vmEntryToJavaScript)] = codeRef.get().code().taggedPtr();
+     }
+@@ -268,79 +293,103 @@ void initialize()
+ 
+     {
+         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef;
++#if ENABLE(JIT)
+         if (Options::useJIT())
+             codeRef.construct(createTailCallGate(JSEntryPtrTag, true));
+         else
++#endif
+             codeRef.construct(MacroAssemblerCodeRef<NativeToJITGatePtrTag>::createSelfManagedCodeRef(CodePtr<NativeToJITGatePtrTag>::fromTaggedPtr(retagCodePtr<void*, CFunctionPtrTag, NativeToJITGatePtrTag>(&tailCallJSEntryTrampoline))));
+         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::tailCallJSEntryPtrTag)]= codeRef.get().code().taggedPtr();
+     }
+     {
+         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef;
++#if ENABLE(JIT)
+         if (Options::useJIT())
+             codeRef.construct(createTailCallGate(JSEntryPtrTag, true));
+         else
++#endif
+             codeRef.construct(MacroAssemblerCodeRef<NativeToJITGatePtrTag>::createSelfManagedCodeRef(CodePtr<NativeToJITGatePtrTag>::fromTaggedPtr(retagCodePtr<void*, CFunctionPtrTag, NativeToJITGatePtrTag>(&tailCallJSEntrySlowPathTrampoline))));
+         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::tailCallJSEntrySlowPathPtrTag)] = codeRef.get().code().taggedPtr();
+     }
+     {
+         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef;
++#if ENABLE(JIT)
+         if (Options::useJIT())
+             codeRef.construct(createTailCallGate(JSEntryPtrTag, false));
+         else
++#endif
+             codeRef.construct(MacroAssemblerCodeRef<NativeToJITGatePtrTag>::createSelfManagedCodeRef(CodePtr<NativeToJITGatePtrTag>::fromTaggedPtr(retagCodePtr<void*, CFunctionPtrTag, NativeToJITGatePtrTag>(&tailCallWithoutUntagJSEntryTrampoline))));
+         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::tailCallWithoutUntagJSEntryPtrTag)]= codeRef.get().code().taggedPtr();
+     }
+     {
+         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef;
++#if ENABLE(JIT)
+         if (Options::useJIT())
+             codeRef.construct(createWasmTailCallGate(WasmEntryPtrTag));
+         else
++#endif
+             codeRef.construct(MacroAssemblerCodeRef<NativeToJITGatePtrTag>::createSelfManagedCodeRef(CodePtr<NativeToJITGatePtrTag>::fromTaggedPtr(retagCodePtr<void*, CFunctionPtrTag, NativeToJITGatePtrTag>(&wasmTailCallTrampoline))));
+         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::wasmTailCallWasmEntryPtrTag)]= codeRef.get().code().taggedPtr();
+     }
+     {
+         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef;
++#if ENABLE(JIT)
+         if (Options::useJIT())
+             codeRef.construct(createWasmTailCallGate(WasmEntryPtrTag));
+         else
++#endif
+             codeRef.construct(MacroAssemblerCodeRef<NativeToJITGatePtrTag>::createSelfManagedCodeRef(CodePtr<NativeToJITGatePtrTag>::fromTaggedPtr(retagCodePtr<void*, CFunctionPtrTag, NativeToJITGatePtrTag>(&wasmTailCallTrampoline))));
+         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::wasmIPIntTailCallWasmEntryPtrTag)]= codeRef.get().code().taggedPtr();
+     }
+     {
+         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef;
++#if ENABLE(JIT)
+         if (Options::useJIT())
+             codeRef.construct(exceptionHandlerGateThunk());
+         else
++#endif
+             codeRef.construct(MacroAssemblerCodeRef<NativeToJITGatePtrTag>::createSelfManagedCodeRef(CodePtr<NativeToJITGatePtrTag>::fromTaggedPtr(retagCodePtr<void*, CFunctionPtrTag, NativeToJITGatePtrTag>(&exceptionHandlerTrampoline))));
+         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::exceptionHandler)] = codeRef.get().code().taggedPtr();
+     }
+     {
+         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef;
++#if ENABLE(JIT)
+         if (Options::useJIT())
+             codeRef.construct(returnFromLLIntGateThunk());
+         else
++#endif
+             codeRef.construct(MacroAssemblerCodeRef<NativeToJITGatePtrTag>::createSelfManagedCodeRef(CodePtr<NativeToJITGatePtrTag>::fromTaggedPtr(retagCodePtr<void*, CFunctionPtrTag, NativeToJITGatePtrTag>(&returnFromLLIntTrampoline))));
+         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::returnFromLLInt)] = codeRef.get().code().taggedPtr();
+     }
+ 
++#if ENABLE(JIT)
+     if (Options::useJIT()) {
+         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::loopOSREntry)] = loopOSREntryGateThunk().code().taggedPtr();
+         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::entryOSREntry)] = entryOSREntryGateThunk().code().taggedPtr();
+         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::wasmOSREntry)] = wasmOSREntryGateThunk().code().taggedPtr();
+-    } else {
++    } else
++#endif
++    {
+         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::loopOSREntry)] = LLInt::getCodeRef<NativeToJITGatePtrTag>(loop_osr_entry_gate).code().taggedPtr();
+         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::entryOSREntry)] = nullptr;
+         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::wasmOSREntry)] = nullptr;
+     }
+ 
++#if ENABLE(JIT)
++#define INITIALIZE_TAG_AND_UNTAG_THUNKS_JIT_PATH(name) \
++    if (Options::useJIT()) { \
++        tagCodeRef.construct(tagGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(name##TagGateAfter))); \
++        untagCodeRef.construct(untagGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(name##UntagGateAfter))); \
++    } else
++#else
++#define INITIALIZE_TAG_AND_UNTAG_THUNKS_JIT_PATH(name)
++#endif
++
+ #define INITIALIZE_TAG_AND_UNTAG_THUNKS(name) \
+     do { \
+         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> tagCodeRef; \
+         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> untagCodeRef; \
+-        if (Options::useJIT()) { \
+-            tagCodeRef.construct(tagGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(name##TagGateAfter))); \
+-            untagCodeRef.construct(untagGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(name##UntagGateAfter))); \
+-        } else { \
++        INITIALIZE_TAG_AND_UNTAG_THUNKS_JIT_PATH(name) { \
+             tagCodeRef.construct(LLInt::getCodeRef<NativeToJITGatePtrTag>(js_trampoline_##name##_tag)); \
+             untagCodeRef.construct(LLInt::getCodeRef<NativeToJITGatePtrTag>(js_trampoline_##name##_untag)); \
+         } \
+diff --git a/Source/JavaScriptCore/wasm/WasmCallee.cpp b/Source/JavaScriptCore/wasm/WasmCallee.cpp
+index 94a845ab47e4..b689f00143ab 100644
+--- a/Source/JavaScriptCore/wasm/WasmCallee.cpp
++++ b/Source/JavaScriptCore/wasm/WasmCallee.cpp
+@@ -55,13 +55,25 @@ WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(Callee);
+ WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(JITCallee);
+ WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(JSToWasmCallee);
+ WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(WasmToJSCallee);
++WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(IPIntCallee);
++WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(WasmBuiltinCallee);
++
++#if ENABLE(JIT)
+ WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(JSToWasmICCallee);
++#endif
++
++#if ENABLE(WEBASSEMBLY_BBQJIT) || ENABLE(WEBASSEMBLY_OMGJIT)
+ WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(OptimizingJITCallee);
++#endif
++
++#if ENABLE(WEBASSEMBLY_BBQJIT)
++WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(BBQCallee);
++#endif
++
++#if ENABLE(WEBASSEMBLY_OMGJIT)
+ WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(OMGCallee);
+ WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(OMGOSREntryCallee);
+-WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(BBQCallee);
+-WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(IPIntCallee);
+-WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(WasmBuiltinCallee);
++#endif
+ 
+ Callee::Callee(Wasm::CompilationMode compilationMode)
+     : NativeCallee(NativeCallee::Category::Wasm, ImplementationVisibility::Private)
+diff --git a/Source/WTF/wtf/PlatformEnable.h b/Source/WTF/wtf/PlatformEnable.h
+index 9c20eb45de48..1561e5ecc85a 100644
+--- a/Source/WTF/wtf/PlatformEnable.h
++++ b/Source/WTF/wtf/PlatformEnable.h
+@@ -1006,7 +1006,7 @@
+ #define ENABLE_JIT_OPERATION_DISASSEMBLY 1
+ #endif
+ 
+-#if CPU(ARM64E)
++#if CPU(ARM64E) && ENABLE(JIT)
+ #define ENABLE_JIT_SIGN_ASSEMBLER_BUFFER 1
+ #endif
+ 
+-- 
+2.43.0
+
diff --git a/package/webkitgtk/webkitgtk.hash b/package/webkitgtk/webkitgtk.hash
index 77bdc5485bc..03b8d0a9bec 100644
--- a/package/webkitgtk/webkitgtk.hash
+++ b/package/webkitgtk/webkitgtk.hash
@@ -1,6 +1,6 @@
-# From https://webkitgtk.org/releases/webkitgtk-2.50.5.tar.xz.sums
-sha1  e93f7efa9fbc7304cc159c35d8e76d7febab2515  webkitgtk-2.50.5.tar.xz
-sha256  8737631bac3e9c7ad3e5208f9370e076c09d9c45b39980021ce54edadcc6f94f  webkitgtk-2.50.5.tar.xz
+# From https://webkitgtk.org/releases/webkitgtk-2.52.3.tar.xz.sums
+sha1  17f9b127618040a5f3fcbb70e37ea16ab6d69b0b  webkitgtk-2.52.3.tar.xz
+sha256  5b3e0d174e63dcc28848b1194e0e7448d5948c3c2427ecd931c2c5be5261aebb  webkitgtk-2.52.3.tar.xz
 
 # Hashes for license files:
 sha256  0b5d3a7cc325942567373b0ecd757d07c132e0ebd7c97bfc63f7e1a76094edb4  Source/WebCore/LICENSE-APPLE
diff --git a/package/webkitgtk/webkitgtk.mk b/package/webkitgtk/webkitgtk.mk
index 26c70ae6c8c..d5b7639ee61 100644
--- a/package/webkitgtk/webkitgtk.mk
+++ b/package/webkitgtk/webkitgtk.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-WEBKITGTK_VERSION = 2.50.5
+WEBKITGTK_VERSION = 2.52.3
 WEBKITGTK_SITE = https://www.webkitgtk.org/releases
 WEBKITGTK_SOURCE = webkitgtk-$(WEBKITGTK_VERSION).tar.xz
 WEBKITGTK_INSTALL_STAGING = YES
@@ -56,16 +56,16 @@ WEBKITGTK_CONF_OPTS += -DENABLE_BUBBLEWRAP_SANDBOX=OFF
 endif
 
 ifeq ($(BR2_PACKAGE_WEBKITGTK_MULTIMEDIA),y)
-WEBKITGTK_CONF_OPTS += \
-	-DENABLE_VIDEO=ON \
-	-DENABLE_WEB_AUDIO=ON \
-	-DENABLE_WEB_CODECS=ON
+WEBKITGTK_CONF_OPTS += -DUSE_GSTREAMER=ON
 WEBKITGTK_DEPENDENCIES += gstreamer1 gst1-libav gst1-plugins-bad gst1-plugins-base
 else
-WEBKITGTK_CONF_OPTS += \
-	-DENABLE_VIDEO=OFF \
-	-DENABLE_WEB_AUDIO=OFF \
-	-DENABLE_WEB_CODECS=OFF
+WEBKITGTK_CONF_OPTS += -DUSE_GSTREAMER=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_WEBKITGTK_USE_GSTREAMER_GL),y)
+WEBKITGTK_CONF_OPTS += -DUSE_GSTREAMER_GL=ON
+else
+WEBKITGTK_CONF_OPTS += -DUSE_GSTREAMER_GL=OFF
 endif
 
 ifeq ($(BR2_PACKAGE_WEBKITGTK_WEBDRIVER),y)
@@ -160,12 +160,6 @@ else
 WEBKITGTK_CONF_OPTS += -DENABLE_WAYLAND_TARGET=OFF
 endif
 
-ifeq ($(BR2_PACKAGE_WEBKITGTK_USE_GSTREAMER_GL),y)
-WEBKITGTK_CONF_OPTS += -DUSE_GSTREAMER_GL=ON
-else
-WEBKITGTK_CONF_OPTS += -DUSE_GSTREAMER_GL=OFF
-endif
-
 ifeq ($(BR2_INIT_SYSTEMD),y)
 WEBKITGTK_CONF_OPTS += -DENABLE_JOURNALD_LOG=ON
 WEBKITGTK_DEPENDENCIES += systemd
-- 
2.43.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [Buildroot] [PATCH v1] package/webkitgtk: bump to 2.52.3
  2026-04-21 10:28 [Buildroot] [PATCH v1] package/webkitgtk: bump to 2.52.3 Thomas Devoogdt
@ 2026-04-21 11:35 ` Adrian Perez de Castro
  0 siblings, 0 replies; 4+ messages in thread
From: Adrian Perez de Castro @ 2026-04-21 11:35 UTC (permalink / raw)
  To: Thomas Devoogdt; +Cc: buildroot, Thomas Devoogdt


[-- Attachment #1.1: Type: text/plain, Size: 22911 bytes --]

Hello Thomas, all,

On Tue, 21 Apr 2026 12:28:43 +0200 Thomas Devoogdt <thomas@devoogdt.com> wrote:
 
> This is a major release to 2.52.x, see highlights:
> 
> https://webkitgtk.org/2026/03/18/webkitgtk-2.52-highlights.html
> 
> Other news:
> 
> https://webkitgtk.org/news.html

I have submitted a similar update just earlier today:

  https://patchwork.ozlabs.org/project/buildroot/patch/20260420214451.2704785-1-aperez@igalia.com/
 
> Changes:
> 
> - Use USE_GSTREAMER rather than ENABLE_{VIDEO,WEB_{AUDIO,CODECS}}.
>   Move USE_GSTREAMER_GL while at it.
>   See https://github.com/WebKit/WebKit/commit/92179a19a0f189ff7ddcf0e1d2792804b65653d3.
> 
> - Add 0001-JSC-Fix-ENABLE-JIT-build.patch to fix some undefined symbols.

But I did not include this patch, which actually makes sense. We will be
backporting it to the release stable branch, to have it included in 2.52.4
down the road.

> Signed-off-by: Thomas Devoogdt <thomas.devoogdt@barco.com>
> ---
>  .../0001-JSC-Fix-ENABLE-JIT-build.patch       | 331 ++++++++++++++++++
>  package/webkitgtk/webkitgtk.hash              |   6 +-
>  package/webkitgtk/webkitgtk.mk                |  24 +-
>  3 files changed, 343 insertions(+), 18 deletions(-)
>  create mode 100644 package/webkitgtk/0001-JSC-Fix-ENABLE-JIT-build.patch
> 
> diff --git a/package/webkitgtk/0001-JSC-Fix-ENABLE-JIT-build.patch b/package/webkitgtk/0001-JSC-Fix-ENABLE-JIT-build.patch
> new file mode 100644
> index 00000000000..c8779688e4d
> --- /dev/null
> +++ b/package/webkitgtk/0001-JSC-Fix-ENABLE-JIT-build.patch
> @@ -0,0 +1,331 @@
> +From ad28ad528d433cff1fec831d922e569bf446773e Mon Sep 17 00:00:00 2001
> +From: Shu-yu Guo <syg@apple.com>
> +Date: Fri, 17 Apr 2026 15:57:23 -0700
> +Subject: [PATCH] [JSC] Fix !ENABLE(JIT) build
> + https://bugs.webkit.org/show_bug.cgi?id=306638 rdar://169822205
> +
> +Reviewed by Yusuke Suzuki.
> +
> +* Source/JavaScriptCore/jit/ExecutableAllocator.h:
> +(JSC::performJITMemcpy):
> +* Source/JavaScriptCore/llint/InPlaceInterpreter.asm:
> +* Source/JavaScriptCore/llint/LLIntData.cpp:
> +(JSC::LLInt::initialize):
> +* Source/JavaScriptCore/wasm/WasmCallee.cpp:
> +* Source/WTF/wtf/PlatformEnable.h:
> +
> +Canonical link: https://commits.webkit.org/311492@main
> +
> +(cherry picked from commit e7ae451260d742f70f63bd07ed1484331d534b3f)
> +Upstream: https://github.com/WebKit/WebKit/pull/58096
> +Signed-off-by: Thomas Devoogdt <thomas.devoogdt@barco.com>
> +---
> + .../JavaScriptCore/jit/ExecutableAllocator.h  |  8 ++
> + .../llint/InPlaceInterpreter.asm              |  8 +-
> + Source/JavaScriptCore/llint/LLIntData.cpp     | 81 +++++++++++++++----
> + Source/JavaScriptCore/wasm/WasmCallee.cpp     | 18 ++++-
> + Source/WTF/wtf/PlatformEnable.h               |  2 +-
> + 5 files changed, 93 insertions(+), 24 deletions(-)
> +
> +diff --git a/Source/JavaScriptCore/jit/ExecutableAllocator.h b/Source/JavaScriptCore/jit/ExecutableAllocator.h
> +index 3e8efce28cfe..cb81579c8703 100644
> +--- a/Source/JavaScriptCore/jit/ExecutableAllocator.h
> ++++ b/Source/JavaScriptCore/jit/ExecutableAllocator.h
> +@@ -390,6 +390,14 @@ WTF_ALLOW_UNSAFE_BUFFER_USAGE_BEGIN
> + WTF_ALLOW_UNSAFE_BUFFER_USAGE_END
> + }
> + 
> ++template<RepatchingInfo>
> ++inline void* performJITMemcpy(void *dst, const void *src, size_t n)
> ++{
> ++WTF_ALLOW_UNSAFE_BUFFER_USAGE_BEGIN
> ++    return memcpy(dst, src, n);
> ++WTF_ALLOW_UNSAFE_BUFFER_USAGE_END
> ++}
> ++
> + inline bool isJITPC(void*) { return false; }
> + #endif // ENABLE(JIT)
> + 
> +diff --git a/Source/JavaScriptCore/llint/InPlaceInterpreter.asm b/Source/JavaScriptCore/llint/InPlaceInterpreter.asm
> +index 64db9cdb21df..dac1faa5260a 100644
> +--- a/Source/JavaScriptCore/llint/InPlaceInterpreter.asm
> ++++ b/Source/JavaScriptCore/llint/InPlaceInterpreter.asm
> +@@ -420,7 +420,7 @@ end
> + 
> + # OSR
> + macro ipintPrologueOSR(increment)
> +-if JIT
> ++if WEBASSEMBLY_BBQJIT
> +     loadp UnboxedWasmCalleeStackSlot[cfr], ws0
> +     baddis increment, Wasm::IPIntCallee::m_tierUpCounter + Wasm::IPIntTierUpCounter::m_counter[ws0], .continue
> + 
> +@@ -457,11 +457,11 @@ end
> +     if ARMv7
> +         break # FIXME: ipint support.
> +     end # ARMv7
> +-end # JIT
> ++end # WEBASSEMBLY_BBQJIT
> + end
> + 
> + macro ipintLoopOSR(increment)
> +-if JIT and not ARMv7
> ++if WEBASSEMBLY_BBQJIT and not ARMv7
> +     validateOpcodeConfig(ws0)
> +     loadp UnboxedWasmCalleeStackSlot[cfr], ws0
> +     baddis increment, Wasm::IPIntCallee::m_tierUpCounter + Wasm::IPIntTierUpCounter::m_counter[ws0], .continue
> +@@ -492,7 +492,7 @@ end
> + end
> + 
> + macro ipintEpilogueOSR(increment)
> +-if JIT and not ARMv7
> ++if WEBASSEMBLY_BBQJIT and not ARMv7
> +     loadp UnboxedWasmCalleeStackSlot[cfr], ws0
> +     baddis increment, Wasm::IPIntCallee::m_tierUpCounter + Wasm::IPIntTierUpCounter::m_counter[ws0], .continue
> + 
> +diff --git a/Source/JavaScriptCore/llint/LLIntData.cpp b/Source/JavaScriptCore/llint/LLIntData.cpp
> +index 5d7c88f72571..2509dc4132f3 100644
> +--- a/Source/JavaScriptCore/llint/LLIntData.cpp
> ++++ b/Source/JavaScriptCore/llint/LLIntData.cpp
> +@@ -199,8 +199,28 @@ void initialize()
> + #if CPU(ARM64E)
> + 
> + #if ENABLE(JIT_CAGE)
> +-    if (Options::useJITCage())
> ++    if (Options::useJITCage()) {
> +         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::jitCagePtr)] = jitCagePtrThunk().code().taggedPtr();
> ++#if ENABLE(WEBASSEMBLY)
> ++        // JSPI JITCage gates
> ++        g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::jspiResignReturnPCs)] = jspiResignReturnPCsThunk().code().taggedPtr();
> ++        g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::jspiExecuteSliceEntry)] = jspiExecuteSliceEntryThunk().code().taggedPtr();
> ++        // jspiExitImplantedSlice is stored untagged because it's used as a return address
> ++        // (not as a jump target) and will be signed by JITCage with the stack pointer diversifier.
> ++        g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::jspiExitImplantedSlice)] = jspiExitImplantedSliceThunk().code().untaggedPtr();
> ++#endif // ENABLE(WEBASSEMBLY)
> ++    }
> ++#endif
> ++
> ++#if ENABLE(JIT)
> ++#define INITIALIZE_JS_GATE_JIT_PATH(name, tag) \
> ++    if (Options::useJIT()) { \
> ++        codeRef8.construct(createJSGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getCodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name)); \
> ++        codeRef16.construct(createJSGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getWide16CodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name "_wide16")); \
> ++        codeRef32.construct(createJSGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getWide32CodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name "_wide32")); \
> ++    } else
> ++#else
> ++#define INITIALIZE_JS_GATE_JIT_PATH(name, tag)
> + #endif
> + 
> + #define INITIALIZE_JS_GATE(name, tag) \
> +@@ -208,11 +228,7 @@ void initialize()
> +         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef8; \
> +         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef16; \
> +         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef32; \
> +-        if (Options::useJIT()) { \
> +-            codeRef8.construct(createJSGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getCodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name)); \
> +-            codeRef16.construct(createJSGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getWide16CodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name "_wide16")); \
> +-            codeRef32.construct(createJSGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getWide32CodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name "_wide32")); \
> +-        } else { \
> ++        INITIALIZE_JS_GATE_JIT_PATH(name, tag) { \
> +             codeRef8.construct(LLInt::getCodeRef<NativeToJITGatePtrTag>(js_trampoline_##name)); \
> +             codeRef16.construct(LLInt::getWide16CodeRef<NativeToJITGatePtrTag>(js_trampoline_##name)); \
> +             codeRef32.construct(LLInt::getWide32CodeRef<NativeToJITGatePtrTag>(js_trampoline_##name)); \
> +@@ -226,16 +242,23 @@ void initialize()
> + 
> + #if ENABLE(WEBASSEMBLY)
> + 
> ++#if ENABLE(JIT)
> ++#define INITIALIZE_WASM_GATE_JIT_PATH(name, tag) \
> ++    if (Options::useJIT()) { \
> ++        codeRef8.construct(createWasmGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getCodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name)); \
> ++        codeRef16.construct(createWasmGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getWide16CodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name "_wide16")); \
> ++        codeRef32.construct(createWasmGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getWide32CodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name "_wide32")); \
> ++    } else
> ++#else
> ++#define INITIALIZE_WASM_GATE_JIT_PATH(name, tag)
> ++#endif
> ++
> + #define INITIALIZE_WASM_GATE(name, tag) \
> +     do { \
> +         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef8; \
> +         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef16; \
> +         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef32; \
> +-        if (Options::useJIT()) { \
> +-            codeRef8.construct(createWasmGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getCodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name)); \
> +-            codeRef16.construct(createWasmGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getWide16CodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name "_wide16")); \
> +-            codeRef32.construct(createWasmGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(LLInt::getWide32CodeFunctionPtr<CFunctionPtrTag>(name##_return_location)), tag, #name "_wide32")); \
> +-        } else { \
> ++        INITIALIZE_WASM_GATE_JIT_PATH(name, tag) { \
> +             codeRef8.construct(LLInt::getCodeRef<NativeToJITGatePtrTag>(wasm_trampoline_##name)); \
> +             codeRef16.construct(LLInt::getWide16CodeRef<NativeToJITGatePtrTag>(wasm_trampoline_##name)); \
> +             codeRef32.construct(LLInt::getWide32CodeRef<NativeToJITGatePtrTag>(wasm_trampoline_##name)); \
> +@@ -253,10 +276,12 @@ void initialize()
> +     // This is key to entering the interpreter.
> +     {
> +         static LazyNeverDestroyed<MacroAssemblerCodeRef<VMEntryToJITGatePtrTag>> codeRef;
> ++#if ENABLE(JIT)
> +         if (Options::useJIT()) {
> +             auto gateCodeRef = createJSGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(&vmEntryToJavaScriptGateAfter), JSEntryPtrTag, "vmEntryToJavaScript");
> +             codeRef.construct(gateCodeRef.retagged<VMEntryToJITGatePtrTag>());
> +         } else
> ++#endif
> +             codeRef.construct(MacroAssemblerCodeRef<VMEntryToJITGatePtrTag>::createSelfManagedCodeRef(CodePtr<VMEntryToJITGatePtrTag>::fromTaggedPtr(retagCodePtr<void*, CFunctionPtrTag, VMEntryToJITGatePtrTag>(&vmEntryToJavaScriptTrampoline))));
> +         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::vmEntryToJavaScript)] = codeRef.get().code().taggedPtr();
> +     }
> +@@ -268,79 +293,103 @@ void initialize()
> + 
> +     {
> +         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef;
> ++#if ENABLE(JIT)
> +         if (Options::useJIT())
> +             codeRef.construct(createTailCallGate(JSEntryPtrTag, true));
> +         else
> ++#endif
> +             codeRef.construct(MacroAssemblerCodeRef<NativeToJITGatePtrTag>::createSelfManagedCodeRef(CodePtr<NativeToJITGatePtrTag>::fromTaggedPtr(retagCodePtr<void*, CFunctionPtrTag, NativeToJITGatePtrTag>(&tailCallJSEntryTrampoline))));
> +         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::tailCallJSEntryPtrTag)]= codeRef.get().code().taggedPtr();
> +     }
> +     {
> +         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef;
> ++#if ENABLE(JIT)
> +         if (Options::useJIT())
> +             codeRef.construct(createTailCallGate(JSEntryPtrTag, true));
> +         else
> ++#endif
> +             codeRef.construct(MacroAssemblerCodeRef<NativeToJITGatePtrTag>::createSelfManagedCodeRef(CodePtr<NativeToJITGatePtrTag>::fromTaggedPtr(retagCodePtr<void*, CFunctionPtrTag, NativeToJITGatePtrTag>(&tailCallJSEntrySlowPathTrampoline))));
> +         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::tailCallJSEntrySlowPathPtrTag)] = codeRef.get().code().taggedPtr();
> +     }
> +     {
> +         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef;
> ++#if ENABLE(JIT)
> +         if (Options::useJIT())
> +             codeRef.construct(createTailCallGate(JSEntryPtrTag, false));
> +         else
> ++#endif
> +             codeRef.construct(MacroAssemblerCodeRef<NativeToJITGatePtrTag>::createSelfManagedCodeRef(CodePtr<NativeToJITGatePtrTag>::fromTaggedPtr(retagCodePtr<void*, CFunctionPtrTag, NativeToJITGatePtrTag>(&tailCallWithoutUntagJSEntryTrampoline))));
> +         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::tailCallWithoutUntagJSEntryPtrTag)]= codeRef.get().code().taggedPtr();
> +     }
> +     {
> +         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef;
> ++#if ENABLE(JIT)
> +         if (Options::useJIT())
> +             codeRef.construct(createWasmTailCallGate(WasmEntryPtrTag));
> +         else
> ++#endif
> +             codeRef.construct(MacroAssemblerCodeRef<NativeToJITGatePtrTag>::createSelfManagedCodeRef(CodePtr<NativeToJITGatePtrTag>::fromTaggedPtr(retagCodePtr<void*, CFunctionPtrTag, NativeToJITGatePtrTag>(&wasmTailCallTrampoline))));
> +         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::wasmTailCallWasmEntryPtrTag)]= codeRef.get().code().taggedPtr();
> +     }
> +     {
> +         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef;
> ++#if ENABLE(JIT)
> +         if (Options::useJIT())
> +             codeRef.construct(createWasmTailCallGate(WasmEntryPtrTag));
> +         else
> ++#endif
> +             codeRef.construct(MacroAssemblerCodeRef<NativeToJITGatePtrTag>::createSelfManagedCodeRef(CodePtr<NativeToJITGatePtrTag>::fromTaggedPtr(retagCodePtr<void*, CFunctionPtrTag, NativeToJITGatePtrTag>(&wasmTailCallTrampoline))));
> +         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::wasmIPIntTailCallWasmEntryPtrTag)]= codeRef.get().code().taggedPtr();
> +     }
> +     {
> +         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef;
> ++#if ENABLE(JIT)
> +         if (Options::useJIT())
> +             codeRef.construct(exceptionHandlerGateThunk());
> +         else
> ++#endif
> +             codeRef.construct(MacroAssemblerCodeRef<NativeToJITGatePtrTag>::createSelfManagedCodeRef(CodePtr<NativeToJITGatePtrTag>::fromTaggedPtr(retagCodePtr<void*, CFunctionPtrTag, NativeToJITGatePtrTag>(&exceptionHandlerTrampoline))));
> +         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::exceptionHandler)] = codeRef.get().code().taggedPtr();
> +     }
> +     {
> +         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> codeRef;
> ++#if ENABLE(JIT)
> +         if (Options::useJIT())
> +             codeRef.construct(returnFromLLIntGateThunk());
> +         else
> ++#endif
> +             codeRef.construct(MacroAssemblerCodeRef<NativeToJITGatePtrTag>::createSelfManagedCodeRef(CodePtr<NativeToJITGatePtrTag>::fromTaggedPtr(retagCodePtr<void*, CFunctionPtrTag, NativeToJITGatePtrTag>(&returnFromLLIntTrampoline))));
> +         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::returnFromLLInt)] = codeRef.get().code().taggedPtr();
> +     }
> + 
> ++#if ENABLE(JIT)
> +     if (Options::useJIT()) {
> +         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::loopOSREntry)] = loopOSREntryGateThunk().code().taggedPtr();
> +         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::entryOSREntry)] = entryOSREntryGateThunk().code().taggedPtr();
> +         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::wasmOSREntry)] = wasmOSREntryGateThunk().code().taggedPtr();
> +-    } else {
> ++    } else
> ++#endif
> ++    {
> +         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::loopOSREntry)] = LLInt::getCodeRef<NativeToJITGatePtrTag>(loop_osr_entry_gate).code().taggedPtr();
> +         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::entryOSREntry)] = nullptr;
> +         g_jscConfig.llint.gateMap[static_cast<unsigned>(Gate::wasmOSREntry)] = nullptr;
> +     }
> + 
> ++#if ENABLE(JIT)
> ++#define INITIALIZE_TAG_AND_UNTAG_THUNKS_JIT_PATH(name) \
> ++    if (Options::useJIT()) { \
> ++        tagCodeRef.construct(tagGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(name##TagGateAfter))); \
> ++        untagCodeRef.construct(untagGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(name##UntagGateAfter))); \
> ++    } else
> ++#else
> ++#define INITIALIZE_TAG_AND_UNTAG_THUNKS_JIT_PATH(name)
> ++#endif
> ++
> + #define INITIALIZE_TAG_AND_UNTAG_THUNKS(name) \
> +     do { \
> +         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> tagCodeRef; \
> +         static LazyNeverDestroyed<MacroAssemblerCodeRef<NativeToJITGatePtrTag>> untagCodeRef; \
> +-        if (Options::useJIT()) { \
> +-            tagCodeRef.construct(tagGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(name##TagGateAfter))); \
> +-            untagCodeRef.construct(untagGateThunk(retagCodePtr<void*, CFunctionPtrTag, OperationPtrTag>(name##UntagGateAfter))); \
> +-        } else { \
> ++        INITIALIZE_TAG_AND_UNTAG_THUNKS_JIT_PATH(name) { \
> +             tagCodeRef.construct(LLInt::getCodeRef<NativeToJITGatePtrTag>(js_trampoline_##name##_tag)); \
> +             untagCodeRef.construct(LLInt::getCodeRef<NativeToJITGatePtrTag>(js_trampoline_##name##_untag)); \
> +         } \
> +diff --git a/Source/JavaScriptCore/wasm/WasmCallee.cpp b/Source/JavaScriptCore/wasm/WasmCallee.cpp
> +index 94a845ab47e4..b689f00143ab 100644
> +--- a/Source/JavaScriptCore/wasm/WasmCallee.cpp
> ++++ b/Source/JavaScriptCore/wasm/WasmCallee.cpp
> +@@ -55,13 +55,25 @@ WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(Callee);
> + WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(JITCallee);
> + WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(JSToWasmCallee);
> + WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(WasmToJSCallee);
> ++WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(IPIntCallee);
> ++WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(WasmBuiltinCallee);
> ++
> ++#if ENABLE(JIT)
> + WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(JSToWasmICCallee);
> ++#endif
> ++
> ++#if ENABLE(WEBASSEMBLY_BBQJIT) || ENABLE(WEBASSEMBLY_OMGJIT)
> + WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(OptimizingJITCallee);
> ++#endif
> ++
> ++#if ENABLE(WEBASSEMBLY_BBQJIT)
> ++WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(BBQCallee);
> ++#endif
> ++
> ++#if ENABLE(WEBASSEMBLY_OMGJIT)
> + WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(OMGCallee);
> + WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(OMGOSREntryCallee);
> +-WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(BBQCallee);
> +-WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(IPIntCallee);
> +-WTF_MAKE_COMPACT_TZONE_ALLOCATED_IMPL(WasmBuiltinCallee);
> ++#endif
> + 
> + Callee::Callee(Wasm::CompilationMode compilationMode)
> +     : NativeCallee(NativeCallee::Category::Wasm, ImplementationVisibility::Private)
> +diff --git a/Source/WTF/wtf/PlatformEnable.h b/Source/WTF/wtf/PlatformEnable.h
> +index 9c20eb45de48..1561e5ecc85a 100644
> +--- a/Source/WTF/wtf/PlatformEnable.h
> ++++ b/Source/WTF/wtf/PlatformEnable.h
> +@@ -1006,7 +1006,7 @@
> + #define ENABLE_JIT_OPERATION_DISASSEMBLY 1
> + #endif
> + 
> +-#if CPU(ARM64E)
> ++#if CPU(ARM64E) && ENABLE(JIT)
> + #define ENABLE_JIT_SIGN_ASSEMBLER_BUFFER 1
> + #endif
> + 
> +-- 
> +2.43.0
> +
> diff --git a/package/webkitgtk/webkitgtk.hash b/package/webkitgtk/webkitgtk.hash
> index 77bdc5485bc..03b8d0a9bec 100644
> --- a/package/webkitgtk/webkitgtk.hash
> +++ b/package/webkitgtk/webkitgtk.hash
> @@ -1,6 +1,6 @@
> -# From https://webkitgtk.org/releases/webkitgtk-2.50.5.tar.xz.sums
> -sha1  e93f7efa9fbc7304cc159c35d8e76d7febab2515  webkitgtk-2.50.5.tar.xz
> -sha256  8737631bac3e9c7ad3e5208f9370e076c09d9c45b39980021ce54edadcc6f94f  webkitgtk-2.50.5.tar.xz
> +# From https://webkitgtk.org/releases/webkitgtk-2.52.3.tar.xz.sums
> +sha1  17f9b127618040a5f3fcbb70e37ea16ab6d69b0b  webkitgtk-2.52.3.tar.xz
> +sha256  5b3e0d174e63dcc28848b1194e0e7448d5948c3c2427ecd931c2c5be5261aebb  webkitgtk-2.52.3.tar.xz
>  
>  # Hashes for license files:
>  sha256  0b5d3a7cc325942567373b0ecd757d07c132e0ebd7c97bfc63f7e1a76094edb4  Source/WebCore/LICENSE-APPLE
> diff --git a/package/webkitgtk/webkitgtk.mk b/package/webkitgtk/webkitgtk.mk
> index 26c70ae6c8c..d5b7639ee61 100644
> --- a/package/webkitgtk/webkitgtk.mk
> +++ b/package/webkitgtk/webkitgtk.mk
> @@ -4,7 +4,7 @@
>  #
>  ################################################################################
>  
> -WEBKITGTK_VERSION = 2.50.5
> +WEBKITGTK_VERSION = 2.52.3
>  WEBKITGTK_SITE = https://www.webkitgtk.org/releases
>  WEBKITGTK_SOURCE = webkitgtk-$(WEBKITGTK_VERSION).tar.xz
>  WEBKITGTK_INSTALL_STAGING = YES
> @@ -56,16 +56,16 @@ WEBKITGTK_CONF_OPTS += -DENABLE_BUBBLEWRAP_SANDBOX=OFF
>  endif
>  
>  ifeq ($(BR2_PACKAGE_WEBKITGTK_MULTIMEDIA),y)
> -WEBKITGTK_CONF_OPTS += \
> -	-DENABLE_VIDEO=ON \
> -	-DENABLE_WEB_AUDIO=ON \
> -	-DENABLE_WEB_CODECS=ON
> +WEBKITGTK_CONF_OPTS += -DUSE_GSTREAMER=ON
>  WEBKITGTK_DEPENDENCIES += gstreamer1 gst1-libav gst1-plugins-bad gst1-plugins-base
>  else
> -WEBKITGTK_CONF_OPTS += \
> -	-DENABLE_VIDEO=OFF \
> -	-DENABLE_WEB_AUDIO=OFF \
> -	-DENABLE_WEB_CODECS=OFF
> +WEBKITGTK_CONF_OPTS += -DUSE_GSTREAMER=OFF
> +endif
> +
> +ifeq ($(BR2_PACKAGE_WEBKITGTK_USE_GSTREAMER_GL),y)
> +WEBKITGTK_CONF_OPTS += -DUSE_GSTREAMER_GL=ON
> +else
> +WEBKITGTK_CONF_OPTS += -DUSE_GSTREAMER_GL=OFF
>  endif
>  
>  ifeq ($(BR2_PACKAGE_WEBKITGTK_WEBDRIVER),y)
> @@ -160,12 +160,6 @@ else
>  WEBKITGTK_CONF_OPTS += -DENABLE_WAYLAND_TARGET=OFF
>  endif
>  
> -ifeq ($(BR2_PACKAGE_WEBKITGTK_USE_GSTREAMER_GL),y)
> -WEBKITGTK_CONF_OPTS += -DUSE_GSTREAMER_GL=ON
> -else
> -WEBKITGTK_CONF_OPTS += -DUSE_GSTREAMER_GL=OFF
> -endif
> -

Honestly, I would not move the GStreamer-GL part, because it adds noise
to the diff without making much of a difference.

>  ifeq ($(BR2_INIT_SYSTEMD),y)
>  WEBKITGTK_CONF_OPTS += -DENABLE_JOURNALD_LOG=ON
>  WEBKITGTK_DEPENDENCIES += systemd
> -- 
> 2.43.0

Cheers,
—Adrián

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

[-- Attachment #2: Type: text/plain, Size: 150 bytes --]

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Buildroot] [PATCH v1] package/webkitgtk: bump to 2.52.3
@ 2026-04-21 12:37 Thomas Devoogdt
  2026-04-21 17:44 ` Adrian Perez de Castro
  0 siblings, 1 reply; 4+ messages in thread
From: Thomas Devoogdt @ 2026-04-21 12:37 UTC (permalink / raw)
  To: Adrian Perez de Castro
  Cc: Arnout Vandecappelle via buildroot, Thomas Devoogdt,
	Thomas Devoogdt


[-- Attachment #1.1: Type: text/plain, Size: 278 bytes --]

Hi Adrian,

Yes, I missed your patch. I will mark my own patch as superseeded. Fine to
keep USE_GSTREAMER_GL from where it is.
Can you already take the 0001-JSC-Fix-ENABLE-JIT-build.patch to your webkit
bump, or will you update the patch with 2.52.4 once released?

Kr,

Thomas

[-- Attachment #1.2: Type: text/html, Size: 384 bytes --]

[-- Attachment #2: Type: text/plain, Size: 150 bytes --]

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Buildroot] [PATCH v1] package/webkitgtk: bump to 2.52.3
  2026-04-21 12:37 Thomas Devoogdt
@ 2026-04-21 17:44 ` Adrian Perez de Castro
  0 siblings, 0 replies; 4+ messages in thread
From: Adrian Perez de Castro @ 2026-04-21 17:44 UTC (permalink / raw)
  To: Thomas Devoogdt
  Cc: Arnout Vandecappelle via buildroot, Thomas Devoogdt,
	Thomas Devoogdt


[-- Attachment #1.1: Type: text/plain, Size: 556 bytes --]

Hi Thomas,

On Tue, 21 Apr 2026 14:37:29 +0200 Thomas Devoogdt <thomas@devoogdt.com> wrote:

> Yes, I missed your patch. I will mark my own patch as superseeded. Fine to
> keep USE_GSTREAMER_GL from where it is.

No problem at all, it could happen to anyone =)

> Can you already take the 0001-JSC-Fix-ENABLE-JIT-build.patch to your webkit
> bump, or will you update the patch with 2.52.4 once released?

I will do both: first send a v2 with the patch added, and then backport
it to the stable branch to have it included in .4 as well.

Cheers,
—Adrián

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

[-- Attachment #2: Type: text/plain, Size: 150 bytes --]

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-04-21 17:44 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-21 10:28 [Buildroot] [PATCH v1] package/webkitgtk: bump to 2.52.3 Thomas Devoogdt
2026-04-21 11:35 ` Adrian Perez de Castro
  -- strict thread matches above, loose matches on Subject: below --
2026-04-21 12:37 Thomas Devoogdt
2026-04-21 17:44 ` Adrian Perez de Castro

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox