0

Roll libc++ from 4f05e20cbe1d to 6a83e4982509 (12 revisions)

This roll marks is_pod deprecated, so this CL also updates three
places to no longer use is_pod.

See https://stackoverflow.com/questions/48225673/why-is-stdis-pod-deprecated-in-c20
is_pod becomes either is_standard_layout (for "no vtable" etc) and
is_trivial (for "no ctors" etc). There's also is_trivially_copyable, which should be used for "can memcpy".

chrome/install_static/install_details.cc hands a pointer created
in one module to a different module with a distinct allocation domain.
It moves to is_standard_layout.

The other two looked like they're about copying memory instead,
so I went with is_trivially_copyable there.

4f05e20cbe..6a83e49825

2025-03-13 winner245@hotmail.com [libc++] Optimize ranges::rotate for vector<bool>::iterator ()
2025-03-11 zhenhangwang@huawei.com [regex] fix uncaught exception when string is like "\\_" ()
2025-03-10 dalg24@gmail.com [libc++] Add `-Watomic-memory-ordering` diagnostic tests for `atomic_ref` ()
2025-03-10 hiraditya@msn.com [NFC][libcxx][test] clang-format: search.pass.cpp ()
2025-03-10 de34@live.cn [libc++][docs] Remove mis-added entry for P2513R4 ()
2025-03-10 kadircet@google.com Revert "[libc++] Don't try to wait on a thread that hasn't started in std::async ()"
2025-03-09 koraq@xs4all.nl [libc++][CI] Update action runner base image. ()
2025-03-09 koraq@xs4all.nl [libc++] Protect more code against -Wdeprecated. ()
2025-03-09 de34@live.cn [libc++][NFC] Comment cleanup for `<type_traits>` ()
2025-03-08 hghristov.rmm@gmail.com [libc++][NFC] Fixed bad link in 21.rst ()
2025-03-08 hghristov.rmm@gmail.com [libc++][type_traits] Implements "A type trait to detect reference binding to temporary" ()
2025-03-07 de34@live.cn [libc++] Deprecate `is_pod(_v)` since C++20 ()

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/libcxx-chromium
Please CC hans@chromium.org,thakis@chromium.org on the revert to ensure that a human
is aware of the problem.

To file a bug in Chromium: https://bugs.chromium.org/p/chromium/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Bug: 402772406
Cq-Include-Trybots: luci.chromium.try:linux-centipede-asan-rel
Change-Id: Iac9c4920a567a0c23052c53594676d3503beadad
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6353559
Reviewed-by: Stefano Duo <stefanoduo@google.com>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Greg Thompson <grt@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: Hans Wennborg <hans@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1439595}
This commit is contained in:
Nico Weber 2025-03-28 11:57:56 -07:00 committed by Chromium LUCI CQ
parent 5505828b4c
commit b49a44d95c
6 changed files with 14 additions and 10 deletions
DEPS
buildtools
chrome/install_static
components
third_party/libc++

2
DEPS

@ -527,7 +527,7 @@ vars = {
# If you change this, also update the libc++ revision in
# //buildtools/deps_revisions.gni.
'libcxx_revision': '4f05e20cbe1d02fa0871ac88b30eead9e38cab3a',
'libcxx_revision': '6a83e4982509c31dc2231d19fa14a2ed90df881f',
# GN CIPD package version.
'gn_version': 'git_revision:6e8e0d6d4a151ab2ed9b4a35366e630c55888444',

@ -5,5 +5,5 @@
declare_args() {
# Used to cause full rebuilds on libc++ rolls. This should be kept in sync
# with the libcxx_revision var in //DEPS.
libcxx_revision = "4f05e20cbe1d02fa0871ac88b30eead9e38cab3a"
libcxx_revision = "6a83e4982509c31dc2231d19fa14a2ed90df881f"
}

@ -62,9 +62,13 @@ void InstallDetails::SetForProcess(
// static
const InstallDetails::Payload* InstallDetails::GetPayload() {
assert(g_module_details);
static_assert(std::is_pod<Payload>::value, "Payload must be a POD-struct");
static_assert(std::is_pod<InstallConstants>::value,
"InstallConstants must be a POD-struct");
// We're handing a pointer to a struct created in one module
// to a different module, with distinct allocation domains.
static_assert(std::is_standard_layout<Payload>::value,
"Payload must have standard layout");
static_assert(std::is_standard_layout<InstallConstants>::value,
"InstallConstants must have standard layout");
return g_module_details->payload_;
}

@ -26,8 +26,8 @@ void RequestSingleCrashUpload_ExportThunk(const char* local_id) {
size_t GetCrashReports_ExportThunk(crash_reporter::Report* reports,
size_t reports_size) {
static_assert(std::is_pod<crash_reporter::Report>::value,
"crash_reporter::Report must be POD");
static_assert(std::is_trivially_copyable<crash_reporter::Report>::value,
"crash_reporter::Report must be trivially copyable");
// Since this could be called across module boundaries, retrieve the full
// list of reports into this vector, and then manually copy however much fits
// into the caller's copy.

@ -291,8 +291,8 @@ static void JNI_CronetUrlRequestContext_AddPkp(
jinclude_subdomains,
base::Time::UnixEpoch() + base::Milliseconds(jexpiration_time)));
for (auto bytes_array : jhashes.ReadElements<jbyteArray>()) {
static_assert(std::is_pod<net::SHA256HashValue>::value,
"net::SHA256HashValue is not POD");
static_assert(std::is_trivially_copyable<net::SHA256HashValue>::value,
"net::SHA256HashValue is not trivially copyable");
static_assert(sizeof(net::SHA256HashValue) * CHAR_BIT == 256,
"net::SHA256HashValue contains overhead");
if (env->GetArrayLength(bytes_array.obj()) !=

@ -1 +1 @@
Subproject commit 4f05e20cbe1d02fa0871ac88b30eead9e38cab3a
Subproject commit 6a83e4982509c31dc2231d19fa14a2ed90df881f