Uh oh!
There was an error while loading. Please reload this page.
Require windowed (and exception) for Xtensa ABI - #160643
Conversation
rustbot
commented
Aug 6, 2026
|
This comment was marked as low quality.
This comment was marked as low quality.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
RalfJung
commented
Aug 6, 2026
Thanks! Looking at the LLVM backend, it seems some registers are only available with certain target features: Does that mean these target features also affect the ABI? I think |
RalfJung
commented
Aug 6, 2026
Also, if we are adding the ABI checks anyway, could you also add the other part of them which goes into this big match? Seems like we only support a single ABI for Xtensa for now so the checks should be the same as for wasm. |
hey @MabezDev as per our LLM policy, please disable Copilot in your GitHub settings and don't trigger unprompted reviews from bots in our repository. Thanks |
RalfJung
commented
Aug 17, 2026
rustbot
commented
Aug 17, 2026
Reminder, once the PR becomes ready for a review, use |
rustbot
commented
Aug 18, 2026
Target features are being changed; ensure all ABI effects are being accounted for cc @RalfJung |
Rust only supports the windowed Xtensa calling convention on all upstream targets (esp32 family). Mark windowed and exception as ABI-required features so a mismatched -Ctarget-cpu cannot silently change the ABI. Discussion: rust-lang#160530 (comment)
Rust currently supports a single Xtensa ABI, so apply the same spec checks as wasm: unspecified llvm_abiname, no floatabi, no rustc_abi, and unspecified or other cfg_abi.
524d77b to
8a446b5Comparerustbot
commented
Aug 18, 2026
Target consistency checks are being changed cc @RalfJung |
rustbot
commented
Aug 18, 2026
This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed. Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers. |
MabezDev
commented
Aug 18, 2026
Sorry for the delay, juggling a few things at the moment :). @rustbot ready |
RalfJung
commented
Aug 18, 2026
Thanks! This question is still open:
|
MabezDev
commented
Aug 18, 2026
Ah, sorry, forgot to write a reply. |
RalfJung
commented
Aug 18, 2026
Okay, thanks. I wonder what the LLVM backend is doing there then. I guess floats are always passed in memory or in integer registers, so that the f32 register class does not matter? @bors r+ rollup |
…, r=RalfJung Require windowed (and exception) for Xtensa ABI Rust only supports the windowed Xtensa calling convention on all upstream targets (esp32 family). Mark windowed and exception as ABI-required features so a mismatched -Ctarget-cpu cannot silently change the ABI. Discussion: rust-lang#160530 (comment) r? @RalfJung
…, r=RalfJung Require windowed (and exception) for Xtensa ABI Rust only supports the windowed Xtensa calling convention on all upstream targets (esp32 family). Mark windowed and exception as ABI-required features so a mismatched -Ctarget-cpu cannot silently change the ABI. Discussion: rust-lang#160530 (comment) r? @RalfJung
Rollup of 18 pull requests Successful merges: - #154210 (fix: fix the capture behavior of `if let` in closures) - #156176 (Initial implementation of `FnPtr` trait) - #160767 (Unify E0117 foreign-trait label for ADT/primitive types with existing Slice/Array/Tuple handling) - #161297 (std: use UNIX's `Instant` and `SystemTime` on Hermit) - #160489 (Adding diagnostic item markers for multiple fs functions and structs) - #160643 (Require windowed (and exception) for Xtensa ABI) - #161088 (suppress projection errors already covered by a trait error) - #161114 (Remove fields from TypeKind: Struct, Enum, Union and Tuple) - #161115 (Assorted allocator nitpicks) - #161220 (bootstrap: Allow `./x fix --allow-dirty`) - #161296 (Enable overflow checks in `rustc_thread_pool`) - #161298 (remove rustc_error_messages dependency) - #161304 (Rename test so it matches the issue) - #161309 (`allow(non_camel_case_types)` in `minicore.rs`) - #161315 (Relax codgen test variable regex) - #161318 (Doc: clarify how `Read::bytes` handling Interrupted errors) - #161321 (Update books) - #161335 ([compiletest] Use the correct rustc lib directory for query_rustc_output)
Uh oh!
There was an error while loading. Please reload this page.
Rollup merge of #160643 - esp-rs:xtensa-abi-require-windowed, r=RalfJung Require windowed (and exception) for Xtensa ABI Rust only supports the windowed Xtensa calling convention on all upstream targets (esp32 family). Mark windowed and exception as ABI-required features so a mismatched -Ctarget-cpu cannot silently change the ABI. Discussion: #160530 (comment) r? @RalfJung
RalfJung
commented
Aug 19, 2026
FWIW if you know what is up with |
Rollup of 18 pull requests Successful merges: - rust-lang/rust#154210 (fix: fix the capture behavior of `if let` in closures) - rust-lang/rust#156176 (Initial implementation of `FnPtr` trait) - rust-lang/rust#160767 (Unify E0117 foreign-trait label for ADT/primitive types with existing Slice/Array/Tuple handling) - rust-lang/rust#161297 (std: use UNIX's `Instant` and `SystemTime` on Hermit) - rust-lang/rust#160489 (Adding diagnostic item markers for multiple fs functions and structs) - rust-lang/rust#160643 (Require windowed (and exception) for Xtensa ABI) - rust-lang/rust#161088 (suppress projection errors already covered by a trait error) - rust-lang/rust#161114 (Remove fields from TypeKind: Struct, Enum, Union and Tuple) - rust-lang/rust#161115 (Assorted allocator nitpicks) - rust-lang/rust#161220 (bootstrap: Allow `./x fix --allow-dirty`) - rust-lang/rust#161296 (Enable overflow checks in `rustc_thread_pool`) - rust-lang/rust#161298 (remove rustc_error_messages dependency) - rust-lang/rust#161304 (Rename test so it matches the issue) - rust-lang/rust#161309 (`allow(non_camel_case_types)` in `minicore.rs`) - rust-lang/rust#161315 (Relax codgen test variable regex) - rust-lang/rust#161318 (Doc: clarify how `Read::bytes` handling Interrupted errors) - rust-lang/rust#161321 (Update books) - rust-lang/rust#161335 ([compiletest] Use the correct rustc lib directory for query_rustc_output)
Rollup of 18 pull requests Successful merges: - rust-lang/rust#154210 (fix: fix the capture behavior of `if let` in closures) - rust-lang/rust#156176 (Initial implementation of `FnPtr` trait) - rust-lang/rust#160767 (Unify E0117 foreign-trait label for ADT/primitive types with existing Slice/Array/Tuple handling) - rust-lang/rust#161297 (std: use UNIX's `Instant` and `SystemTime` on Hermit) - rust-lang/rust#160489 (Adding diagnostic item markers for multiple fs functions and structs) - rust-lang/rust#160643 (Require windowed (and exception) for Xtensa ABI) - rust-lang/rust#161088 (suppress projection errors already covered by a trait error) - rust-lang/rust#161114 (Remove fields from TypeKind: Struct, Enum, Union and Tuple) - rust-lang/rust#161115 (Assorted allocator nitpicks) - rust-lang/rust#161220 (bootstrap: Allow `./x fix --allow-dirty`) - rust-lang/rust#161296 (Enable overflow checks in `rustc_thread_pool`) - rust-lang/rust#161298 (remove rustc_error_messages dependency) - rust-lang/rust#161304 (Rename test so it matches the issue) - rust-lang/rust#161309 (`allow(non_camel_case_types)` in `minicore.rs`) - rust-lang/rust#161315 (Relax codgen test variable regex) - rust-lang/rust#161318 (Doc: clarify how `Read::bytes` handling Interrupted errors) - rust-lang/rust#161321 (Update books) - rust-lang/rust#161335 ([compiletest] Use the correct rustc lib directory for query_rustc_output)
Rust only supports the windowed Xtensa calling convention on all upstream targets (esp32 family). Mark windowed and exception as ABI-required features so a mismatched -Ctarget-cpu cannot silently change the ABI.
Discussion: #160530 (comment)
r? @RalfJung