diff mbox series

[meta-oe] nodejs: upgrade 22.22.2 -> 22.22.3

Message ID 20260513232920.428901-1-schonm@gmail.com
State Under Review
Headers show
Series [meta-oe] nodejs: upgrade 22.22.2 -> 22.22.3 | expand

Commit Message

Jason Schonberg May 13, 2026, 11:29 p.m. UTC
With this upgrade, nodejs updated the llhttp dependency to version 9.3.1
So some of the patches are nolonger necessary.

Changelog: https://github.com/nodejs/node/releases/tag/v22.22.3

Signed-off-by: Jason Schonberg <schonm@gmail.com>
---
 .../0001-detect-aarch64-Neon-correctly.patch  | 51 ----------------
 .../0001-fix-arm-Neon-intrinsics-types.patch  | 59 ------------------
 ...header-value-__builtin_ctzll-undefin.patch | 60 -------------------
 .../{nodejs_22.22.2.bb => nodejs_22.22.3.bb}  |  5 +-
 4 files changed, 1 insertion(+), 174 deletions(-)
 delete mode 100644 meta-oe/recipes-devtools/nodejs/nodejs/0001-detect-aarch64-Neon-correctly.patch
 delete mode 100644 meta-oe/recipes-devtools/nodejs/nodejs/0001-fix-arm-Neon-intrinsics-types.patch
 delete mode 100644 meta-oe/recipes-devtools/nodejs/nodejs/0001-llhttp-fix-NEON-header-value-__builtin_ctzll-undefin.patch
 rename meta-oe/recipes-devtools/nodejs/{nodejs_22.22.2.bb => nodejs_22.22.3.bb} (96%)
diff mbox series

