Skip to content

Commit 17dba31

Browse files
joyeecheungtargos
authored andcommittedJul 28, 2024
deps: V8: cherry-pick 35888fee7bba
Original commit message: [base] fix builds with GCC 12 on certain Linux distributions With GCC 12 on certain Linux distributions (at least Debian 12, Alpine 3.18, Fedora 37, that ships GCC 12.2), std::is_trivially_copyable is broken and as a result, V8 fails to compile. This patch uses the same polyfill on MSVC to make it compile with GCC 12.2. See #45427 for more context. Refs: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=aeba3e009b0abfccaf01797556445dbf891cc8dc Change-Id: Ie0ab1bb1ec105bacbd80b341adf7dbd8569f031f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5679182 Commit-Queue: Joyee Cheung <[email protected]> Reviewed-by: Nico Hartmann <[email protected]> Cr-Commit-Position: refs/heads/main@{#95181} Refs: v8/v8@35888fe PR-URL: #53728 Refs: #45427 Refs: nodejs/help#4406 Refs: #53633 Refs: nodejs/help#4430 Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Santiago Gimeno <[email protected]> Reviewed-By: Daeyeon Jeong <[email protected]> Reviewed-By: Jiawen Geng <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Chengzhong Wu <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent 14fa5b2 commit 17dba31

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed
 

‎common.gypi

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
# Reset this number to 0 on major V8 upgrades.
3838
# Increment by one for each non-official patch applied to deps/v8.
39-
'v8_embedder_string': '-node.17',
39+
'v8_embedder_string': '-node.18',
4040

4141
##### V8 defaults for Node.js #####
4242

‎deps/v8/src/base/macros.h

+6-1
Original file line numberDiff line numberDiff line change
@@ -173,14 +173,19 @@ namespace base {
173173
// base::is_trivially_copyable will differ for these cases.
174174
template <typename T>
175175
struct is_trivially_copyable {
176-
#if V8_CC_MSVC
176+
#if V8_CC_MSVC || (__GNUC__ == 12 && __GNUC_MINOR__ <= 2)
177177
// Unfortunately, MSVC 2015 is broken in that std::is_trivially_copyable can
178178
// be false even though it should be true according to the standard.
179179
// (status at 2018-02-26, observed on the msvc waterfall bot).
180180
// Interestingly, the lower-level primitives used below are working as
181181
// intended, so we reimplement this according to the standard.
182182
// See also https://developercommunity.visualstudio.com/content/problem/
183183
// 170883/msvc-type-traits-stdis-trivial-is-bugged.html.
184+
//
185+
// GCC 12.1 and 12.2 are broken too, they are shipped by some stable Linux
186+
// distributions, so the same polyfill is also used.
187+
// See
188+
// https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=aeba3e009b0abfccaf01797556445dbf891cc8dc
184189
static constexpr bool value =
185190
// Copy constructor is trivial or deleted.
186191
(std::is_trivially_copy_constructible<T>::value ||

0 commit comments

Comments
 (0)
Please sign in to comment.