Description
Since (at time of writing: as soon as) #22289, Cortex-M33 would be supported for Rust -- but building fails:
$ make BOARD=rpi-pico-2-arm -C examples/lang_support/official/rust-hello-world
[...]
cargo:rerun-if-changed=riot-bindgen.h
--- stderr
/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:105:3: error: argument to '__builtin_arm_cdp' must be a constant integer
/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:112:3: error: argument to '__builtin_arm_ldc' must be a constant integer
/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:119:3: error: argument to '__builtin_arm_ldcl' must be a constant integer
/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:126:3: error: argument to '__builtin_arm_stc' must be a constant integer
/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:133:3: error: argument to '__builtin_arm_stcl' must be a constant integer
/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:141:3: error: argument to '__builtin_arm_mcr' must be a constant integer
/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:149:10: error: argument to '__builtin_arm_mrc' must be a constant integer
/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:157:3: error: argument to '__builtin_arm_cdp2' must be a constant integer
/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:164:3: error: argument to '__builtin_arm_ldc2' must be a constant integer
/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:171:3: error: argument to '__builtin_arm_ldc2l' must be a constant integer
/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:178:3: error: argument to '__builtin_arm_stc2' must be a constant integer
/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:185:3: error: argument to '__builtin_arm_stc2l' must be a constant integer
/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:193:3: error: argument to '__builtin_arm_mcr2' must be a constant integer
/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:201:10: error: argument to '__builtin_arm_mrc2' must be a constant integer
/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:210:3: error: argument to '__builtin_arm_mcrr' must be a constant integer
/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:217:10: error: argument to '__builtin_arm_mrrc' must be a constant integer
/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:226:3: error: argument to '__builtin_arm_mcrr2' must be a constant integer
/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:233:10: error: argument to '__builtin_arm_mrrc2' must be a constant integer
/home/chrysn/git/RIOT/build/pkg/picosdk/src/rp2_common/cmsis/stub/CMSIS/Core/Include/cmsis_clang.h:173:25: error: call to undeclared function '__isb'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
fatal error: too many errors emitted, stopping now [-ferror-limit=]
thread 'main' (2089516) panicked at /home/chrysn/.cargo/git/checkouts/rust-riot-sys-a8915ab6cdde1316/1cac447/build.rs:246:10:
Unable to generate bindings: ClangDiagnostic("/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:105:3: error: argument to '__builtin_arm_cdp' must be a constant integer\n/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:112:3: error: argument to '__builtin_arm_ldc' must be a constant integer\n/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:119:3: error: argument to '__builtin_arm_ldcl' must be a constant integer\n/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:126:3: error: argument to '__builtin_arm_stc' must be a constant integer\n/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:133:3: error: argument to '__builtin_arm_stcl' must be a constant integer\n/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:141:3: error: argument to '__builtin_arm_mcr' must be a constant integer\n/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:149:10: error: argument to '__builtin_arm_mrc' must be a constant integer\n/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:157:3: error: argument to '__builtin_arm_cdp2' must be a constant integer\n/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:164:3: error: argument to '__builtin_arm_ldc2' must be a constant integer\n/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:171:3: error: argument to '__builtin_arm_ldc2l' must be a constant integer\n/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:178:3: error: argument to '__builtin_arm_stc2' must be a constant integer\n/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:185:3: error: argument to '__builtin_arm_stc2l' must be a constant integer\n/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:193:3: error: argument to '__builtin_arm_mcr2' must be a constant integer\n/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:201:10: error: argument to '__builtin_arm_mrc2' must be a constant integer\n/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:210:3: error: argument to '__builtin_arm_mcrr' must be a constant integer\n/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:217:10: error: argument to '__builtin_arm_mrrc' must be a constant integer\n/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:226:3: error: argument to '__builtin_arm_mcrr2' must be a constant integer\n/usr/lib/gcc/arm-none-eabi/14.2.1/include/arm_acle.h:233:10: error: argument to '__builtin_arm_mrrc2' must be a constant integer\n/home/chrysn/git/RIOT/build/pkg/picosdk/src/rp2_common/cmsis/stub/CMSIS/Core/Include/cmsis_clang.h:173:25: error: call to undeclared function '__isb'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]\nfatal error: too many errors emitted, stopping now [-ferror-limit=]\n")
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
make: *** [/home/chrysn/git/RIOT/makefiles/cargo-targets.inc.mk:63: /home/chrysn/git/RIOT/examples/lang_support/official/rust-hello-world/bin/rpi-pico-2-arm/target/thumbv8m.main-none-eabihf/release/librust_hello_world.a] Error 101
make: Leaving directory '/home/chrysn/git/RIOT/examples/lang_support/official/rust-hello-world'
Steps to reproduce the issue
See above, but add CONTINUE_ON_EXPECTED_ERRORS=1 as there is currently a workaround in place to not provide the rust_target FEATURE on that CPU.
Next steps
I'm running out of time to debug this in #22289, and rather enable M33 Rust for those where it works than those where it causes extra troubles. As there is "picosdk" popping up in the error, I feel sufficiently justified to put this on "yeah well that's what we get for SDKs", and leaving it until the its next release is out (given that there are other issues that the unreleased version fixes, eg. #22289 (comment)).
Description
Since (at time of writing: as soon as) #22289, Cortex-M33 would be supported for Rust -- but building fails:
Steps to reproduce the issue
See above, but add
CONTINUE_ON_EXPECTED_ERRORS=1as there is currently a workaround in place to not provide therust_targetFEATURE on that CPU.Next steps
I'm running out of time to debug this in #22289, and rather enable M33 Rust for those where it works than those where it causes extra troubles. As there is "picosdk" popping up in the error, I feel sufficiently justified to put this on "yeah well that's what we get for SDKs", and leaving it until the its next release is out (given that there are other issues that the unreleased version fixes, eg. #22289 (comment)).