Skip to content

extern "x86-interrupt" fn allows absurd signatures #132835

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Open
Tracked by #40180
workingjubilee opened this issue Nov 10, 2024 · 0 comments
Open
Tracked by #40180

extern "x86-interrupt" fn allows absurd signatures #132835

workingjubilee opened this issue Nov 10, 2024 · 0 comments
Labels
A-ABI Area: Concerning the application binary interface (ABI) A-hardware-interrupts Area: Code for handling the "interrupt ABI" of various processors A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. C-bug Category: This is a bug. F-abi_x86_interrupt O-x86_32 Target: x86 processors, 32 bit (like i686-*) (IA-32) O-x86_64 Target: x86-64 processors (like x86_64-*) (also known as amd64 and x64) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@workingjubilee
Copy link
Member

workingjubilee commented Nov 10, 2024

I tried this code:

#![feature(abi_x86_interrupt)]
extern "x86-interrupt" fn three_args(_a: u8, _b: u8, _c: u8) {}

fn main() {
    three_args(1, 2, 3);
}

I expected to see rustc reject this code, because this signature makes no sense for this ABI.

Instead, this happened:

rustc-LLVM ERROR: unsupported x86 interrupt prototype
error: could not compile playground (bin "playground")

Meta

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: +F-abi_x86_interrupt +A-LLVM +O-x86_64 +O-x86_32 +A-ABI +T-compiler

Related Issues

@workingjubilee workingjubilee added the C-bug Category: This is a bug. label Nov 10, 2024
@rustbot rustbot added needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. A-ABI Area: Concerning the application binary interface (ABI) A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. F-abi_x86_interrupt O-x86_32 Target: x86 processors, 32 bit (like i686-*) (IA-32) O-x86_64 Target: x86-64 processors (like x86_64-*) (also known as amd64 and x64) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Nov 10, 2024
@workingjubilee workingjubilee changed the title We allow incorrect signatures for extern "x86-interrupt" fn extern "x86-interrupt" fn allows absurd signatures Nov 10, 2024
@workingjubilee workingjubilee removed the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label Nov 10, 2024
@workingjubilee workingjubilee added the A-hardware-interrupts Area: Code for handling the "interrupt ABI" of various processors label Nov 10, 2024
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
A-ABI Area: Concerning the application binary interface (ABI) A-hardware-interrupts Area: Code for handling the "interrupt ABI" of various processors A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. C-bug Category: This is a bug. F-abi_x86_interrupt O-x86_32 Target: x86 processors, 32 bit (like i686-*) (IA-32) O-x86_64 Target: x86-64 processors (like x86_64-*) (also known as amd64 and x64) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

2 participants