blob: 2c953d3b0a47d0cf5bc69996bfa76778946fbe8a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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
|