Patch

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
deleted file mode 100644
index 15de2c1119..0000000000
--- a/meta-oe/recipes-devtools/nodejs/nodejs/0001-detect-aarch64-Neon-correctly.patch
+++ /dev/null
@@ -1,51 +0,0 @@ 
-From 41ec2d5302b77be27ca972102c29ce12471ed4b0 Mon Sep 17 00:00:00 2001
-From: Gyorgy Sarvari <skandigraun@gmail.com>
-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 <skandigraun@gmail.com>
----
- 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 <arm_neon.h>
- #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/0001-fix-arm-Neon-intrinsics-types.patch b/meta-oe/recipes-devtools/nodejs/nodejs/0001-fix-arm-Neon-intrinsics-types.patch
deleted file mode 100644
index ddbad575f0..0000000000
--- a/meta-oe/recipes-devtools/nodejs/nodejs/0001-fix-arm-Neon-intrinsics-types.patch
+++ /dev/null
@@ -1,59 +0,0 @@ 
-From 3f4283dac7d88a89b42f1f2966a862cee5afe486 Mon Sep 17 00:00:00 2001
-From: Gyorgy Sarvari <skandigraun@gmail.com>
-Date: Thu, 12 Feb 2026 11:03:53 +0100
-Subject: [PATCH 1/2] fix arm Neon intrinsics types
-
-The current code calls these intrinsics with incorrect datatypes
-(it uses a vector of uint16 instead of uint8), causing compilation
-to fail with the following error:
-
-| ../deps/llhttp/src/llhttp.c: In function 'llhttp__internal__run':
-| ../deps/llhttp/src/llhttp.c:2645:9: note: use '-flax-vector-conversions' to permit conversions between vectors with differing element types or numbers of subparts
-|  2645 |         );
-|       |         ^
-| ../deps/llhttp/src/llhttp.c:2643:11: error: incompatible type for argument 1 of 'vandq_u16'
-|  2643 |           vcgeq_u8(input, vdupq_n_u8(' ')),
-
-To avoid this, set the correct intrinsics call that matches the
-actual arguments.
-
-The code that this patch modifies is generated code, so in itself
-this change isn't appropriate for upstream. The actual problem
-is in the code generator itself, for which a PR is already pending
-for merging[1]. This patch is a port of that PR.
-
-[1]: https://github.com/nodejs/llparse/pull/79
-
-Upstream-Status: Inappropriate [see above]
-Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
----
- deps/llhttp/src/llhttp.c | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/deps/llhttp/src/llhttp.c b/deps/llhttp/src/llhttp.c
-index aa4c4682..887603fd 100644
---- a/deps/llhttp/src/llhttp.c
-+++ b/deps/llhttp/src/llhttp.c
-@@ -2639,17 +2639,17 @@ static llparse_state_t llhttp__internal__run(
-         /* Find first character that does not match `ranges` */
-         single = vceqq_u8(input, vdupq_n_u8(0x9));
-         mask = single;
--        single = vandq_u16(
-+        single = vandq_u8(
-           vcgeq_u8(input, vdupq_n_u8(' ')),
-           vcleq_u8(input, vdupq_n_u8('~'))
-         );
--        mask = vorrq_u16(mask, single);
--        single = vandq_u16(
-+        mask = vorrq_u8(mask, single);
-+        single = vandq_u8(
-           vcgeq_u8(input, vdupq_n_u8(0x80)),
-           vcleq_u8(input, vdupq_n_u8(0xff))
-         );
--        mask = vorrq_u16(mask, single);
--        narrow = vshrn_n_u16(mask, 4);
-+        mask = vorrq_u8(mask, single);
-+        narrow = vshrn_n_u16(vreinterpretq_u16_u8(mask), 4);
-         match_mask = ~vget_lane_u64(vreinterpret_u64_u8(narrow), 0);
-         match_len = __builtin_ctzll(match_mask) >> 2;
-         if (match_len != 16) {
diff --git a/meta-oe/recipes-devtools/nodejs/nodejs/0001-llhttp-fix-NEON-header-value-__builtin_ctzll-undefin.patch b/meta-oe/recipes-devtools/nodejs/nodejs/0001-llhttp-fix-NEON-header-value-__builtin_ctzll-undefin.patch
deleted file mode 100644
index 683dddcf04..0000000000
--- a/meta-oe/recipes-devtools/nodejs/nodejs/0001-llhttp-fix-NEON-header-value-__builtin_ctzll-undefin.patch
+++ /dev/null
@@ -1,60 +0,0 @@ 
-From a63a5faea54055973bf5f0a514444532563cc20d Mon Sep 17 00:00:00 2001
-From: Telukula Jeevan Kumar Sahu <j-sahu@ti.com>
-Date: Fri, 27 Feb 2026 20:58:43 +0530
-Subject: [PATCH] llhttp: fix NEON header value __builtin_ctzll undefined
- behavior
-
-When all 16 bytes match the allowed range, match_mask becomes 0 after
-the bitwise NOT. Calling __builtin_ctzll(0) is undefined behavior per
-the C standard.
-
-The code expects match_len == 16 when all bytes match (so the branch
-is skipped and p += 16 continues the loop), but this relied on
-ctzll(0) returning 64, which is not guaranteed.
-
-GCC at -O2 exploits this UB by deducing that __builtin_ctzll() result
-is always in range [0, 63], and after >> 2 always in [0, 15], which
-is never equal to 16. The compiler then optimizes
-"if (match_len != 16)" to always-true, causing every valid 16-byte
-chunk to be falsely rejected as containing an invalid character.
-
-This manifests as HTTP 400 Bad Request (HPE_INVALID_HEADER_TOKEN) for
-any HTTP header value longer than 16 characters on ARM targets with
-NEON enabled.
-
-Fix by explicitly checking for match_mask == 0 and setting
-match_len = 16, avoiding the undefined behavior entirely. This bug
-affects both aarch64 and armv7 NEON targets.
-
-The fix has been merged upstream in llparse 7.3.1 [1] and is included
-in llhttp 9.3.1. This patch can be dropped when nodejs updates its
-bundled llhttp to >= 9.3.1.
-
-[1]: https://github.com/nodejs/llparse/pull/83
-
-Upstream-Status: Inappropriate
-Signed-off-by: Telukula Jeevan Kumar Sahu <j-sahu@ti.com>
----
- deps/llhttp/src/llhttp.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/deps/llhttp/src/llhttp.c b/deps/llhttp/src/llhttp.c
-index 14b731e..b0a46c6 100644
---- a/deps/llhttp/src/llhttp.c
-+++ b/deps/llhttp/src/llhttp.c
-@@ -2651,7 +2651,11 @@ static llparse_state_t llhttp__internal__run(
-         mask = vorrq_u8(mask, single);
-         narrow = vshrn_n_u16(vreinterpretq_u16_u8(mask), 4);
-         match_mask = ~vget_lane_u64(vreinterpret_u64_u8(narrow), 0);
--        match_len = __builtin_ctzll(match_mask) >> 2;
-+        if (match_mask == 0) {
-+          match_len = 16;
-+        } else {
-+          match_len = __builtin_ctzll(match_mask) >> 2;
-+        }
-         if (match_len != 16) {
-           p += match_len;
-           goto s_n_llhttp__internal__n_header_value_otherwise;
--- 
-2.34.1
-
diff --git a/meta-oe/recipes-devtools/nodejs/nodejs_22.22.2.bb b/meta-oe/recipes-devtools/nodejs/nodejs_22.22.3.bb
similarity index 96%
rename from meta-oe/recipes-devtools/nodejs/nodejs_22.22.2.bb
rename to meta-oe/recipes-devtools/nodejs/nodejs_22.22.3.bb
index 3a1385f70a..a13b71b762 100644
--- a/meta-oe/recipes-devtools/nodejs/nodejs_22.22.2.bb
+++ b/meta-oe/recipes-devtools/nodejs/nodejs_22.22.3.bb
@@ -31,9 +31,6 @@  SRC_URI = "https://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz \
            file://0001-positional-args.patch \
            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://0001-llhttp-fix-NEON-header-value-__builtin_ctzll-undefin.patch \
            file://run-ptest \
            "
 SRC_URI:append:class-target = " \
@@ -42,7 +39,7 @@  SRC_URI:append:class-target = " \
 SRC_URI:append:toolchain-clang:powerpc64le = " \
            file://0001-ppc64-Do-not-use-mminimal-toc-with-clang.patch \
            "
-SRC_URI[sha256sum] = "b6bedd3a8cacd5df7df015a5088264b12c74a277ba60684cb9642ae8eb743132"
+SRC_URI[sha256sum] = "f3e6a578db1ab335a4a72785c1e87ad18a2cf6d2fc25747a1d741fb34af0bd0f"
 
 S = "${UNPACKDIR}/node-v${PV}"