Files
kernel-agent/patches/arch/arm64/xor-neon-ffixed-x18-scs-build-fix-danctnix
claude-noether a840f76907 patches/arch/arm64/xor-neon-...: fix malformed @@ hunk counts
The hunk header @@ -9,6 +9,10 @@ understated both old (actual 7) and
new (actual 12) line counts by 1. patch(1) standalone tolerates this
via fuzz, but in the concatenated cumulative the wrong counts cause
patch to mis-judge the hunk boundary and read the trailing context
line ('lib-...uaccess_flushcache.o') as the start of a new patch
header — 'malformed patch at line 4526'.

Cumulative b2sum: bd42cd39106298879eeb... -> ad9e2cb533957f218058...
(size unchanged at 157 458; only the @@ counts in the SCS patch
differ)
2026-05-18 16:58:19 +02:00
..

xor-neon-ffixed-x18-scs-build-fix-danctnix — GCC 15.2.1 build fix

Restores -ffixed-x18 for arch/arm64/lib/xor-neon.c when CONFIG_SHADOW_CALL_STACK=y. GCC 15.2.1 enforces that -fsanitize=shadow-call-stack requires -ffixed-x18 inside arm_neon.h's #pragma GCC target() push/pop blocks; CC_FLAGS_REMOVE strips the kernel-wide -ffixed-x18 for xor-neon.o and CC_FLAGS_FPU does not restore it.

Note on current ohm config: linux-pinetab2-danctnix-besser config has # CONFIG_SHADOW_CALL_STACK is not set as of pkgrel=3, which makes this patch a runtime no-op ($(if $(CONFIG_SHADOW_CALL_STACK), -ffixed-x18) evaluates to nothing). Patch is kept in the manifest as belt-and-suspenders for the day SCS gets re-enabled (tracked in besser issue for GCC fix monitoring).

See reference_arm64_scs_arm_neon_gcc15 for the full toolchain analysis. This patch is the upstream-friendly Makefile fix; the config-side SHADOW_CALL_STACK=n workaround is the immediate runtime mitigation. Both are present in pkgrel=3 for safety.