2023-02-09 20:35:43 +00:00
committed by Git OBS Bridge
parent 70329ee396
commit 6f737316b7
13 changed files with 408 additions and 158 deletions

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cbcdef5ee71acb53790ded3adef86871812b46e9f208dce8ec3f8ab04958be2d
size 1747968612

View File

@@ -0,0 +1,41 @@
From b4e56d22275cae5a910463a966a96345430a83ea Mon Sep 17 00:00:00 2001
From: Ivan Murashov <ivan.murashov@lge.com>
Date: Sat, 17 Dec 2022 12:06:01 +0000
Subject: [PATCH] libstdc++: Don't use const members in std::vector in password_manager::CredentialUIEntry
Otherwise build fails when building with use_custom_libcxx=false.
The error example:
std::vector must have a non-const, non-volatile value_type
Implementation of std::vector in libstdc++ does not allow const.
Bug: 957519
Change-Id: I089de2d52df25138d74dbf01fdf61d6301b4d871
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4111037
Reviewed-by: Mohamed Amir Yosef <mamir@chromium.org>
Commit-Queue: Mohamed Amir Yosef <mamir@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1084697}
---
diff --git a/components/password_manager/core/browser/ui/credential_ui_entry.cc b/components/password_manager/core/browser/ui/credential_ui_entry.cc
index 1e0766a..a9a34f7 100644
--- a/components/password_manager/core/browser/ui/credential_ui_entry.cc
+++ b/components/password_manager/core/browser/ui/credential_ui_entry.cc
@@ -97,7 +97,7 @@
// For cases when the notes differ within grouped passwords (e.g: a
// credential exists in both account and profile stores), respective notes
// should be concatenated and linebreak used as a delimiter.
- std::vector<const std::u16string> notes_with_duplicates;
+ std::vector<std::u16string> notes_with_duplicates;
for (const auto& form : forms) {
// Only notes with an empty `unique_display_name` are supported in the
// settings UI.
@@ -109,7 +109,7 @@
}
auto unique_notes =
base::MakeFlatSet<std::u16string>(std::move(notes_with_duplicates));
- note = base::JoinString(std::vector<const std::u16string>(
+ note = base::JoinString(std::vector<std::u16string>(
unique_notes.begin(), unique_notes.end()),
u"\n");

View File

@@ -0,0 +1,37 @@
From 795c311aae4b718585bc6194189f061000c823a1 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
Date: Fri, 23 Dec 2022 14:28:55 +0000
Subject: [PATCH] libstdc++: fix narrowing in blink::DarkModeLABColorSpace
Clang-14 errors out with narrowing from double to float. Use std::pow
instead.
---
.../renderer/platform/graphics/dark_mode_lab_color_space.h | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/third_party/blink/renderer/platform/graphics/dark_mode_lab_color_space.h b/third_party/blink/renderer/platform/graphics/dark_mode_lab_color_space.h
index 999c3e5..c18ea7b 100644
--- a/third_party/blink/renderer/platform/graphics/dark_mode_lab_color_space.h
+++ b/third_party/blink/renderer/platform/graphics/dark_mode_lab_color_space.h
@@ -125,7 +125,7 @@ class DarkModeLABColorSpace {
// https://en.wikipedia.org/wiki/CIELAB_color_space#Reverse_transformation.
SkV3 FromXYZ(const SkV3& v) const {
auto f = [](float x) {
- return x > kSigma3 ? pow(x, 1.0f / 3.0f)
+ return x > kSigma3 ? std::pow(x, 1.0f / 3.0f)
: x / (3 * kSigma2) + 4.0f / 29.0f;
};
@@ -145,7 +145,8 @@ class DarkModeLABColorSpace {
// https://en.wikipedia.org/wiki/CIELAB_color_space#Forward_transformation.
SkV3 ToXYZ(const SkV3& lab) const {
auto invf = [](float x) {
- return x > kSigma ? pow(x, 3.0f) : 3.0f * kSigma2 * (x - 4.0f / 29.0f);
+ return x > kSigma ? std::pow(x, 3.0f)
+ : 3.0f * kSigma2 * (x - 4.0f / 29.0f);
};
SkV3 v = {Clamp(lab.x, 0.0f, 100.0f), Clamp(lab.y, -128.0f, 128.0f),
--
2.38.2

View File

@@ -0,0 +1,29 @@
From 07f0a87e4409f27854b3a1d17f270a3497f38947 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
Date: Mon, 19 Dec 2022 19:07:37 +0000
Subject: [PATCH] GCC: use fabsf in ui::NativeThemeBase::OutlineColor
Template deduction fails for base::clamp, because return type of
fabs is double and all other parameters are float.
Bug: 819294
Change-Id: I34f1c9c99d13f69097d899bfcb0526cbdf4fe1c1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4110869
Reviewed-by: Peter Kasting <pkasting@chromium.org>
Commit-Queue: Stephan Hartmann <stha09@googlemail.com>
Cr-Commit-Position: refs/heads/main@{#1085034}
---
diff --git a/ui/native_theme/native_theme_base.cc b/ui/native_theme/native_theme_base.cc
index 169c60c..36db49a 100644
--- a/ui/native_theme/native_theme_base.cc
+++ b/ui/native_theme/native_theme_base.cc
@@ -1336,7 +1336,7 @@
// The following code has been tested to look OK with all of the
// default GTK themes.
SkScalar min_diff = base::clamp((hsv1[1] + hsv2[1]) * 1.2f, 0.28f, 0.5f);
- SkScalar diff = base::clamp(fabs(hsv1[2] - hsv2[2]) / 2, min_diff, 0.5f);
+ SkScalar diff = base::clamp(fabsf(hsv1[2] - hsv2[2]) / 2, min_diff, 0.5f);
if (hsv1[2] + hsv2[2] > 1.0)
diff = -diff;

View File

@@ -1,6 +1,6 @@
From 307a0f63dd9b118f4b8470ed3d7567e81fdb7a6d Mon Sep 17 00:00:00 2001
From: Mike Gilbert <floppym@gentoo.org>
Date: Sat, 17 Dec 2022 10:49:23 +0000
Date: Tue, 15 Nov 2022 10:27:58 +0000
Subject: [PATCH] Disable various compiler configs
---
@@ -8,7 +8,7 @@ Subject: [PATCH] Disable various compiler configs
1 file changed, 17 insertions(+), 117 deletions(-)
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index d72f810..35db3da 100644
index bd039fc..4d3759a 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -276,9 +276,7 @@ config("compiler") {
@@ -59,7 +59,7 @@ index d72f810..35db3da 100644
# Rust compiler setup (for either clang or rustc).
if (enable_rust) {
defines += [ "RUST_ENABLED" ]
@@ -1300,46 +1267,6 @@ config("compiler_deterministic") {
@@ -1301,46 +1268,6 @@ config("compiler_deterministic") {
}
}
@@ -106,7 +106,7 @@ index d72f810..35db3da 100644
# Tells the compiler not to use absolute paths when passing the default
# paths to the tools it invokes. We don't want this because we don't
# really need it and it can mess up the goma cache entries.
@@ -1358,27 +1285,6 @@ config("compiler_deterministic") {
@@ -1359,27 +1286,6 @@ config("compiler_deterministic") {
}
}
@@ -134,7 +134,7 @@ index d72f810..35db3da 100644
config("rustc_revision") {
if (enable_rust && defined(rustc_version)) {
# Similar to the above config, this is here so that all files get
@@ -1668,7 +1574,7 @@ config("chromium_code") {
@@ -1669,7 +1575,7 @@ config("chromium_code") {
defines = [ "_HAS_NODISCARD" ]
}
} else {
@@ -143,7 +143,7 @@ index d72f810..35db3da 100644
if (treat_warnings_as_errors) {
cflags += [ "-Werror" ]
@@ -1677,10 +1583,6 @@ config("chromium_code") {
@@ -1678,10 +1584,6 @@ config("chromium_code") {
# well.
ldflags = [ "-Werror" ]
}
@@ -154,7 +154,7 @@ index d72f810..35db3da 100644
# In Chromium code, we define __STDC_foo_MACROS in order to get the
# C99 macros on Mac and Linux.
@@ -1689,16 +1591,6 @@ config("chromium_code") {
@@ -1690,16 +1592,6 @@ config("chromium_code") {
"__STDC_FORMAT_MACROS",
]
@@ -171,7 +171,7 @@ index d72f810..35db3da 100644
if (is_mac) {
cflags_objc = [ "-Wobjc-missing-property-synthesis" ]
cflags_objcc = [ "-Wobjc-missing-property-synthesis" ]
@@ -2091,7 +1983,8 @@ config("default_stack_frames") {
@@ -2092,7 +1984,8 @@ config("default_stack_frames") {
}
# Default "optimization on" config.
@@ -181,7 +181,7 @@ index d72f810..35db3da 100644
if (is_win) {
if (chrome_pgo_phase != 2) {
# Favor size over speed, /O1 must be before the common flags.
@@ -2136,7 +2029,8 @@ config("optimize") {
@@ -2137,7 +2030,8 @@ config("optimize") {
}
# Turn off optimizations.
@@ -191,7 +191,7 @@ index d72f810..35db3da 100644
if (is_win) {
cflags = [
"/Od", # Disable optimization.
@@ -2176,7 +2070,8 @@ config("no_optimize") {
@@ -2177,7 +2071,8 @@ config("no_optimize") {
# Turns up the optimization level. On Windows, this implies whole program
# optimization and link-time code generation which is very expensive and should
# be used sparingly.
@@ -201,7 +201,7 @@ index d72f810..35db3da 100644
if (is_nacl && is_nacl_irt) {
# The NaCl IRT is a special case and always wants its own config.
# Various components do:
@@ -2209,7 +2104,8 @@ config("optimize_max") {
@@ -2210,7 +2105,8 @@ config("optimize_max") {
#
# TODO(crbug.com/621335) - rework how all of these configs are related
# so that we don't need this disclaimer.
@@ -211,7 +211,7 @@ index d72f810..35db3da 100644
if (is_nacl && is_nacl_irt) {
# The NaCl IRT is a special case and always wants its own config.
# Various components do:
@@ -2235,7 +2131,8 @@ config("optimize_speed") {
@@ -2236,7 +2132,8 @@ config("optimize_speed") {
}
}
@@ -221,7 +221,7 @@ index d72f810..35db3da 100644
cflags = [ "-O1" ] + common_optimize_on_cflags
rustflags = [ "-Copt-level=1" ]
ldflags = common_optimize_on_ldflags
@@ -2355,7 +2252,8 @@ config("win_pdbaltpath") {
@@ -2356,7 +2253,8 @@ config("win_pdbaltpath") {
}
# Full symbols.
@@ -230,8 +230,8 @@ index d72f810..35db3da 100644
+config("xsymbols") {
if (is_win) {
if (is_clang) {
cflags = [ "/Z7" ] # Debug information in the .obj files.
@@ -2487,7 +2385,8 @@ config("symbols") {
cflags = [
@@ -2495,7 +2393,8 @@ config("symbols") {
# Minimal symbols.
# This config guarantees to hold symbol for stack trace which are shown to user
# when crash happens in unittests running on buildbot.
@@ -241,7 +241,7 @@ index d72f810..35db3da 100644
if (is_win) {
# Functions, files, and line tables only.
cflags = []
@@ -2560,7 +2459,8 @@ config("minimal_symbols") {
@@ -2568,7 +2467,8 @@ config("minimal_symbols") {
# This configuration contains function names only. That is, the compiler is
# told to not generate debug information and the linker then just puts function
# names in the final debug information.
@@ -252,5 +252,5 @@ index d72f810..35db3da 100644
ldflags = [ "/DEBUG" ]
--
2.38.2
2.37.4

View File

@@ -0,0 +1,26 @@
Index: chromium-110.0.5481.30/build/config/linux/libffi/BUILD.gn
===================================================================
--- chromium-110.0.5481.30.orig/build/config/linux/libffi/BUILD.gn
+++ chromium-110.0.5481.30/build/config/linux/libffi/BUILD.gn
@@ -4,21 +4,6 @@
import("//build/config/linux/pkg_config.gni")
-declare_args() {
- # Controls whether the build should use the version of libffi library shipped
- # with the system. By default, we only use the system version on Chrome OS:
- # on Linux, libffi must be statically linked to prevent a situation where the
- # runtime version of libffi is different from the build-time version from the
- # sysroot.
- use_system_libffi = default_toolchain == "//build/toolchain/cros:target"
-}
-
-if (use_system_libffi) {
pkg_config("libffi") {
packages = [ "libffi" ]
}
-} else {
- config("libffi") {
- libs = [ ":libffi_pic.a" ]
- }
-}

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e348ab2dc4311083e729d714a81e95dd9db108ff71437dde451c97ac939881ce
size 1703346520

View File

@@ -33,13 +33,13 @@ Cr-Commit-Position: refs/heads/main@{#1073605}
.../idn_spoof_checker_unittest.cc | 28 +++++++++++--------
2 files changed, 25 insertions(+), 12 deletions(-)
diff --git a/components/url_formatter/spoof_checks/idn_spoof_checker.cc b/components/url_formatter/spoof_checks/idn_spoof_checker.cc
index aaff7c60bb918..87f62e49f487f 100644
--- a/components/url_formatter/spoof_checks/idn_spoof_checker.cc
+++ b/components/url_formatter/spoof_checks/idn_spoof_checker.cc
@@ -713,6 +713,15 @@ void IDNSpoofChecker::SetAllowedUnicodeSet(UErrorCode* status) {
allowed_set.remove(0xA640u, 0xA69Fu); // Cyrillic Extended-B
allowed_set.remove(0xA720u, 0xA7FFu); // Latin Extended-D
Index: chromium-110.0.5481.38/components/url_formatter/spoof_checks/idn_spoof_checker.cc
===================================================================
--- chromium-110.0.5481.38.orig/components/url_formatter/spoof_checks/idn_spoof_checker.cc
+++ chromium-110.0.5481.38/components/url_formatter/spoof_checks/idn_spoof_checker.cc
@@ -722,6 +722,15 @@ void IDNSpoofChecker::SetAllowedUnicodeS
allowed_set.remove(0x200Du); // Zero Width Joiner
#endif
+#if U_ICU_VERSION_MAJOR_NUM < 72
+ // Unicode 15 changes ZWJ and ZWNJ from allowed to restricted. Restrict them

View File

@@ -1,111 +0,0 @@
From 2ada52cffbff11074abfaac18938bf02d85454f5 Mon Sep 17 00:00:00 2001
From: Frank Tang <ftang@chromium.org>
Date: Wed, 16 Nov 2022 09:18:45 -0800
Subject: [PATCH] [intl] Enhance Date parser to take Unicode SPACE
This is needed to prepare for the landing of ICU72.
Allow U+202F in the Date String, which the toLocaleString("en-US")
will generate w/ ICU72.
Bug: v8:13494
Change-Id: I41b83c4094ce3d0737a72dcd6310b52c68fdcdca
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4027341
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Jungshik Shin <jshin@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/main@{#84308}
---
src/date/dateparser-inl.h | 2 +-
src/date/dateparser.h | 4 +++-
test/intl/regress-13494.js | 47 ++++++++++++++++++++++++++++++++++++++
3 files changed, 51 insertions(+), 2 deletions(-)
create mode 100644 test/intl/regress-13494.js
diff --git a/src/date/dateparser-inl.h b/src/date/dateparser-inl.h
index 623986d2b10..b45479dc516 100644
--- a/v8/src/date/dateparser-inl.h
+++ b/v8/src/date/dateparser-inl.h
@@ -192,7 +192,7 @@ DateParser::DateToken DateParser::DateStringTokenizer<CharType>::Scan() {
if (in_->Skip('+')) return DateToken::Symbol('+');
if (in_->Skip('.')) return DateToken::Symbol('.');
if (in_->Skip(')')) return DateToken::Symbol(')');
- if (in_->IsAsciiAlphaOrAbove()) {
+ if (in_->IsAsciiAlphaOrAbove() && !in_->IsWhiteSpaceChar()) {
DCHECK_EQ(KeywordTable::kPrefixLength, 3);
uint32_t buffer[3] = {0, 0, 0};
int length = in_->ReadWord(buffer, 3);
diff --git a/src/date/dateparser.h b/src/date/dateparser.h
index 1a0a0b15ab7..59b2f3c9fd2 100644
--- a/v8/src/date/dateparser.h
+++ b/v8/src/date/dateparser.h
@@ -91,7 +91,8 @@ class DateParser : public AllStatic {
// Return word length.
int ReadWord(uint32_t* prefix, int prefix_size) {
int len;
- for (len = 0; IsAsciiAlphaOrAbove(); Next(), len++) {
+ for (len = 0; IsAsciiAlphaOrAbove() && !IsWhiteSpaceChar();
+ Next(), len++) {
if (len < prefix_size) prefix[len] = AsciiAlphaToLower(ch_);
}
for (int i = len; i < prefix_size; i++) prefix[i] = 0;
@@ -115,6 +116,7 @@ class DateParser : public AllStatic {
bool IsEnd() const { return ch_ == 0; }
bool IsAsciiDigit() const { return IsDecimalDigit(ch_); }
bool IsAsciiAlphaOrAbove() const { return ch_ >= 'A'; }
+ bool IsWhiteSpaceChar() const { return IsWhiteSpace(ch_); }
bool IsAsciiSign() const { return ch_ == '+' || ch_ == '-'; }
// Return 1 for '+' and -1 for '-'.
diff --git a/test/intl/regress-13494.js b/test/intl/regress-13494.js
new file mode 100644
index 00000000000..d1446aff073
--- /dev/null
+++ b/v8/test/intl/regress-13494.js
@@ -0,0 +1,47 @@
+// Copyright 2022 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Test the new Date( date.toLocaleString("en-US")) is not invalid.
+// This is not guaranteed by the standard but many code use that to set the
+// timezone as suggested in
+// https://stackoverflow.com/questions/15141762/how-to-initialize-a-javascript-date-to-a-particular-time-zone
+
+let d = new Date();
+
+// https://tc39.es/ecma262/#sec-todatestring
+// 21.4.4.41.4 ToDateString ( tv )
+// 1. If tv is NaN, return "Invalid Date".
+let invalid = "Invalid Date";
+let largestDiff = 25*60*60*1000;
+
+let garbage = new Date("garbage");
+assertTrue(invalid == garbage);
+assertEquals(NaN, garbage.getTime());
+
+let d1 = new Date(d.toLocaleString("en-US"));
+assertTrue(d1 != invalid);
+assertTrue(d1.getTime() != NaN);
+// The milliseconds are different between d1 and d.
+assertTrue(Math.abs(d1-d) < 1000);
+
+// Force a version of date string which have U+202f before AM
+let nnbsp_am = new Date("11/16/2022, 9:04:55\u202fAM");
+assertTrue(nnbsp_am != invalid);
+assertTrue(nnbsp_am.getTime() != NaN);
+// Force a version of date string which have U+202f before PM
+let nnbsp_pm = new Date("11/16/2022, 9:04:55\u202fPM");
+assertTrue(nnbsp_pm != invalid);
+assertTrue(nnbsp_pm.getTime() != NaN);
+
+let d2 = new Date(d.toLocaleString("en-US", {timeZone: "Asia/Taipei"}));
+assertTrue(d2 != invalid);
+assertTrue(d2.getTime() != NaN);
+// The differences should be within 25 hours.
+assertTrue(Math.abs(d2-d) < largestDiff);
+
+let d3 = new Date(d.toLocaleString("en-US", {timeZone: "Africa/Lusaka"}));
+assertTrue(d3 != invalid);
+assertTrue(d3.getTime() != NaN);
+// The differences should be within 25 hours.
+assertTrue(Math.abs(d3-d) < largestDiff);

View File

@@ -1,7 +1,7 @@
Index: chromium-70.0.3538.54/build/linux/unbundle/libusb.gn
Index: chromium-110.0.5481.30/build/linux/unbundle/libusb.gn
===================================================================
--- /dev/null
+++ chromium-70.0.3538.54/build/linux/unbundle/libusb.gn
+++ chromium-110.0.5481.30/build/linux/unbundle/libusb.gn
@@ -0,0 +1,24 @@
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
@@ -27,13 +27,13 @@ Index: chromium-70.0.3538.54/build/linux/unbundle/libusb.gn
+ ]
+ public_configs = [ ":system_libusb" ]
+}
Index: chromium-70.0.3538.54/build/linux/unbundle/replace_gn_files.py
Index: chromium-110.0.5481.30/build/linux/unbundle/replace_gn_files.py
===================================================================
--- chromium-70.0.3538.54.orig/build/linux/unbundle/replace_gn_files.py
+++ chromium-70.0.3538.54/build/linux/unbundle/replace_gn_files.py
@@ -27,6 +27,7 @@ REPLACEMENTS = {
--- chromium-110.0.5481.30.orig/build/linux/unbundle/replace_gn_files.py
+++ chromium-110.0.5481.30/build/linux/unbundle/replace_gn_files.py
@@ -54,6 +54,7 @@ REPLACEMENTS = {
'libevent': 'third_party/libevent/BUILD.gn',
'libjpeg': 'third_party/libjpeg.gni',
'libjxl' : 'third_party/libjxl/BUILD.gn',
'libpng': 'third_party/libpng/BUILD.gn',
+ 'libusb': 'third_party/libusb/BUILD.gn',
'libvpx': 'third_party/libvpx/BUILD.gn',

View File

@@ -1,3 +1,30 @@
-------------------------------------------------------------------
Wed Feb 8 20:16:01 UTC 2023 - Andreas Stieger <andreas.stieger@gmx.de>
- Chromium 110.0.5481.77 (boo#1208029):
* CVE-2023-0696: Type Confusion in V8
* CVE-2023-0697: Inappropriate implementation in Full screen mode
* CVE-2023-0698: Out of bounds read in WebRTC
* CVE-2023-0699: Use after free in GPU
* CVE-2023-0700: Inappropriate implementation in Download
* CVE-2023-0701: Heap buffer overflow in WebUI
* CVE-2023-0702: Type Confusion in Data Transfer
* CVE-2023-0703: Type Confusion in DevTools
* CVE-2023-0704: Insufficient policy enforcement in DevTools
* CVE-2023-0705: Integer overflow in Core
* Various fixes from internal audits, fuzzing and other initiatives
- build with bundled libavif
- dropped patches:
* chromium-109-compiler.patch
* chromium-icu72-3.patch
- added patches:
* chromium-110-compiler.patch
* chromium-110-system-libffi.patch
* chromium-110-NativeThemeBase-fabs.patch
* chromium-110-CredentialUIEntry-const.patch
* chromium-110-DarkModeLABColorSpace-pow.patch
* v8-move-the-Stack-object-from-ThreadLocalTop.patch
-------------------------------------------------------------------
Wed Jan 25 04:51:29 UTC 2023 - Andreas Stieger <andreas.stieger@gmx.de>

View File

@@ -40,15 +40,14 @@
%bcond_without arm_bti
%bcond_without system_icu
%bcond_without ffmpeg_51
%bcond_without system_avif
%else
%bcond_with system_harfbuzz
%bcond_with system_freetype
%bcond_with arm_bti
%bcond_with system_icu
%bcond_with ffmpeg_51
%bcond_with system_avif
%endif
%bcond_with system_avif
# LLVM version
%if 0%{?suse_version} < 1550 && 0%{?sle_version} < 150400
%define llvm_version 12
@@ -74,7 +73,7 @@
%define ffmpeg_version 58
%endif
Name: chromium
Version: 109.0.5414.119
Version: 110.0.5481.77
Release: 0
Summary: Google's open source browser project
License: BSD-3-Clause AND LGPL-2.1-or-later
@@ -108,7 +107,7 @@ Patch9: system-libdrm.patch
Patch10: chromium-disable-parallel-gold.patch
Patch11: chromium-lp151-old-drm.patch
# gentoo/fedora/arch patchset
Patch15: chromium-109-compiler.patch
Patch15: chromium-110-compiler.patch
Patch17: chromium-86-ImageMemoryBarrierData-init.patch
Patch40: chromium-91-java-only-allowed-in-android-builds.patch
Patch50: chromium-clang-nomerge.patch
@@ -121,6 +120,10 @@ Patch87: chromium-98-gtk4-build.patch
Patch90: chromium-100-InMilliseconds-constexpr.patch
Patch98: chromium-102-regex_pattern-array.patch
Patch103: chromium-103-VirtualCursor-std-layout.patch
Patch104: chromium-110-NativeThemeBase-fabs.patch
Patch105: chromium-110-CredentialUIEntry-const.patch
Patch106: chromium-110-DarkModeLABColorSpace-pow.patch
Patch107: v8-move-the-Stack-object-from-ThreadLocalTop.patch
Patch201: chromium-86-fix-vaapi-on-intel.patch
# PATCH-FIX-SUSE: allow prop codecs to be set with chromium branding
Patch202: chromium-prop-codecs.patch
@@ -129,7 +132,7 @@ Patch205: chromium-disable-GlobalMediaControlsCastStartStop.patch
Patch206: chromium-109-clang-lp154.patch
Patch207: chromium-icu72-1.patch
Patch208: chromium-icu72-2.patch
Patch209: chromium-icu72-3.patch
Patch210: chromium-110-system-libffi.patch
BuildRequires: SDL-devel
BuildRequires: bison
BuildRequires: cups-devel
@@ -413,11 +416,8 @@ keeplibs=(
net/third_party/uri_template
third_party/abseil-cpp
third_party/angle
third_party/angle/src/common/third_party/base
third_party/angle/src/common/third_party/smhasher
third_party/angle/src/common/third_party/xxhash
third_party/angle/src/third_party/libXNVCtrl
third_party/angle/src/third_party/trace_event
third_party/angle/src/third_party/volk
third_party/apple_apsl
third_party/axe-core
@@ -469,7 +469,6 @@ keeplibs=(
third_party/devtools-frontend/src/front_end/third_party/i18n
third_party/devtools-frontend/src/front_end/third_party/intl-messageformat
third_party/devtools-frontend/src/front_end/third_party/lighthouse
third_party/devtools-frontend/src/front_end/third_party/lit-html
third_party/devtools-frontend/src/front_end/third_party/lodash-isequal
third_party/devtools-frontend/src/front_end/third_party/marked
third_party/devtools-frontend/src/front_end/third_party/puppeteer
@@ -511,7 +510,6 @@ keeplibs=(
third_party/libaom/source/libaom/third_party/SVT-AV1
third_party/libgav1
third_party/libjingle
third_party/libjxl
third_party/libphonenumber
third_party/libsecret
third_party/libsrtp
@@ -550,7 +548,6 @@ keeplibs=(
third_party/pdfium/third_party/bigint
third_party/pdfium/third_party/freetype
third_party/pdfium/third_party/lcms
third_party/pdfium/third_party/libpng16
third_party/pdfium/third_party/libtiff
third_party/pdfium/third_party/skia_shared
third_party/pdfium/third_party/libopenjpeg
@@ -619,6 +616,7 @@ keeplibs=(
v8/src/third_party/siphash
v8/src/third_party/utf8-decoder
v8/src/third_party/valgrind
v8/third_party/glibc
v8/third_party/inspector_protocol
v8/third_party/v8/builtins
)
@@ -831,8 +829,6 @@ myconf_gn+=" use_system_harfbuzz=true"
%if %{with system_freetype}
myconf_gn+=" use_system_freetype=true"
%endif
myconf_gn+=" use_system_libwayland=true"
myconf_gn+=" use_system_wayland_scanner=true"
myconf_gn+=" enable_hangout_services_extension=true"
myconf_gn+=" enable_vulkan=true"
%if %{with pipewire}

View File

@@ -0,0 +1,205 @@
From 7b6fbcd0a6700db498ad55db046ecda92c8ee8c1 Mon Sep 17 00:00:00 2001
From: Nikolaos Papaspyrou <nikolaos@chromium.org>
Date: Sun, 29 Jan 2023 17:18:08 +0100
Subject: [PATCH] Merge: [heap] Move the Stack object from ThreadLocalTop to
Isolate
This is just for nodejs, do not backmerge to 11.0.
(cherry picked from commit 1e4b71d99fea5ea6bb4bf6420585a7819872bb0f)
> Change-Id: I026a35af3bc6999a09b21f277756d4454c086343
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4152476
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Reviewed-by: Omer Katz <omerkatz@chromium.org>
> Commit-Queue: Nikolaos Papaspyrou <nikolaos@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#85445}
Stack information is thread-specific and, until now, it was stored in a
field in ThreadLocalTop. This CL moves stack information to the isolate
and makes sure to update the stack start whenever a main thread enters
the isolate. At the same time, the Stack object is refactored and
simplified.
As a side effect, after removing the Stack object, ThreadLocalTop
satisfies the std::standard_layout trait; this fixes some issues
observed with different C++ compilers.
Bug: v8:13630
Bug: v8:13257
Change-Id: I4be1f04fe90699e1a6e456dad3e0dd623851acce
---
src/execution/isolate.cc | 36 +++++++++++++++----------------
src/execution/isolate.h | 6 ++++++
src/execution/thread-local-top.cc | 2 --
src/execution/thread-local-top.h | 6 +-----
src/heap/heap.cc | 4 +---
5 files changed, 25 insertions(+), 29 deletions(-)
diff --git a/src/execution/isolate.cc b/v8/src/execution/isolate.cc
index 4edf364e0a..be4fd400d2 100644
--- a/v8/src/execution/isolate.cc
+++ b/v8/src/execution/isolate.cc
@@ -3074,22 +3074,23 @@ void Isolate::AddSharedWasmMemory(Handle<WasmMemoryObject> memory_object) {
void Isolate::RecordStackSwitchForScanning() {
Object current = root(RootIndex::kActiveContinuation);
DCHECK(!current.IsUndefined());
- thread_local_top()->stack_.ClearStackSegments();
- wasm::StackMemory* stack = Managed<wasm::StackMemory>::cast(
- WasmContinuationObject::cast(current).stack())
- .get()
- .get();
+ stack().ClearStackSegments();
+ wasm::StackMemory* wasm_stack =
+ Managed<wasm::StackMemory>::cast(
+ WasmContinuationObject::cast(current).stack())
+ .get()
+ .get();
current = WasmContinuationObject::cast(current).parent();
- thread_local_top()->stack_.SetStackStart(
- reinterpret_cast<void*>(stack->base()));
+ heap()->SetStackStart(reinterpret_cast<void*>(wasm_stack->base()));
// We don't need to add all inactive stacks. Only the ones in the active chain
// may contain cpp heap pointers.
while (!current.IsUndefined()) {
auto cont = WasmContinuationObject::cast(current);
- auto* stack = Managed<wasm::StackMemory>::cast(cont.stack()).get().get();
- thread_local_top()->stack_.AddStackSegment(
- reinterpret_cast<const void*>(stack->base()),
- reinterpret_cast<const void*>(stack->jmpbuf()->sp));
+ auto* wasm_stack =
+ Managed<wasm::StackMemory>::cast(cont.stack()).get().get();
+ stack().AddStackSegment(
+ reinterpret_cast<const void*>(wasm_stack->base()),
+ reinterpret_cast<const void*>(wasm_stack->jmpbuf()->sp));
current = cont.parent();
}
}
@@ -3377,20 +3378,13 @@ void Isolate::Delete(Isolate* isolate) {
Isolate* saved_isolate = isolate->TryGetCurrent();
SetIsolateThreadLocals(isolate, nullptr);
isolate->set_thread_id(ThreadId::Current());
- isolate->thread_local_top()->stack_ =
- saved_isolate ? std::move(saved_isolate->thread_local_top()->stack_)
- : ::heap::base::Stack(base::Stack::GetStackStart());
+ isolate->heap()->SetStackStart(base::Stack::GetStackStart());
bool owns_shared_isolate = isolate->owns_shared_isolate_;
Isolate* maybe_shared_isolate = isolate->shared_isolate_;
isolate->Deinit();
- // Restore the saved isolate's stack.
- if (saved_isolate)
- saved_isolate->thread_local_top()->stack_ =
- std::move(isolate->thread_local_top()->stack_);
-
#ifdef DEBUG
non_disposed_isolates_--;
#endif // DEBUG
@@ -4647,6 +4641,10 @@ bool Isolate::Init(SnapshotData* startup_snapshot_data,
void Isolate::Enter() {
Isolate* current_isolate = nullptr;
PerIsolateThreadData* current_data = CurrentPerIsolateThreadData();
+
+ // Set the stack start for the main thread that enters the isolate.
+ heap()->SetStackStart(base::Stack::GetStackStart());
+
if (current_data != nullptr) {
current_isolate = current_data->isolate_;
DCHECK_NOT_NULL(current_isolate);
diff --git a/v8/src/execution/isolate.h b/v8/src/execution/isolate.h
index a32f999fe5..1cb6e10661 100644
--- a/v8/src/execution/isolate.h
+++ b/v8/src/execution/isolate.h
@@ -32,6 +32,7 @@
#include "src/execution/stack-guard.h"
#include "src/handles/handles.h"
#include "src/handles/traced-handles.h"
+#include "src/heap/base/stack.h"
#include "src/heap/factory.h"
#include "src/heap/heap.h"
#include "src/heap/read-only-heap.h"
@@ -2022,6 +2023,8 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
SimulatorData* simulator_data() { return simulator_data_; }
#endif
+ ::heap::base::Stack& stack() { return stack_; }
+
#ifdef V8_ENABLE_WEBASSEMBLY
wasm::StackMemory*& wasm_stacks() { return wasm_stacks_; }
// Update the thread local's Stack object so that it is aware of the new stack
@@ -2520,6 +2523,9 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
// The mutex only guards adding pages, the retrieval is signal safe.
base::Mutex code_pages_mutex_;
+ // Stack information for the main thread.
+ ::heap::base::Stack stack_;
+
#ifdef V8_ENABLE_WEBASSEMBLY
wasm::StackMemory* wasm_stacks_;
#endif
diff --git a/v8/src/execution/thread-local-top.cc b/v8/src/execution/thread-local-top.cc
index 0d7071ddda..05cc20b8e4 100644
--- a/v8/src/execution/thread-local-top.cc
+++ b/v8/src/execution/thread-local-top.cc
@@ -37,14 +37,12 @@ void ThreadLocalTop::Clear() {
current_embedder_state_ = nullptr;
failed_access_check_callback_ = nullptr;
thread_in_wasm_flag_address_ = kNullAddress;
- stack_ = ::heap::base::Stack();
}
void ThreadLocalTop::Initialize(Isolate* isolate) {
Clear();
isolate_ = isolate;
thread_id_ = ThreadId::Current();
- stack_.SetStackStart(base::Stack::GetStackStart());
#if V8_ENABLE_WEBASSEMBLY
thread_in_wasm_flag_address_ = reinterpret_cast<Address>(
trap_handler::GetThreadInWasmThreadLocalAddress());
diff --git a/v8/src/execution/thread-local-top.h b/v8/src/execution/thread-local-top.h
index 43fec0a7df..989c817f31 100644
--- a/v8/src/execution/thread-local-top.h
+++ b/v8/src/execution/thread-local-top.h
@@ -10,7 +10,6 @@
#include "include/v8-unwinder.h"
#include "src/common/globals.h"
#include "src/execution/thread-id.h"
-#include "src/heap/base/stack.h"
#include "src/objects/contexts.h"
#include "src/utils/utils.h"
@@ -30,7 +29,7 @@ class ThreadLocalTop {
// TODO(all): This is not particularly beautiful. We should probably
// refactor this to really consist of just Addresses and 32-bit
// integer fields.
- static constexpr uint32_t kSizeInBytes = 30 * kSystemPointerSize;
+ static constexpr uint32_t kSizeInBytes = 25 * kSystemPointerSize;
// Does early low-level initialization that does not depend on the
// isolate being present.
@@ -147,9 +146,6 @@ class ThreadLocalTop {
// Address of the thread-local "thread in wasm" flag.
Address thread_in_wasm_flag_address_;
-
- // Stack information.
- ::heap::base::Stack stack_;
};
} // namespace internal
diff --git a/v8/src/heap/heap.cc b/v8/src/heap/heap.cc
index 51a90ddcab..b5722ab6ec 100644
--- a/v8/src/heap/heap.cc
+++ b/v8/src/heap/heap.cc
@@ -5851,9 +5851,7 @@ void Heap::SetStackStart(void* stack_start) {
stack().SetStackStart(stack_start);
}
-::heap::base::Stack& Heap::stack() {
- return isolate_->thread_local_top()->stack_;
-}
+::heap::base::Stack& Heap::stack() { return isolate_->stack(); }
void Heap::RegisterExternallyReferencedObject(Address* location) {
Object object = TracedHandles::Mark(location, TracedHandles::MarkMode::kAll);