summaryrefslogtreecommitdiffstats
path: root/recipes-wam/cef/files/chromium/0018-meta-browser-Fix-undefined-symbol-PaintOpWriter-Seri.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-wam/cef/files/chromium/0018-meta-browser-Fix-undefined-symbol-PaintOpWriter-Seri.patch')
-rw-r--r--recipes-wam/cef/files/chromium/0018-meta-browser-Fix-undefined-symbol-PaintOpWriter-Seri.patch49
1 files changed, 49 insertions, 0 deletions
diff --git a/recipes-wam/cef/files/chromium/0018-meta-browser-Fix-undefined-symbol-PaintOpWriter-Seri.patch b/recipes-wam/cef/files/chromium/0018-meta-browser-Fix-undefined-symbol-PaintOpWriter-Seri.patch
new file mode 100644
index 000000000..2c953d3b0
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0018-meta-browser-Fix-undefined-symbol-PaintOpWriter-Seri.patch
@@ -0,0 +1,49 @@
+From 1b8ee706e8bb16a9b6c59c832d33b56915d1f410 Mon Sep 17 00:00:00 2001
+From: Max Ihlenfeldt <max@igalia.com>
+Date: Tue, 5 Sep 2023 09:51:38 +0000
+Subject: [PATCH 18/33] [meta-browser] Fix "undefined symbol:
+ PaintOpWriter::SerializedSize<unsigned long>()"
+
+For some reason, clang 14 (currently used on dunfell and kirkstone)
+seems to fail to correctly generate a needed instantiation of
+`cc::PaintOpWriter::SerializedSize<T>()`, and thus the final linking
+step fails with an "undefined symbol" error.
+
+We can fix this by explicitly providing a specialization, which does the
+same thing as the generic implementation.
+
+Upstream-Status: Inappropriate [specific to older versions of clang]
+Signed-off-by: Max Ihlenfeldt <max@igalia.com>
+---
+ cc/paint/paint_op_writer.h | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/cc/paint/paint_op_writer.h b/cc/paint/paint_op_writer.h
+index 70153c0aa64ac..f47eb934c1eb1 100644
+--- a/cc/paint/paint_op_writer.h
++++ b/cc/paint/paint_op_writer.h
+@@ -122,6 +122,9 @@ class CC_PAINT_EXPORT PaintOpWriter {
+ static size_t SerializedSize(const PaintRecord& record);
+ static size_t SerializedSize(const SkHighContrastConfig& config);
+
++ template<>
++ constexpr size_t SerializedSize<size_t>();
++
+ // Serialization of raw/smart pointers is not supported by default.
+ template <typename T>
+ static inline size_t SerializedSize(const T* p);
+@@ -385,6 +388,11 @@ constexpr size_t PaintOpWriter::SerializedSize<SkGainmapInfo>() {
+ SerializedSizeSimple<uint32_t>(); // fBaseImageType
+ }
+
++template<>
++constexpr size_t PaintOpWriter::SerializedSize<size_t>() {
++ return SerializedSizeSimple<size_t>();
++}
++
+ template <typename T>
+ constexpr size_t PaintOpWriter::SerializedSize() {
+ static_assert(std::is_arithmetic_v<T> || std::is_enum_v<T>);
+--
+2.42.1
+