diff mbox series

[meta-oe,3/5] webkitgtk3: Fix build with latest clang

Message ID 20240904053300.2085710-3-raj.khem@gmail.com
State New
Headers show
Series [meta-multimedia,1/5] xdg-desktop-portal-wlr: Update to latest on master branch | expand

Commit Message

Khem Raj Sept. 4, 2024, 5:32 a.m. UTC
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 ...1-Fix-build-issues-with-latest-Clang.patch | 237 ++++++++++++++++++
 .../webkitgtk/webkitgtk3_2.44.3.bb            |   1 +
 2 files changed, 238 insertions(+)
 create mode 100644 meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-Fix-build-issues-with-latest-Clang.patch
diff mbox series

Patch

diff --git a/meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-Fix-build-issues-with-latest-Clang.patch b/meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-Fix-build-issues-with-latest-Clang.patch
new file mode 100644
index 0000000000..6ef9835c2c
--- /dev/null
+++ b/meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-Fix-build-issues-with-latest-Clang.patch
@@ -0,0 +1,237 @@ 
+From 257ed304fb3e71d412568dcbed7129c145812fdf Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 2 Sep 2024 21:38:12 -0700
+Subject: [PATCH] Fix build issues with latest Clang
+ https://bugs.webkit.org/show_bug.cgi?id=276198 rdar://130933637
+
+Reviewed by Yusuke Suzuki.
+
+The use of the template keyword to reference template members without a template argument list was deprecated in the C++ standard.
+e.g. `foo.template bar()` nows needs to be `foo.template bar<>()`. I ran into a different issue with `std::reference_wrapper` that
+blocked me from going any further, which AFAICT is a bug on the Clang side.
+
+This also fixes a few other warnings that popped up while building with the new Clang denoted inline
+
+* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:
+(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq): Clang didn't like the implicit static_cast<int32_t>(UINT32_MAX) so make it explicit with a static_assert no data was lost.
+* Source/JavaScriptCore/jit/AssemblyHelpers.cpp:
+(JSC::AssemblyHelpers::emitNonNullDecodeZeroExtendedStructureID): Clang didn't like the implicit static_cast<int32_t>(UINT32_MAX) so make it explicit with a static_assert no data was lost.
+* Source/JavaScriptCore/llint/InPlaceInterpreter.cpp:
+* Source/JavaScriptCore/llint/LLIntData.h:
+(JSC::LLInt::getCodeFunctionPtr):
+(JSC::LLInt::getWide16CodeFunctionPtr):
+(JSC::LLInt::getWide32CodeFunctionPtr):
+* Source/JavaScriptCore/parser/Nodes.h: Missing definition of ModuleScopeData added include.
+* Source/JavaScriptCore/runtime/JSCast.h:
+(JSC::JSCastingHelpers::inherits):
+(JSC::jsDynamicCast):
+* Source/ThirdParty/libwebrtc/Source/third_party/boringssl/src/crypto/bio/connect.c:
+(conn_callback_ctrl): Had a warning about an incompatible function type. Seems like this is intentional suppressed the warning.
+* Source/WTF/wtf/cf/TypeCastsCF.h: Had a warning about extra namespace qualification. I just moved it out of the namespace. That said, it feels like this warning shouldn't apply to macro expansions...
+* Source/WebCore/PAL/ThirdParty/libavif/ThirdParty/dav1d/src/decode.c:
+(decode_b): Had a warning about different types on the middle/right of a ternary expression. I just pushed the comparison inside the ternary.
+
+Canonical link: https://commits.webkit.org/280700@main
+
+Upstream-Status: Backport [https://github.com/WebKit/WebKit/commit/62b6e2db547e#diff-136d848d7c1b400da9b486916b67592b54e5abf7c66ac247697a93ae2fb743a9]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp    |  6 ++++--
+ Source/JavaScriptCore/jit/AssemblyHelpers.cpp    |  6 ++++--
+ .../JavaScriptCore/llint/InPlaceInterpreter.cpp  | 16 ++++++++--------
+ Source/JavaScriptCore/llint/LLIntData.h          | 12 ++++++------
+ Source/JavaScriptCore/llint/LLIntThunks.cpp      |  2 +-
+ Source/JavaScriptCore/parser/Nodes.h             |  4 ++--
+ Source/JavaScriptCore/runtime/JSCast.h           |  4 ++--
+ 7 files changed, 27 insertions(+), 23 deletions(-)
+
+--- a/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp
++++ b/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp
+@@ -22930,8 +22930,10 @@ IGNORE_CLANG_WARNINGS_END
+         return m_out.shl(m_out.zeroExtPtr(structureID), m_out.constIntPtr(StructureID::encodeShiftAmount));
+ #else
+         LValue maskedStructureID = structureID;
+-        if constexpr (structureHeapAddressSize < 4 * GB)
+-            maskedStructureID = m_out.bitAnd(structureID, m_out.constInt32(StructureID::structureIDMask));
++        if constexpr (structureHeapAddressSize < 4 * GB) {
++            static_assert(static_cast<uint32_t>(StructureID::structureIDMask) == StructureID::structureIDMask);
++            maskedStructureID = m_out.bitAnd(structureID, m_out.constInt32(static_cast<uint32_t>(StructureID::structureIDMask)));
++        }
+         return m_out.bitOr(m_out.constIntPtr(startOfStructureHeap()), m_out.zeroExtPtr(maskedStructureID));
+ #endif
+     }
+--- a/Source/JavaScriptCore/jit/AssemblyHelpers.cpp
++++ b/Source/JavaScriptCore/jit/AssemblyHelpers.cpp
+@@ -677,8 +677,10 @@ void AssemblyHelpers::emitNonNullDecodeZ
+     if constexpr (structureHeapAddressSize >= 4 * GB) {
+         ASSERT(structureHeapAddressSize == 4 * GB);
+         move(source, dest);
+-    } else
+-        and32(TrustedImm32(StructureID::structureIDMask), source, dest);
++    } else {
++        static_assert(static_cast<uint32_t>(StructureID::structureIDMask) == StructureID::structureIDMask);
++        and32(TrustedImm32(static_cast<uint32_t>(StructureID::structureIDMask)), source, dest);
++    }
+     or64(TrustedImm64(startOfStructureHeap()), dest);
+ #else // not CPU(ADDRESS64)
+     move(source, dest);
+--- a/Source/JavaScriptCore/llint/InPlaceInterpreter.cpp
++++ b/Source/JavaScriptCore/llint/InPlaceInterpreter.cpp
+@@ -43,8 +43,8 @@ namespace JSC { namespace IPInt {
+ do { \
+     void* base = reinterpret_cast<void*>(ipint_unreachable_validate); \
+     void* ptr = reinterpret_cast<void*>(ipint_ ## name ## _validate); \
+-    void* untaggedBase = CodePtr<CFunctionPtrTag>::fromTaggedPtr(base).template untaggedPtr(); \
+-    void* untaggedPtr = CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr(); \
++    void* untaggedBase = CodePtr<CFunctionPtrTag>::fromTaggedPtr(base).template untaggedPtr<>(); \
++    void* untaggedPtr = CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr<>(); \
+     RELEASE_ASSERT_WITH_MESSAGE((char*)(untaggedPtr) - (char*)(untaggedBase) == opcode * 256, #name); \
+ } while (false);
+ 
+@@ -52,8 +52,8 @@ do { \
+ do { \
+     void* base = reinterpret_cast<void*>(ipint_i32_trunc_sat_f32_s_validate); \
+     void* ptr = reinterpret_cast<void*>(ipint_ ## name ## _validate); \
+-    void* untaggedBase = CodePtr<CFunctionPtrTag>::fromTaggedPtr(base).template untaggedPtr(); \
+-    void* untaggedPtr = CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr(); \
++    void* untaggedBase = CodePtr<CFunctionPtrTag>::fromTaggedPtr(base).template untaggedPtr<>(); \
++    void* untaggedPtr = CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr<>(); \
+     RELEASE_ASSERT_WITH_MESSAGE((char*)(untaggedPtr) - (char*)(untaggedBase) == opcode * 256, #name); \
+ } while (false);
+ 
+@@ -61,8 +61,8 @@ do { \
+ do { \
+     void* base = reinterpret_cast<void*>(ipint_simd_v128_load_mem_validate); \
+     void* ptr = reinterpret_cast<void*>(ipint_ ## name ## _validate); \
+-    void* untaggedBase = CodePtr<CFunctionPtrTag>::fromTaggedPtr(base).template untaggedPtr(); \
+-    void* untaggedPtr = CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr(); \
++    void* untaggedBase = CodePtr<CFunctionPtrTag>::fromTaggedPtr(base).template untaggedPtr<>(); \
++    void* untaggedPtr = CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr<>(); \
+     RELEASE_ASSERT_WITH_MESSAGE((char*)(untaggedPtr) - (char*)(untaggedBase) == opcode * 256, #name); \
+ } while (false);
+ 
+@@ -70,8 +70,8 @@ do { \
+ do { \
+     void* base = reinterpret_cast<void*>(ipint_memory_atomic_notify_validate); \
+     void* ptr = reinterpret_cast<void*>(ipint_ ## name ## _validate); \
+-    void* untaggedBase = CodePtr<CFunctionPtrTag>::fromTaggedPtr(base).template untaggedPtr(); \
+-    void* untaggedPtr = CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr(); \
++    void* untaggedBase = CodePtr<CFunctionPtrTag>::fromTaggedPtr(base).template untaggedPtr<>(); \
++    void* untaggedPtr = CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr<>(); \
+     RELEASE_ASSERT_WITH_MESSAGE((char*)(untaggedPtr) - (char*)(untaggedBase) == opcode * 256, #name); \
+ } while (false);
+ 
+--- a/Source/JavaScriptCore/llint/LLIntData.h
++++ b/Source/JavaScriptCore/llint/LLIntData.h
+@@ -217,7 +217,7 @@ ALWAYS_INLINE LLIntCode getCodeFunctionP
+ #if COMPILER(MSVC)
+     return reinterpret_cast<LLIntCode>(getCodePtr<tag>(opcodeID).taggedPtr());
+ #else
+-    return reinterpret_cast<LLIntCode>(getCodePtr<tag>(opcodeID).template taggedPtr());
++    return reinterpret_cast<LLIntCode>(getCodePtr<tag>(opcodeID).template taggedPtr<>());
+ #endif
+ }
+ 
+@@ -227,7 +227,7 @@ ALWAYS_INLINE LLIntCode getWide16CodeFun
+ #if COMPILER(MSVC)
+     return reinterpret_cast<LLIntCode>(getWide16CodePtr<tag>(opcodeID).taggedPtr());
+ #else
+-    return reinterpret_cast<LLIntCode>(getWide16CodePtr<tag>(opcodeID).template taggedPtr());
++    return reinterpret_cast<LLIntCode>(getWide16CodePtr<tag>(opcodeID).template taggedPtr<>());
+ #endif
+ }
+ 
+@@ -237,7 +237,7 @@ ALWAYS_INLINE LLIntCode getWide32CodeFun
+ #if COMPILER(MSVC)
+     return reinterpret_cast<LLIntCode>(getWide32CodePtr<tag>(opcodeID).taggedPtr());
+ #else
+-    return reinterpret_cast<LLIntCode>(getWide32CodePtr<tag>(opcodeID).template taggedPtr());
++    return reinterpret_cast<LLIntCode>(getWide32CodePtr<tag>(opcodeID).template taggedPtr<>());
+ #endif
+ }
+ #else // not ENABLE(JIT)
+@@ -361,7 +361,7 @@ ALWAYS_INLINE LLIntCode getCodeFunctionP
+ #if COMPILER(MSVC)
+     return reinterpret_cast<LLIntCode>(getCodePtr<tag>(opcodeID).taggedPtr());
+ #else
+-    return reinterpret_cast<LLIntCode>(getCodePtr<tag>(opcodeID).template taggedPtr());
++    return reinterpret_cast<LLIntCode>(getCodePtr<tag>(opcodeID).template taggedPtr<>());
+ #endif
+ }
+ 
+@@ -371,7 +371,7 @@ ALWAYS_INLINE LLIntCode getWide16CodeFun
+ #if COMPILER(MSVC)
+     return reinterpret_cast<LLIntCode>(getWide16CodePtr<tag>(opcodeID).taggedPtr());
+ #else
+-    return reinterpret_cast<LLIntCode>(getWide16CodePtr<tag>(opcodeID).template taggedPtr());
++    return reinterpret_cast<LLIntCode>(getWide16CodePtr<tag>(opcodeID).template taggedPtr<>());
+ #endif
+ }
+ 
+@@ -381,7 +381,7 @@ ALWAYS_INLINE LLIntCode getWide32CodeFun
+ #if COMPILER(MSVC)
+     return reinterpret_cast<LLIntCode>(getWide32CodePtr<tag>(opcodeID).taggedPtr());
+ #else
+-    return reinterpret_cast<LLIntCode>(getWide32CodePtr<tag>(opcodeID).template taggedPtr());
++    return reinterpret_cast<LLIntCode>(getWide32CodePtr<tag>(opcodeID).template taggedPtr<>());
+ #endif
+ }
+ #else // not ENABLE(JIT)
+--- a/Source/JavaScriptCore/llint/LLIntThunks.cpp
++++ b/Source/JavaScriptCore/llint/LLIntThunks.cpp
+@@ -227,7 +227,7 @@ ALWAYS_INLINE void* untaggedPtr(void* pt
+ #if COMPILER(MSVC)
+         return CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).untaggedPtr();
+ #else
+-        return CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr();
++        return CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr<>();
+ #endif
+ }
+ 
+--- a/Source/JavaScriptCore/parser/Nodes.h
++++ b/Source/JavaScriptCore/parser/Nodes.h
+@@ -1,7 +1,7 @@
+ /*
+  *  Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
+  *  Copyright (C) 2001 Peter Kelly (pmk@post.com)
+- *  Copyright (C) 2003-2019 Apple Inc. All rights reserved.
++ *  Copyright (C) 2003-2024 Apple Inc. All rights reserved.
+  *  Copyright (C) 2007 Cameron Zwarich (cwzwarich@uwaterloo.ca)
+  *  Copyright (C) 2007 Maks Orlovich
+  *  Copyright (C) 2007 Eric Seidel <eric@webkit.org>
+@@ -29,6 +29,7 @@
+ #include "ImplementationVisibility.h"
+ #include "JITCode.h"
+ #include "Label.h"
++#include "ModuleScopeData.h"
+ #include "ParserArena.h"
+ #include "ParserModes.h"
+ #include "ParserTokens.h"
+@@ -49,7 +50,6 @@ namespace JSC {
+     class FunctionMetadataNode;
+     class FunctionParameters;
+     class ModuleAnalyzer;
+-    class ModuleScopeData;
+     class PropertyListNode;
+     class ReadModifyResolveNode;
+     class RegisterID;
+--- a/Source/JavaScriptCore/runtime/JSCast.h
++++ b/Source/JavaScriptCore/runtime/JSCast.h
+@@ -236,7 +236,7 @@ template<typename Target, typename From>
+ bool inherits(From* from)
+ {
+     using Dispatcher = InheritsTraits<Target>;
+-    return Dispatcher::template inherits(from);
++    return Dispatcher::template inherits<>(from);
+ }
+ 
+ } // namespace JSCastingHelpers
+@@ -245,7 +245,7 @@ template<typename To, typename From>
+ To jsDynamicCast(From* from)
+ {
+     using Dispatcher = JSCastingHelpers::InheritsTraits<typename std::remove_cv<typename std::remove_pointer<To>::type>::type>;
+-    if (LIKELY(Dispatcher::template inherits(from)))
++    if (LIKELY(Dispatcher::template inherits<>(from)))
+         return static_cast<To>(from);
+     return nullptr;
+ }
diff --git a/meta-oe/recipes-support/webkitgtk/webkitgtk3_2.44.3.bb b/meta-oe/recipes-support/webkitgtk/webkitgtk3_2.44.3.bb
index 7d70cbda78..9493d86422 100644
--- a/meta-oe/recipes-support/webkitgtk/webkitgtk3_2.44.3.bb
+++ b/meta-oe/recipes-support/webkitgtk/webkitgtk3_2.44.3.bb
@@ -15,6 +15,7 @@  SRC_URI = "https://www.webkitgtk.org/releases/webkitgtk-${PV}.tar.xz \
            file://no-musttail-arm.patch \
            file://0001-LowLevelInterpreter.cpp-339-21-error-t6-was-not-decl.patch \
            file://30e1d5e22213fdaca2a29ec3400c927d710a37a8.patch \
+           file://0001-Fix-build-issues-with-latest-Clang.patch \
            "
 SRC_URI[sha256sum] = "dc82d042ecaca981a4852357c06e5235743319cf10a94cd36ad41b97883a0b54"