diff --git a/meta-oe/recipes-devtools/nodejs/nodejs/0001-detect-aarch64-Neon-correctly.patch b/meta-oe/recipes-devtools/nodejs/nodejs/0001-detect-aarch64-Neon-correctly.patch new file mode 100644 index 0000000000..15de2c1119 --- /dev/null +++ b/meta-oe/recipes-devtools/nodejs/nodejs/0001-detect-aarch64-Neon-correctly.patch @@ -0,0 +1,51 @@ +From 41ec2d5302b77be27ca972102c29ce12471ed4b0 Mon Sep 17 00:00:00 2001 +From: Gyorgy Sarvari +Date: Thu, 12 Feb 2026 11:09:44 +0100 +Subject: [PATCH 2/2] detect aarch64 Neon correctly + +The llhttp vendored dependency of nodejs takes advantage of Arm NEON +instructions when they are available, however they are detected by +checking for an outdated CPU feature macro: it checks for __ARM_NEON__, +however it is not defined by new compilers for aarch64, rather they +set __ARM_NEON. The Arm C extension guide[1] refers to __ARM_NEON macro +aswell. + +This patch changes the detection to check for both macros when detecting +the availability of NEON instructions. + +The code this patch modifies is generated, so the patch itself isn't +suitable for upstream submission, as the root cause of the error is +in the generator itself. A PR has been submitted[2] to the generator +project to rectify this issue. + +[1]: https://developer.arm.com/documentation/ihi0053/d/ - pdf, section 6.9 +[2]: https://github.com/nodejs/llparse/pull/84 + +Upstream-Status: Inappropriate [see above] +Signed-off-by: Gyorgy Sarvari +--- + deps/llhttp/src/llhttp.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/deps/llhttp/src/llhttp.c b/deps/llhttp/src/llhttp.c +index a0e59e50..b069bbbb 100644 +--- a/deps/llhttp/src/llhttp.c ++++ b/deps/llhttp/src/llhttp.c +@@ -10,7 +10,7 @@ + #endif /* _MSC_VER */ + #endif /* __SSE4_2__ */ + +-#ifdef __ARM_NEON__ ++#if defined(__ARM_NEON__) || defined(__ARM_NEON) + #include + #endif /* __ARM_NEON__ */ + +@@ -2625,7 +2625,7 @@ static llparse_state_t llhttp__internal__run( + goto s_n_llhttp__internal__n_header_value_otherwise; + } + #endif /* __SSE4_2__ */ +- #ifdef __ARM_NEON__ ++ #if defined(__ARM_NEON__) || defined(__ARM_NEON) + while (endp - p >= 16) { + uint8x16_t input; + uint8x16_t single; diff --git a/meta-oe/recipes-devtools/nodejs/nodejs_22.22.0.bb b/meta-oe/recipes-devtools/nodejs/nodejs_22.22.0.bb index 960c0b1e6d..05fa608047 100644 --- a/meta-oe/recipes-devtools/nodejs/nodejs_22.22.0.bb +++ b/meta-oe/recipes-devtools/nodejs/nodejs_22.22.0.bb @@ -32,6 +32,7 @@ SRC_URI = "https://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz \ file://0001-custom-env.patch \ file://0001-build-remove-redundant-mXX-flags-for-V8.patch \ file://0001-fix-arm-Neon-intrinsics-types.patch \ + file://0001-detect-aarch64-Neon-correctly.patch \ file://run-ptest \ " SRC_URI:append:class-target = " \