Open workingjubilee opened 3 weeks ago
I tried this code with rustc --target riscv64gc-unknown-linux-gnu rust_code.rs:
rustc --target riscv64gc-unknown-linux-gnu rust_code.rs
#![feature(abi_riscv_interrupt)] pub extern "riscv-interrupt-m" fn interrupt_machine(_a: u8, _b: u8, _c: u8) { } pub extern "riscv-interrupt-s" fn interrupt_supervisor(_a: u8, _b: u8, _c: u8) { } pub fn main() { interrupt_machine(1, 2, 3); interrupt_supervisor(4, 5, 6); }
I expected to see rustc catch this invalid signature.
Instead, this happened:
rustc-LLVM ERROR: Functions with the interrupt attribute cannot have arguments!
My understanding is that the same story applies for non-x86 interrupt ABIs like MSP430's.
rustc --version --verbose:
rustc --version --verbose
rustc 1.84.0-nightly (a0d98ff0e 2024-10-31) binary: rustc commit-hash: a0d98ff0e5b6e1f2c63fd26f68484792621b235c commit-date: 2024-10-31 host: x86_64-unknown-linux-gnu release: 1.84.0-nightly LLVM version: 19.1.1
@rustbot label: +A-hardware-interrupts +A-LLVM +O-riscv +O-msp430 +A-ABI +T-compiler
@Patryk27 Should AVR also be on the list of nullary interrupt ABIs?
I suppose ZSTs in arguments could be fine, for anyone interested in doing weird typestate shenanigans.
Yes, AVR also requires argument-less interrupt handlers.
I tried this code with
rustc --target riscv64gc-unknown-linux-gnu rust_code.rs
:I expected to see rustc catch this invalid signature.
Instead, this happened:
My understanding is that the same story applies for non-x86 interrupt ABIs like MSP430's.
Meta
rustc --version --verbose
:@rustbot label: +A-hardware-interrupts +A-LLVM +O-riscv +O-msp430 +A-ABI +T-compiler
Related Issues