From 97bbf83c3bd5774e6de1aa60ee749c8e5e160fc6 Mon Sep 17 00:00:00 2001 From: Duncaen Date: Wed, 8 Feb 2023 17:15:36 +0100 Subject: [PATCH] chromium: update to 110.0.5481.77. --- ...chromium-110-CredentialUIEntry-const.patch | 41 ++++ ...romium-110-DarkModeLABColorSpace-pow.patch | 37 ++++ .../chromium-110-NativeThemeBase-fabs.patch | 29 +++ ...the-Stack-object-from-ThreadLocalTop.patch | 205 ++++++++++++++++++ srcpkgs/chromium/template | 11 +- 5 files changed, 317 insertions(+), 6 deletions(-) create mode 100644 srcpkgs/chromium/patches/chromium-110-CredentialUIEntry-const.patch create mode 100644 srcpkgs/chromium/patches/chromium-110-DarkModeLABColorSpace-pow.patch create mode 100644 srcpkgs/chromium/patches/chromium-110-NativeThemeBase-fabs.patch create mode 100644 srcpkgs/chromium/patches/v8-move-the-Stack-object-from-ThreadLocalTop.patch diff --git a/srcpkgs/chromium/patches/chromium-110-CredentialUIEntry-const.patch b/srcpkgs/chromium/patches/chromium-110-CredentialUIEntry-const.patch new file mode 100644 index 000000000000..eb68aa27aca4 --- /dev/null +++ b/srcpkgs/chromium/patches/chromium-110-CredentialUIEntry-const.patch @@ -0,0 +1,41 @@ +From b4e56d22275cae5a910463a966a96345430a83ea Mon Sep 17 00:00:00 2001 +From: Ivan Murashov +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 +Commit-Queue: Mohamed Amir Yosef +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 notes_with_duplicates; ++ std::vector 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::move(notes_with_duplicates)); +- note = base::JoinString(std::vector( ++ note = base::JoinString(std::vector( + unique_notes.begin(), unique_notes.end()), + u"\n"); + diff --git a/srcpkgs/chromium/patches/chromium-110-DarkModeLABColorSpace-pow.patch b/srcpkgs/chromium/patches/chromium-110-DarkModeLABColorSpace-pow.patch new file mode 100644 index 000000000000..91f1aee073e6 --- /dev/null +++ b/srcpkgs/chromium/patches/chromium-110-DarkModeLABColorSpace-pow.patch @@ -0,0 +1,37 @@ +From 795c311aae4b718585bc6194189f061000c823a1 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann +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 + diff --git a/srcpkgs/chromium/patches/chromium-110-NativeThemeBase-fabs.patch b/srcpkgs/chromium/patches/chromium-110-NativeThemeBase-fabs.patch new file mode 100644 index 000000000000..c7d0e8b1de8d --- /dev/null +++ b/srcpkgs/chromium/patches/chromium-110-NativeThemeBase-fabs.patch @@ -0,0 +1,29 @@ +From 07f0a87e4409f27854b3a1d17f270a3497f38947 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann +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 +Commit-Queue: Stephan Hartmann +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; diff --git a/srcpkgs/chromium/patches/v8-move-the-Stack-object-from-ThreadLocalTop.patch b/srcpkgs/chromium/patches/v8-move-the-Stack-object-from-ThreadLocalTop.patch new file mode 100644 index 000000000000..73e042cf5562 --- /dev/null +++ b/srcpkgs/chromium/patches/v8-move-the-Stack-object-from-ThreadLocalTop.patch @@ -0,0 +1,205 @@ +From 7b6fbcd0a6700db498ad55db046ecda92c8ee8c1 Mon Sep 17 00:00:00 2001 +From: Nikolaos Papaspyrou +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 +> Reviewed-by: Omer Katz +> Commit-Queue: Nikolaos Papaspyrou +> 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/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 memory_object) { + void Isolate::RecordStackSwitchForScanning() { + Object current = root(RootIndex::kActiveContinuation); + DCHECK(!current.IsUndefined()); +- thread_local_top()->stack_.ClearStackSegments(); +- wasm::StackMemory* stack = Managed::cast( +- WasmContinuationObject::cast(current).stack()) +- .get() +- .get(); ++ stack().ClearStackSegments(); ++ wasm::StackMemory* wasm_stack = ++ Managed::cast( ++ WasmContinuationObject::cast(current).stack()) ++ .get() ++ .get(); + current = WasmContinuationObject::cast(current).parent(); +- thread_local_top()->stack_.SetStackStart( +- reinterpret_cast(stack->base())); ++ heap()->SetStackStart(reinterpret_cast(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::cast(cont.stack()).get().get(); +- thread_local_top()->stack_.AddStackSegment( +- reinterpret_cast(stack->base()), +- reinterpret_cast(stack->jmpbuf()->sp)); ++ auto* wasm_stack = ++ Managed::cast(cont.stack()).get().get(); ++ stack().AddStackSegment( ++ reinterpret_cast(wasm_stack->base()), ++ reinterpret_cast(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/src/execution/isolate.h b/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/src/execution/thread-local-top.cc b/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
( + trap_handler::GetThreadInWasmThreadLocalAddress()); +diff --git a/src/execution/thread-local-top.h b/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/src/heap/heap.cc b/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); diff --git a/srcpkgs/chromium/template b/srcpkgs/chromium/template index 54b2bc4fd3a3..b4b03f3b1410 100644 --- a/srcpkgs/chromium/template +++ b/srcpkgs/chromium/template @@ -1,14 +1,14 @@ # Template file for 'chromium' pkgname=chromium # See https://chromiumdash.appspot.com/releases?platform=Linux for the latest version -version=109.0.5414.119 +version=110.0.5481.77 revision=1 archs="i686* x86_64* aarch64* armv7l*" hostmakedepends=" $(vopt_if clang "clang lld llvm12") $(vopt_if js_optimize openjdk) bison git gperf hwids ninja nodejs perl pkg-config python3 - libatomic-devel libepoxy-devel libevent-devel libglib-devel wayland-devel" + libatomic-devel libepoxy-devel libevent-devel libglib-devel" makedepends=" alsa-lib-devel libdav1d-devel brotli-devel cups-devel elfutils-devel ffmpeg-devel fontconfig-devel freetype-devel gtk+3-devel jsoncpp-devel libXScrnSaver-devel @@ -18,7 +18,7 @@ makedepends=" libpng-devel libva-devel libwebp-devel libxml2-devel libxshmfence-devel libxslt-devel woff2-devel minizip-devel mit-krb5-devel nss-devel opus-devel pciutils-devel re2-devel snappy-devel speech-dispatcher-devel speex-devel - xcb-proto zlib-devel libaom-devel + xcb-proto zlib-devel libaom-devel libffi-devel $(vopt_if pipewire pipewire-devel) $(vopt_if pulseaudio pulseaudio-devel) $(vopt_if sndio sndio-devel)" @@ -28,7 +28,7 @@ maintainer="Duncaen " license="BSD-3-Clause" homepage="https://www.chromium.org/" distfiles="https://commondatastorage.googleapis.com/chromium-browser-official/${pkgname}-${version}.tar.xz" -checksum=cbcdef5ee71acb53790ded3adef86871812b46e9f208dce8ec3f8ab04958be2d +checksum=e348ab2dc4311083e729d714a81e95dd9db108ff71437dde451c97ac939881ce lib32disabled=yes @@ -213,8 +213,7 @@ do_configure() { 'enable_hangout_services_extension=true' 'use_system_harfbuzz=false' - 'use_system_libwayland=true' - 'use_system_wayland_scanner=true' + 'use_system_libffi=true' 'use_qt=false'