Files
kernel-agent/patches/arch/arm64/xor-neon-ffixed-x18-scs-build-fix-danctnix
claude-noether 989b8842fb patches/arch/arm64/xor-neon-...: append git-format-patch trailer
The SCS-build-fix patch was missing the standard '-- \n2.54.0\n'
trailer that git format-patch emits between patches. Without it,
BSD-flavour patch(1) in makepkg's prepare() reads the trailing context
line of the @@ hunk as the start of a new patch header and dies with
'malformed patch at line N'. Affects builds where ka-promote
concatenates this series with any others. Reproduced 2026-05-18 on
the first attempted ohm pkgrel=4 build.

Cumulative b2sum changes accordingly:
  a807297b25be... -> bd42cd39106298879eeb...
(size 157446 -> 157458; 12 bytes for the trailer)
2026-05-18 16:52:46 +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.