CI: Disable ABI checks on Zephyr targets - #1312
Conversation
055ba4a to
8bdc701
Compare
CBMC Results (ML-DSA-44)
Full Results (210 proofs)
|
CBMC Results (ML-DSA-44, REDUCE-RAM)
Full Results (210 proofs)
|
CBMC Results (ML-DSA-65, REDUCE-RAM)
Full Results (210 proofs)
|
CBMC Results (ML-DSA-65)
Full Results (210 proofs)
|
CBMC Results (ML-DSA-87, REDUCE-RAM)
Full Results (210 proofs)
|
CBMC Results (ML-DSA-87)
Full Results (210 proofs)
|
8bdc701 to
c748ebe
Compare
| # Zephyr's CMake selects the target arch; disable the host-arch | ||
| # auto-detection that would otherwise leak into the forwarded CFLAGS. | ||
| extra_args: --no-auto | ||
| extra_args: --no-auto --no-abicheck |
There was a problem hiding this comment.
Other tests are disabled via an argument to functest, so this is somewhat inconsistent.
Could you please use an Github action argument instead?
There was a problem hiding this comment.
Thanks — addressed in 059167a7d. The functest action now exposes a default-enabled abicheck input and translates it to --abicheck / --no-abicheck, consistently with the other test selectors. The Zephyr workflow sets abicheck: false; extra_args is back to only --no-auto.
The exact-head Zephyr run passed all five targets. In the M55 job, the log shows abicheck: false, extra_args: --no-auto, and the resulting command contains --no-abicheck. Full PR CI is still running without failures.
You’re right: there is no fundamental reason the ABI checker could not run on Zephyr. The issue is that it is not currently integrated as a Zephyr application. Normal Zephyr tests are built as Arm firmware through Zephyr CMake. abicheck, however, follows the generic Make path and derives its architecture from the CI host. On ubuntu-latest, it therefore builds an x86_64 executable. The Zephyr wrapper then passes that executable to qemu-system-arm, which results in a HardFault at PC=0. Only M55 encounters this because it is the sole Zephyr matrix target using opt=all; ABI checking runs only for optimized builds. The other targets use no_opt and never enter this path. Because the current setup does not provide valid ABI-check coverage on Zephyr, I disabled it there as an issue orthogonal to the x1 optimization work in #1277. I also agree with @mkannwischer's consistency point: the exclusion should be expressed as a dedicated functest action argument rather than through extra_args. A working Zephyr ABI checker would require us to:
I agree this would be useful. Could you clarify whether Zephyr-native ABI checking is a prerequisite for merging #1277? If so, we will prioritize it as such; otherwise, I suggest tracking it as a separate test-infrastructure follow-up. |
Signed-off-by: Brendan Moran <brendan.moran@arm.com>
c748ebe to
059167a
Compare
Summary
abicheckinput to thefunctestcomposite action;abicheck: falsefor Zephyr functional-test jobs.This follows the same action-input pattern used for the other optional test
suites. Existing
functestcallers retain ABI checking by default.Why
The current ABI checker is not built as a Zephyr application. Normal Zephyr
tests go through the Zephyr CMake build, but
abicheckuses the generic Makerules and derives its architecture from the CI host. On
ubuntu-latest, thatproduces an x86_64 executable which the Zephyr wrapper then passes to
qemu-system-arm.On #1277, all preceding Cortex-M55 functional, KAT, ACVP, and sign-hook tests
passed before that host ABI executable reached QEMU and hard-locked at
PC=0:655be044b8450b2713a5cf24ab8dd0bf53a8b847: https://github.com/pq-code-package/mldsa-native/actions/runs/30107040830Only M55 reached this path because it is the only Zephyr matrix target using
opt=all; ABI checking is enabled only for optimized builds.This change makes the current Zephyr exclusion explicit without affecting the
standalone ABI-check command or other
functestusers. Supporting ABI checkingas a Zephyr application can be handled separately from the Armv8.1-M Keccak
backend work in #1277.
Validation
actionlint: passed./scripts/tests all --help: confirms--abicheck/--no-abicheckgit diff --check: passed059167a7dbf4d7bca518732a8070c7361177e7d5abicheck: falseexpanded to--no-abicheck;extra_argsremained--no-auto; functional, KAT, ACVP, sign-hook, and smoke tests passed)