Files
kernel-agent/patches/arch/arm64/xor-neon-ffixed-x18-scs-build-fix-danctnix
claude-noether 878e86f103 patches/arch/arm64/xor-neon-...: restore trailer (SCS is no longer last)
When the SCS patch was the LAST patch in ohm's cumulative, the
trailing '-- \n2.54.0\n' git-format-patch sentinel was an orphan that
patch(1) read as a malformed header — fixed in 84734ba by stripping
the trailer.

Now besser#18 (queue-pending-record-lock-bh-danctnix) is added at the
end of ohm.yaml's includes. SCS is no longer last. Without its
trailer to mark end-of-patch, patch(1) reads straight into besser#18's
'From d95453c... Mon Sep 17 00:00:00 2001' line and errors as
'malformed patch at line N: From ...'.

Restoring the trailer makes the separator unambiguous again.

Cumulative b2sum: 0eb091ddaba4a8f1c3c2a78... -> ceec602afa8574c74354...
Size: 162 704 -> 162 716 (+12 = the trailer bytes).

This rule — 'only the LAST patch must lack a trailer; all others must
keep theirs' — is sensitive to ohm.yaml include ordering, which is
brittle. Filed as a kernel-agent followup: ka-promote should rewrite
trailers automatically (always add to non-last, always strip from
last) so source patches don't need to be ordering-aware.
2026-05-18 18:15:45 +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.