From 5fb4242977222b5c8a5f1bd4e56ebe404b5c4bac Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Wed, 7 Oct 2026 23:39:19 +0200 Subject: [PATCH] deps: V8: cherry-pick 415b7d302d2e Original commit message: [platform] support madvise(3C) across ALL illumos revisions In illumos, madvise(3C) now takes `void *` for its first argument post-illumos#14418, but uses `caddr_t` pre-illumos#14418. This fix will detect if the illumos mman.h file in use is pre-or-post-illumos#14418 so builds can work either way. Co-Authored-By: Dan McDonald Refs: https://github.com/nodejs/node/pull/65161 Refs: https://github.com/v8/v8/commit/415b7d302d2e92344ce9a0c6da4855a2b0739037 Signed-off-by: Joyee Cheung PR-URL: https://github.com/nodejs/node/pull/66601 Reviewed-By: Richard Lau Reviewed-By: Filip Skokan Reviewed-By: Chengzhong Wu --- common.gypi | 2 +- deps/v8/src/base/platform/platform-posix.cc | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/common.gypi b/common.gypi index 565cd0a7535..fcdd1d8a047 100644 --- a/common.gypi +++ b/common.gypi @@ -44,7 +44,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.1', + 'v8_embedder_string': '-node.2', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/src/base/platform/platform-posix.cc b/deps/v8/src/base/platform/platform-posix.cc index 7add12aa479..df122799fdc 100644 --- a/deps/v8/src/base/platform/platform-posix.cc +++ b/deps/v8/src/base/platform/platform-posix.cc @@ -82,7 +82,19 @@ #define MAP_ANONYMOUS MAP_ANON #endif -#if defined(V8_OS_SOLARIS) +/* + * NOTE: illumos starting with illumos#14418 (pushed April 20th, 2022) + * prototypes madvise(3C) properly with a `void *` first argument. + * The only way to detect this outside of configure-time checking is to + * check for the existence of MEMCNTL_SHARED, which gets defined for the first + * time in illumos#14418 under the same circumstances save _STRICT_POSIX, which + * thankfully neither Solaris nor illumos builds of Node or V8 do. + * + * If some future illumos push changes the MEMCNTL_SHARED assumptions made + * above, the illumos check below will have to be revisited. This check + * will work on both pre-and-post illumos#14418 illumos environments. + */ +#if defined(V8_OS_SOLARIS) && !(defined(__illumos__) && defined(MEMCNTL_SHARED)) #if (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE > 2) || defined(__EXTENSIONS__) extern "C" int madvise(caddr_t, size_t, int); #else