Files
kernel-agent/patches/arch/arm64/xor-neon-ffixed-x18-scs-build-fix-danctnix
claude-noether 3ee0ef7d86 patches/arch/arm64/xor-neon-...: correct @@ hunk counts (overcorrected in a840f76)
a840f76 changed @@ from -9,6 +9,10 to -9,7 +9,12 but overshot by 1.
Actual hunk is 6 context + 5 add = -9,6 +9,11. Wrong counts were
silently masked in pkgrel=4 build #4 by the trailer-stripped EOF
letting patch fuzz recover. pkgrel=5 with besser#18 after SCS
exposes it as 'malformed patch at line N: 2.54.0'.

Cumulative b2sum: ceec602afa8574c74354... -> 50397711a6a3ba522283...
Size unchanged 162 716.
2026-05-18 19:17:22 +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.