Files
codex/third_party/v8/abseil_lifetime_capture.patch
T
zbarsky-openai 1099fe0694 Use hermetic LLVM for Windows MSVC Bazel builds (#60507)
## Why

Windows MSVC builds relied on installed C++ toolchains, and V8 snapshot generation required native Windows execution. Cross-compiling V8 also needs a Windows snapshot generator to preserve Windows unwind metadata.

## What changed

- Use the registered hermetic LLVM toolchain and declared Microsoft SDK for Windows MSVC builds, with static CRT linkage and the toolchain's declared `lld-link` for Rust.
- Run Windows V8 snapshot generators natively or through `rules_wine` on Linux, preserving target CPU, OS, and sandbox settings. Keep separate archive and binding pairs for the workspace's ISO stdio ABI and the distributed MSVC stdio ABI.
- Update build dependencies and bindgen, scope V8's Chromium libc++ settings to its own targets, and adapt native voice dependencies for clang-cl and Windows ARM64.
- Build SQLite directly with Bazel and give `openssl-sys` an explicit build using Bazel's OpenSSL.
- Remove build-worker source-directory dependencies from Bazel resource lookup, schema output discovery, and snapshot paths; embed assets in debug builds as well.

GitOrigin-RevId: fd224d9d28d73a67baf90f6d73c6079d60f20351
2026-11-10 03:02:25 +00:00

132 lines
6.9 KiB
Diff

# Backport of abseil/abseil-cpp 0784689a65b4ea1329fbc5174b8a57c88ec796a9.
# Adapted to 20250814.1: prefer Clang 23 lifetime_capture_by_this, retain older compiler fallback.
diff --git a/absl/base/attributes.h b/absl/base/attributes.h
--- a/absl/base/attributes.h
+++ b/absl/base/attributes.h
@@ -911,6 +911,23 @@
#define ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(Owner)
#endif
+// Internal attribute; name and documentation TBD.
+//
+// See the upstream documentation:
+// https://clang.llvm.org/docs/AttributeReference.html#lifetime_capture_by_this
+//
+// Note: ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this) is deprecated. Use
+// ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS instead.
+#if ABSL_HAVE_CPP_ATTRIBUTE(clang::lifetime_capture_by_this)
+#define ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS \
+ [[clang::lifetime_capture_by_this]]
+#elif ABSL_HAVE_CPP_ATTRIBUTE(clang::lifetime_capture_by)
+#define ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS \
+ ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this)
+#else
+#define ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS
+#endif
+
// ABSL_ATTRIBUTE_VIEW indicates that a type is solely a "view" of data that it
// points to, similarly to a span, string_view, or other non-owning reference
// type.
diff --git a/absl/base/internal/spinlock.h b/absl/base/internal/spinlock.h
--- a/absl/base/internal/spinlock.h
+++ b/absl/base/internal/spinlock.h
@@ -242,1 +242,1 @@
- SpinLock& l ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this))
+ SpinLock& l ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS)
diff --git a/absl/container/internal/btree_container.h b/absl/container/internal/btree_container.h
--- a/absl/container/internal/btree_container.h
+++ b/absl/container/internal/btree_container.h
@@ -508,1 +508,1 @@
- ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this)), \
+ ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS), \
@@ -510,1 +510,1 @@
- ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this))) \
+ ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS)) \
@@ -610,1 +610,1 @@
- ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this)), \
+ ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS), \
@@ -637,1 +637,1 @@
- const key_arg<K> &k ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this))
+ const key_arg<K> &k ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS)
@@ -646,2 +646,1 @@
- mapped_type &operator[](key_arg<K> &&k ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(
- this)) ABSL_ATTRIBUTE_LIFETIME_BOUND {
+ mapped_type &operator[](key_arg<K> &&k ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS) ABSL_ATTRIBUTE_LIFETIME_BOUND {
diff --git a/absl/container/internal/raw_hash_map.h b/absl/container/internal/raw_hash_map.h
--- a/absl/container/internal/raw_hash_map.h
+++ b/absl/container/internal/raw_hash_map.h
@@ -117,1 +117,1 @@
- ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this)), \
+ ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS), \
@@ -118,2 +118,1 @@
- V VQual v ABSL_INTERNAL_IF_##VValue(ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY( \
- this))) ABSL_ATTRIBUTE_LIFETIME_BOUND { \
+ V VQual v ABSL_INTERNAL_IF_##VValue(ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS)) ABSL_ATTRIBUTE_LIFETIME_BOUND { \
@@ -216,1 +215,1 @@
- key_arg<K> &&k ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this),
+ key_arg<K> &&k ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS,
@@ -235,1 +234,1 @@
- const key_arg<K> &k ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this),
+ const key_arg<K> &k ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS,
@@ -249,1 +248,1 @@
- key_arg<K> &&k ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this),
+ key_arg<K> &&k ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS,
@@ -265,1 +264,1 @@
- ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this),
+ ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS,
@@ -305,1 +304,1 @@
- key_arg<K> &&key ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this))
+ key_arg<K> &&key ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS)
@@ -322,1 +321,1 @@
- const key_arg<K> &key ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this))
+ const key_arg<K> &key ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS)
diff --git a/absl/container/internal/raw_hash_set.h b/absl/container/internal/raw_hash_set.h
--- a/absl/container/internal/raw_hash_set.h
+++ b/absl/container/internal/raw_hash_set.h
@@ -2428,1 +2428,1 @@
- T&& value ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this))
+ T&& value ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS)
@@ -2457,1 +2457,1 @@
- const T& value ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this))
+ const T& value ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS)
@@ -2477,1 +2477,1 @@
- init_type&& value ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this))
+ init_type&& value ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS)
@@ -2499,1 +2499,1 @@
- T&& value ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this))
+ T&& value ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS)
diff --git a/absl/status/statusor.h b/absl/status/statusor.h
--- a/absl/status/statusor.h
+++ b/absl/status/statusor.h
@@ -408,1 +408,1 @@
- StatusOr& operator=(U&& v ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this)) {
+ StatusOr& operator=(U&& v ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS) {
diff --git a/absl/synchronization/mutex.h b/absl/synchronization/mutex.h
--- a/absl/synchronization/mutex.h
+++ b/absl/synchronization/mutex.h
@@ -604,1 +604,1 @@
- explicit MutexLock(Mutex& mu ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this))
+ explicit MutexLock(Mutex& mu ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS)
@@ -619,1 +619,1 @@
- explicit MutexLock(Mutex& mu ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this),
+ explicit MutexLock(Mutex& mu ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS,
@@ -646,1 +646,1 @@
- explicit ReaderMutexLock(Mutex& mu ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this))
+ explicit ReaderMutexLock(Mutex& mu ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS)
@@ -655,1 +655,1 @@
- explicit ReaderMutexLock(Mutex& mu ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this),
+ explicit ReaderMutexLock(Mutex& mu ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS,
@@ -682,1 +682,1 @@
- explicit WriterMutexLock(Mutex& mu ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this))
+ explicit WriterMutexLock(Mutex& mu ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS)
@@ -692,1 +692,1 @@
- explicit WriterMutexLock(Mutex& mu ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this),
+ explicit WriterMutexLock(Mutex& mu ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS,
@@ -1096,2 +1096,1 @@
- explicit ReleasableMutexLock(Mutex& mu ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(
- this)) ABSL_EXCLUSIVE_LOCK_FUNCTION(mu)
+ explicit ReleasableMutexLock(Mutex& mu ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS) ABSL_EXCLUSIVE_LOCK_FUNCTION(mu)
@@ -1107,1 +1106,1 @@
- Mutex& mu ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this),
+ Mutex& mu ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY_THIS,