Enforce correct number of arguments for "x86-interrupt" functions
This commit is contained in:
@@ -20,6 +20,10 @@ ast_passes_abi_must_not_have_return_type=
|
|||||||
.note = functions with the {$abi} ABI cannot have a return type
|
.note = functions with the {$abi} ABI cannot have a return type
|
||||||
.help = remove the return type
|
.help = remove the return type
|
||||||
|
|
||||||
|
ast_passes_abi_x86_interrupt =
|
||||||
|
invalid signature for `extern "x86-interrupt"` function
|
||||||
|
.note = functions with the "x86-interrupt" ABI must be have either 1 or 2 parameters (but found {$param_count})
|
||||||
|
|
||||||
ast_passes_assoc_const_without_body =
|
ast_passes_assoc_const_without_body =
|
||||||
associated constant in `impl` without body
|
associated constant in `impl` without body
|
||||||
.suggestion = provide a definition for the constant
|
.suggestion = provide a definition for the constant
|
||||||
|
|||||||
@@ -405,6 +405,17 @@ impl<'a> AstValidator<'a> {
|
|||||||
if let InterruptKind::X86 = interrupt_kind {
|
if let InterruptKind::X86 = interrupt_kind {
|
||||||
// "x86-interrupt" is special because it does have arguments.
|
// "x86-interrupt" is special because it does have arguments.
|
||||||
// FIXME(workingjubilee): properly lint on acceptable input types.
|
// FIXME(workingjubilee): properly lint on acceptable input types.
|
||||||
|
let inputs = &sig.decl.inputs;
|
||||||
|
let param_count = inputs.len();
|
||||||
|
if !matches!(param_count, 1 | 2) {
|
||||||
|
let mut spans: Vec<Span> =
|
||||||
|
inputs.iter().map(|arg| arg.span).collect();
|
||||||
|
if spans.is_empty() {
|
||||||
|
spans = vec![sig.span];
|
||||||
|
}
|
||||||
|
self.dcx().emit_err(errors::AbiX86Interrupt { spans, param_count });
|
||||||
|
}
|
||||||
|
|
||||||
if let FnRetTy::Ty(ref ret_ty) = sig.decl.output
|
if let FnRetTy::Ty(ref ret_ty) = sig.decl.output
|
||||||
&& match &ret_ty.kind {
|
&& match &ret_ty.kind {
|
||||||
TyKind::Never => false,
|
TyKind::Never => false,
|
||||||
|
|||||||
@@ -891,3 +891,12 @@ pub(crate) struct AbiMustNotHaveReturnType {
|
|||||||
pub span: Span,
|
pub span: Span,
|
||||||
pub abi: ExternAbi,
|
pub abi: ExternAbi,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Diagnostic)]
|
||||||
|
#[diag(ast_passes_abi_x86_interrupt)]
|
||||||
|
#[note]
|
||||||
|
pub(crate) struct AbiX86Interrupt {
|
||||||
|
#[primary_span]
|
||||||
|
pub spans: Vec<Span>,
|
||||||
|
pub param_count: usize,
|
||||||
|
}
|
||||||
|
|||||||
@@ -15,4 +15,4 @@ use minicore::*;
|
|||||||
|
|
||||||
// CHECK: define x86_intrcc void @has_x86_interrupt_abi
|
// CHECK: define x86_intrcc void @has_x86_interrupt_abi
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "x86-interrupt" fn has_x86_interrupt_abi() {}
|
pub extern "x86-interrupt" fn has_x86_interrupt_abi(_p: *const u8) {}
|
||||||
|
|||||||
@@ -18,10 +18,10 @@ pub fn caller() {
|
|||||||
unsafe { asm!("call {}", sym page_fault_handler) }
|
unsafe { asm!("call {}", sym page_fault_handler) }
|
||||||
}
|
}
|
||||||
|
|
||||||
// CHECK: declare x86_intrcc void @page_fault_handler(){{.*}}#[[ATTRS:[0-9]+]]
|
// CHECK: declare x86_intrcc void @page_fault_handler(ptr {{.*}}, i64{{.*}}){{.*}}#[[ATTRS:[0-9]+]]
|
||||||
#[unsafe(naked)]
|
#[unsafe(naked)]
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "x86-interrupt" fn page_fault_handler() {
|
pub extern "x86-interrupt" fn page_fault_handler(_: u64, _: u64) {
|
||||||
naked_asm!("ud2")
|
naked_asm!("ud2")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,53 +19,53 @@ LL | extern "riscv-interrupt-s" fn riscv_s() {}
|
|||||||
error[E0570]: "x86-interrupt" is not a supported ABI for the current target
|
error[E0570]: "x86-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:45:8
|
--> $DIR/cannot-be-called.rs:45:8
|
||||||
|
|
|
|
||||||
LL | extern "x86-interrupt" fn x86() {}
|
LL | extern "x86-interrupt" fn x86(_x: *const u8) {}
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "msp430-interrupt" is not a supported ABI for the current target
|
error[E0570]: "msp430-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:70:25
|
--> $DIR/cannot-be-called.rs:72:25
|
||||||
|
|
|
|
||||||
LL | fn msp430_ptr(f: extern "msp430-interrupt" fn()) {
|
LL | fn msp430_ptr(f: extern "msp430-interrupt" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "riscv-interrupt-m" is not a supported ABI for the current target
|
error[E0570]: "riscv-interrupt-m" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:76:26
|
--> $DIR/cannot-be-called.rs:78:26
|
||||||
|
|
|
|
||||||
LL | fn riscv_m_ptr(f: extern "riscv-interrupt-m" fn()) {
|
LL | fn riscv_m_ptr(f: extern "riscv-interrupt-m" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "riscv-interrupt-s" is not a supported ABI for the current target
|
error[E0570]: "riscv-interrupt-s" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:82:26
|
--> $DIR/cannot-be-called.rs:84:26
|
||||||
|
|
|
|
||||||
LL | fn riscv_s_ptr(f: extern "riscv-interrupt-s" fn()) {
|
LL | fn riscv_s_ptr(f: extern "riscv-interrupt-s" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "x86-interrupt" is not a supported ABI for the current target
|
error[E0570]: "x86-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:88:22
|
--> $DIR/cannot-be-called.rs:90:22
|
||||||
|
|
|
|
||||||
LL | fn x86_ptr(f: extern "x86-interrupt" fn()) {
|
LL | fn x86_ptr(f: extern "x86-interrupt" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: functions with the "avr-interrupt" ABI cannot be called
|
error: functions with the "avr-interrupt" ABI cannot be called
|
||||||
--> $DIR/cannot-be-called.rs:50:5
|
--> $DIR/cannot-be-called.rs:52:5
|
||||||
|
|
|
|
||||||
LL | avr();
|
LL | avr();
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
|
|
|
||||||
note: an `extern "avr-interrupt"` function can only be called using inline assembly
|
note: an `extern "avr-interrupt"` function can only be called using inline assembly
|
||||||
--> $DIR/cannot-be-called.rs:50:5
|
--> $DIR/cannot-be-called.rs:52:5
|
||||||
|
|
|
|
||||||
LL | avr();
|
LL | avr();
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
|
||||||
error: functions with the "avr-interrupt" ABI cannot be called
|
error: functions with the "avr-interrupt" ABI cannot be called
|
||||||
--> $DIR/cannot-be-called.rs:66:5
|
--> $DIR/cannot-be-called.rs:68:5
|
||||||
|
|
|
|
||||||
LL | f()
|
LL | f()
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|
|
|
||||||
note: an `extern "avr-interrupt"` function can only be called using inline assembly
|
note: an `extern "avr-interrupt"` function can only be called using inline assembly
|
||||||
--> $DIR/cannot-be-called.rs:66:5
|
--> $DIR/cannot-be-called.rs:68:5
|
||||||
|
|
|
|
||||||
LL | f()
|
LL | f()
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|||||||
@@ -23,49 +23,49 @@ LL | extern "riscv-interrupt-s" fn riscv_s() {}
|
|||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "avr-interrupt" is not a supported ABI for the current target
|
error[E0570]: "avr-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:64:22
|
--> $DIR/cannot-be-called.rs:66:22
|
||||||
|
|
|
|
||||||
LL | fn avr_ptr(f: extern "avr-interrupt" fn()) {
|
LL | fn avr_ptr(f: extern "avr-interrupt" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "msp430-interrupt" is not a supported ABI for the current target
|
error[E0570]: "msp430-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:70:25
|
--> $DIR/cannot-be-called.rs:72:25
|
||||||
|
|
|
|
||||||
LL | fn msp430_ptr(f: extern "msp430-interrupt" fn()) {
|
LL | fn msp430_ptr(f: extern "msp430-interrupt" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "riscv-interrupt-m" is not a supported ABI for the current target
|
error[E0570]: "riscv-interrupt-m" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:76:26
|
--> $DIR/cannot-be-called.rs:78:26
|
||||||
|
|
|
|
||||||
LL | fn riscv_m_ptr(f: extern "riscv-interrupt-m" fn()) {
|
LL | fn riscv_m_ptr(f: extern "riscv-interrupt-m" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "riscv-interrupt-s" is not a supported ABI for the current target
|
error[E0570]: "riscv-interrupt-s" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:82:26
|
--> $DIR/cannot-be-called.rs:84:26
|
||||||
|
|
|
|
||||||
LL | fn riscv_s_ptr(f: extern "riscv-interrupt-s" fn()) {
|
LL | fn riscv_s_ptr(f: extern "riscv-interrupt-s" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: functions with the "x86-interrupt" ABI cannot be called
|
error: functions with the "x86-interrupt" ABI cannot be called
|
||||||
--> $DIR/cannot-be-called.rs:58:5
|
--> $DIR/cannot-be-called.rs:60:5
|
||||||
|
|
|
|
||||||
LL | x86();
|
LL | x86(&raw const BYTE);
|
||||||
| ^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
note: an `extern "x86-interrupt"` function can only be called using inline assembly
|
note: an `extern "x86-interrupt"` function can only be called using inline assembly
|
||||||
--> $DIR/cannot-be-called.rs:58:5
|
--> $DIR/cannot-be-called.rs:60:5
|
||||||
|
|
|
|
||||||
LL | x86();
|
LL | x86(&raw const BYTE);
|
||||||
| ^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: functions with the "x86-interrupt" ABI cannot be called
|
error: functions with the "x86-interrupt" ABI cannot be called
|
||||||
--> $DIR/cannot-be-called.rs:90:5
|
--> $DIR/cannot-be-called.rs:92:5
|
||||||
|
|
|
|
||||||
LL | f()
|
LL | f()
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|
|
|
||||||
note: an `extern "x86-interrupt"` function can only be called using inline assembly
|
note: an `extern "x86-interrupt"` function can only be called using inline assembly
|
||||||
--> $DIR/cannot-be-called.rs:90:5
|
--> $DIR/cannot-be-called.rs:92:5
|
||||||
|
|
|
|
||||||
LL | f()
|
LL | f()
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|||||||
@@ -19,53 +19,53 @@ LL | extern "riscv-interrupt-s" fn riscv_s() {}
|
|||||||
error[E0570]: "x86-interrupt" is not a supported ABI for the current target
|
error[E0570]: "x86-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:45:8
|
--> $DIR/cannot-be-called.rs:45:8
|
||||||
|
|
|
|
||||||
LL | extern "x86-interrupt" fn x86() {}
|
LL | extern "x86-interrupt" fn x86(_x: *const u8) {}
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "avr-interrupt" is not a supported ABI for the current target
|
error[E0570]: "avr-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:64:22
|
--> $DIR/cannot-be-called.rs:66:22
|
||||||
|
|
|
|
||||||
LL | fn avr_ptr(f: extern "avr-interrupt" fn()) {
|
LL | fn avr_ptr(f: extern "avr-interrupt" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "riscv-interrupt-m" is not a supported ABI for the current target
|
error[E0570]: "riscv-interrupt-m" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:76:26
|
--> $DIR/cannot-be-called.rs:78:26
|
||||||
|
|
|
|
||||||
LL | fn riscv_m_ptr(f: extern "riscv-interrupt-m" fn()) {
|
LL | fn riscv_m_ptr(f: extern "riscv-interrupt-m" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "riscv-interrupt-s" is not a supported ABI for the current target
|
error[E0570]: "riscv-interrupt-s" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:82:26
|
--> $DIR/cannot-be-called.rs:84:26
|
||||||
|
|
|
|
||||||
LL | fn riscv_s_ptr(f: extern "riscv-interrupt-s" fn()) {
|
LL | fn riscv_s_ptr(f: extern "riscv-interrupt-s" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "x86-interrupt" is not a supported ABI for the current target
|
error[E0570]: "x86-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:88:22
|
--> $DIR/cannot-be-called.rs:90:22
|
||||||
|
|
|
|
||||||
LL | fn x86_ptr(f: extern "x86-interrupt" fn()) {
|
LL | fn x86_ptr(f: extern "x86-interrupt" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: functions with the "msp430-interrupt" ABI cannot be called
|
error: functions with the "msp430-interrupt" ABI cannot be called
|
||||||
--> $DIR/cannot-be-called.rs:52:5
|
--> $DIR/cannot-be-called.rs:54:5
|
||||||
|
|
|
|
||||||
LL | msp430();
|
LL | msp430();
|
||||||
| ^^^^^^^^
|
| ^^^^^^^^
|
||||||
|
|
|
|
||||||
note: an `extern "msp430-interrupt"` function can only be called using inline assembly
|
note: an `extern "msp430-interrupt"` function can only be called using inline assembly
|
||||||
--> $DIR/cannot-be-called.rs:52:5
|
--> $DIR/cannot-be-called.rs:54:5
|
||||||
|
|
|
|
||||||
LL | msp430();
|
LL | msp430();
|
||||||
| ^^^^^^^^
|
| ^^^^^^^^
|
||||||
|
|
||||||
error: functions with the "msp430-interrupt" ABI cannot be called
|
error: functions with the "msp430-interrupt" ABI cannot be called
|
||||||
--> $DIR/cannot-be-called.rs:72:5
|
--> $DIR/cannot-be-called.rs:74:5
|
||||||
|
|
|
|
||||||
LL | f()
|
LL | f()
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|
|
|
||||||
note: an `extern "msp430-interrupt"` function can only be called using inline assembly
|
note: an `extern "msp430-interrupt"` function can only be called using inline assembly
|
||||||
--> $DIR/cannot-be-called.rs:72:5
|
--> $DIR/cannot-be-called.rs:74:5
|
||||||
|
|
|
|
||||||
LL | f()
|
LL | f()
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|||||||
@@ -13,71 +13,71 @@ LL | extern "avr-interrupt" fn avr() {}
|
|||||||
error[E0570]: "x86-interrupt" is not a supported ABI for the current target
|
error[E0570]: "x86-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:45:8
|
--> $DIR/cannot-be-called.rs:45:8
|
||||||
|
|
|
|
||||||
LL | extern "x86-interrupt" fn x86() {}
|
LL | extern "x86-interrupt" fn x86(_x: *const u8) {}
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "avr-interrupt" is not a supported ABI for the current target
|
error[E0570]: "avr-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:64:22
|
--> $DIR/cannot-be-called.rs:66:22
|
||||||
|
|
|
|
||||||
LL | fn avr_ptr(f: extern "avr-interrupt" fn()) {
|
LL | fn avr_ptr(f: extern "avr-interrupt" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "msp430-interrupt" is not a supported ABI for the current target
|
error[E0570]: "msp430-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:70:25
|
--> $DIR/cannot-be-called.rs:72:25
|
||||||
|
|
|
|
||||||
LL | fn msp430_ptr(f: extern "msp430-interrupt" fn()) {
|
LL | fn msp430_ptr(f: extern "msp430-interrupt" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "x86-interrupt" is not a supported ABI for the current target
|
error[E0570]: "x86-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:88:22
|
--> $DIR/cannot-be-called.rs:90:22
|
||||||
|
|
|
|
||||||
LL | fn x86_ptr(f: extern "x86-interrupt" fn()) {
|
LL | fn x86_ptr(f: extern "x86-interrupt" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: functions with the "riscv-interrupt-m" ABI cannot be called
|
error: functions with the "riscv-interrupt-m" ABI cannot be called
|
||||||
--> $DIR/cannot-be-called.rs:54:5
|
--> $DIR/cannot-be-called.rs:56:5
|
||||||
|
|
|
|
||||||
LL | riscv_m();
|
LL | riscv_m();
|
||||||
| ^^^^^^^^^
|
| ^^^^^^^^^
|
||||||
|
|
|
|
||||||
note: an `extern "riscv-interrupt-m"` function can only be called using inline assembly
|
note: an `extern "riscv-interrupt-m"` function can only be called using inline assembly
|
||||||
--> $DIR/cannot-be-called.rs:54:5
|
--> $DIR/cannot-be-called.rs:56:5
|
||||||
|
|
|
|
||||||
LL | riscv_m();
|
LL | riscv_m();
|
||||||
| ^^^^^^^^^
|
| ^^^^^^^^^
|
||||||
|
|
||||||
error: functions with the "riscv-interrupt-s" ABI cannot be called
|
error: functions with the "riscv-interrupt-s" ABI cannot be called
|
||||||
--> $DIR/cannot-be-called.rs:56:5
|
--> $DIR/cannot-be-called.rs:58:5
|
||||||
|
|
|
|
||||||
LL | riscv_s();
|
LL | riscv_s();
|
||||||
| ^^^^^^^^^
|
| ^^^^^^^^^
|
||||||
|
|
|
|
||||||
note: an `extern "riscv-interrupt-s"` function can only be called using inline assembly
|
note: an `extern "riscv-interrupt-s"` function can only be called using inline assembly
|
||||||
--> $DIR/cannot-be-called.rs:56:5
|
--> $DIR/cannot-be-called.rs:58:5
|
||||||
|
|
|
|
||||||
LL | riscv_s();
|
LL | riscv_s();
|
||||||
| ^^^^^^^^^
|
| ^^^^^^^^^
|
||||||
|
|
||||||
error: functions with the "riscv-interrupt-m" ABI cannot be called
|
error: functions with the "riscv-interrupt-m" ABI cannot be called
|
||||||
--> $DIR/cannot-be-called.rs:78:5
|
--> $DIR/cannot-be-called.rs:80:5
|
||||||
|
|
|
|
||||||
LL | f()
|
LL | f()
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|
|
|
||||||
note: an `extern "riscv-interrupt-m"` function can only be called using inline assembly
|
note: an `extern "riscv-interrupt-m"` function can only be called using inline assembly
|
||||||
--> $DIR/cannot-be-called.rs:78:5
|
--> $DIR/cannot-be-called.rs:80:5
|
||||||
|
|
|
|
||||||
LL | f()
|
LL | f()
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|
||||||
error: functions with the "riscv-interrupt-s" ABI cannot be called
|
error: functions with the "riscv-interrupt-s" ABI cannot be called
|
||||||
--> $DIR/cannot-be-called.rs:84:5
|
--> $DIR/cannot-be-called.rs:86:5
|
||||||
|
|
|
|
||||||
LL | f()
|
LL | f()
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|
|
|
||||||
note: an `extern "riscv-interrupt-s"` function can only be called using inline assembly
|
note: an `extern "riscv-interrupt-s"` function can only be called using inline assembly
|
||||||
--> $DIR/cannot-be-called.rs:84:5
|
--> $DIR/cannot-be-called.rs:86:5
|
||||||
|
|
|
|
||||||
LL | f()
|
LL | f()
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|||||||
@@ -13,71 +13,71 @@ LL | extern "avr-interrupt" fn avr() {}
|
|||||||
error[E0570]: "x86-interrupt" is not a supported ABI for the current target
|
error[E0570]: "x86-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:45:8
|
--> $DIR/cannot-be-called.rs:45:8
|
||||||
|
|
|
|
||||||
LL | extern "x86-interrupt" fn x86() {}
|
LL | extern "x86-interrupt" fn x86(_x: *const u8) {}
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "avr-interrupt" is not a supported ABI for the current target
|
error[E0570]: "avr-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:64:22
|
--> $DIR/cannot-be-called.rs:66:22
|
||||||
|
|
|
|
||||||
LL | fn avr_ptr(f: extern "avr-interrupt" fn()) {
|
LL | fn avr_ptr(f: extern "avr-interrupt" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "msp430-interrupt" is not a supported ABI for the current target
|
error[E0570]: "msp430-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:70:25
|
--> $DIR/cannot-be-called.rs:72:25
|
||||||
|
|
|
|
||||||
LL | fn msp430_ptr(f: extern "msp430-interrupt" fn()) {
|
LL | fn msp430_ptr(f: extern "msp430-interrupt" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "x86-interrupt" is not a supported ABI for the current target
|
error[E0570]: "x86-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:88:22
|
--> $DIR/cannot-be-called.rs:90:22
|
||||||
|
|
|
|
||||||
LL | fn x86_ptr(f: extern "x86-interrupt" fn()) {
|
LL | fn x86_ptr(f: extern "x86-interrupt" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: functions with the "riscv-interrupt-m" ABI cannot be called
|
error: functions with the "riscv-interrupt-m" ABI cannot be called
|
||||||
--> $DIR/cannot-be-called.rs:54:5
|
--> $DIR/cannot-be-called.rs:56:5
|
||||||
|
|
|
|
||||||
LL | riscv_m();
|
LL | riscv_m();
|
||||||
| ^^^^^^^^^
|
| ^^^^^^^^^
|
||||||
|
|
|
|
||||||
note: an `extern "riscv-interrupt-m"` function can only be called using inline assembly
|
note: an `extern "riscv-interrupt-m"` function can only be called using inline assembly
|
||||||
--> $DIR/cannot-be-called.rs:54:5
|
--> $DIR/cannot-be-called.rs:56:5
|
||||||
|
|
|
|
||||||
LL | riscv_m();
|
LL | riscv_m();
|
||||||
| ^^^^^^^^^
|
| ^^^^^^^^^
|
||||||
|
|
||||||
error: functions with the "riscv-interrupt-s" ABI cannot be called
|
error: functions with the "riscv-interrupt-s" ABI cannot be called
|
||||||
--> $DIR/cannot-be-called.rs:56:5
|
--> $DIR/cannot-be-called.rs:58:5
|
||||||
|
|
|
|
||||||
LL | riscv_s();
|
LL | riscv_s();
|
||||||
| ^^^^^^^^^
|
| ^^^^^^^^^
|
||||||
|
|
|
|
||||||
note: an `extern "riscv-interrupt-s"` function can only be called using inline assembly
|
note: an `extern "riscv-interrupt-s"` function can only be called using inline assembly
|
||||||
--> $DIR/cannot-be-called.rs:56:5
|
--> $DIR/cannot-be-called.rs:58:5
|
||||||
|
|
|
|
||||||
LL | riscv_s();
|
LL | riscv_s();
|
||||||
| ^^^^^^^^^
|
| ^^^^^^^^^
|
||||||
|
|
||||||
error: functions with the "riscv-interrupt-m" ABI cannot be called
|
error: functions with the "riscv-interrupt-m" ABI cannot be called
|
||||||
--> $DIR/cannot-be-called.rs:78:5
|
--> $DIR/cannot-be-called.rs:80:5
|
||||||
|
|
|
|
||||||
LL | f()
|
LL | f()
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|
|
|
||||||
note: an `extern "riscv-interrupt-m"` function can only be called using inline assembly
|
note: an `extern "riscv-interrupt-m"` function can only be called using inline assembly
|
||||||
--> $DIR/cannot-be-called.rs:78:5
|
--> $DIR/cannot-be-called.rs:80:5
|
||||||
|
|
|
|
||||||
LL | f()
|
LL | f()
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|
||||||
error: functions with the "riscv-interrupt-s" ABI cannot be called
|
error: functions with the "riscv-interrupt-s" ABI cannot be called
|
||||||
--> $DIR/cannot-be-called.rs:84:5
|
--> $DIR/cannot-be-called.rs:86:5
|
||||||
|
|
|
|
||||||
LL | f()
|
LL | f()
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|
|
|
||||||
note: an `extern "riscv-interrupt-s"` function can only be called using inline assembly
|
note: an `extern "riscv-interrupt-s"` function can only be called using inline assembly
|
||||||
--> $DIR/cannot-be-called.rs:84:5
|
--> $DIR/cannot-be-called.rs:86:5
|
||||||
|
|
|
|
||||||
LL | f()
|
LL | f()
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|||||||
@@ -42,9 +42,11 @@ extern "riscv-interrupt-m" fn riscv_m() {}
|
|||||||
//[x64,x64_win,i686,avr,msp430]~^ ERROR is not a supported ABI
|
//[x64,x64_win,i686,avr,msp430]~^ ERROR is not a supported ABI
|
||||||
extern "riscv-interrupt-s" fn riscv_s() {}
|
extern "riscv-interrupt-s" fn riscv_s() {}
|
||||||
//[x64,x64_win,i686,avr,msp430]~^ ERROR is not a supported ABI
|
//[x64,x64_win,i686,avr,msp430]~^ ERROR is not a supported ABI
|
||||||
extern "x86-interrupt" fn x86() {}
|
extern "x86-interrupt" fn x86(_x: *const u8) {}
|
||||||
//[riscv32,riscv64,avr,msp430]~^ ERROR is not a supported ABI
|
//[riscv32,riscv64,avr,msp430]~^ ERROR is not a supported ABI
|
||||||
|
|
||||||
|
static BYTE: u8 = 0;
|
||||||
|
|
||||||
/* extern "interrupt" calls */
|
/* extern "interrupt" calls */
|
||||||
fn call_the_interrupts() {
|
fn call_the_interrupts() {
|
||||||
avr();
|
avr();
|
||||||
@@ -55,7 +57,7 @@ fn call_the_interrupts() {
|
|||||||
//[riscv32,riscv64]~^ ERROR functions with the "riscv-interrupt-m" ABI cannot be called
|
//[riscv32,riscv64]~^ ERROR functions with the "riscv-interrupt-m" ABI cannot be called
|
||||||
riscv_s();
|
riscv_s();
|
||||||
//[riscv32,riscv64]~^ ERROR functions with the "riscv-interrupt-s" ABI cannot be called
|
//[riscv32,riscv64]~^ ERROR functions with the "riscv-interrupt-s" ABI cannot be called
|
||||||
x86();
|
x86(&raw const BYTE);
|
||||||
//[x64,x64_win,i686]~^ ERROR functions with the "x86-interrupt" ABI cannot be called
|
//[x64,x64_win,i686]~^ ERROR functions with the "x86-interrupt" ABI cannot be called
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,49 +23,49 @@ LL | extern "riscv-interrupt-s" fn riscv_s() {}
|
|||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "avr-interrupt" is not a supported ABI for the current target
|
error[E0570]: "avr-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:64:22
|
--> $DIR/cannot-be-called.rs:66:22
|
||||||
|
|
|
|
||||||
LL | fn avr_ptr(f: extern "avr-interrupt" fn()) {
|
LL | fn avr_ptr(f: extern "avr-interrupt" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "msp430-interrupt" is not a supported ABI for the current target
|
error[E0570]: "msp430-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:70:25
|
--> $DIR/cannot-be-called.rs:72:25
|
||||||
|
|
|
|
||||||
LL | fn msp430_ptr(f: extern "msp430-interrupt" fn()) {
|
LL | fn msp430_ptr(f: extern "msp430-interrupt" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "riscv-interrupt-m" is not a supported ABI for the current target
|
error[E0570]: "riscv-interrupt-m" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:76:26
|
--> $DIR/cannot-be-called.rs:78:26
|
||||||
|
|
|
|
||||||
LL | fn riscv_m_ptr(f: extern "riscv-interrupt-m" fn()) {
|
LL | fn riscv_m_ptr(f: extern "riscv-interrupt-m" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "riscv-interrupt-s" is not a supported ABI for the current target
|
error[E0570]: "riscv-interrupt-s" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:82:26
|
--> $DIR/cannot-be-called.rs:84:26
|
||||||
|
|
|
|
||||||
LL | fn riscv_s_ptr(f: extern "riscv-interrupt-s" fn()) {
|
LL | fn riscv_s_ptr(f: extern "riscv-interrupt-s" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: functions with the "x86-interrupt" ABI cannot be called
|
error: functions with the "x86-interrupt" ABI cannot be called
|
||||||
--> $DIR/cannot-be-called.rs:58:5
|
--> $DIR/cannot-be-called.rs:60:5
|
||||||
|
|
|
|
||||||
LL | x86();
|
LL | x86(&raw const BYTE);
|
||||||
| ^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
note: an `extern "x86-interrupt"` function can only be called using inline assembly
|
note: an `extern "x86-interrupt"` function can only be called using inline assembly
|
||||||
--> $DIR/cannot-be-called.rs:58:5
|
--> $DIR/cannot-be-called.rs:60:5
|
||||||
|
|
|
|
||||||
LL | x86();
|
LL | x86(&raw const BYTE);
|
||||||
| ^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: functions with the "x86-interrupt" ABI cannot be called
|
error: functions with the "x86-interrupt" ABI cannot be called
|
||||||
--> $DIR/cannot-be-called.rs:90:5
|
--> $DIR/cannot-be-called.rs:92:5
|
||||||
|
|
|
|
||||||
LL | f()
|
LL | f()
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|
|
|
||||||
note: an `extern "x86-interrupt"` function can only be called using inline assembly
|
note: an `extern "x86-interrupt"` function can only be called using inline assembly
|
||||||
--> $DIR/cannot-be-called.rs:90:5
|
--> $DIR/cannot-be-called.rs:92:5
|
||||||
|
|
|
|
||||||
LL | f()
|
LL | f()
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|||||||
@@ -23,49 +23,49 @@ LL | extern "riscv-interrupt-s" fn riscv_s() {}
|
|||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "avr-interrupt" is not a supported ABI for the current target
|
error[E0570]: "avr-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:64:22
|
--> $DIR/cannot-be-called.rs:66:22
|
||||||
|
|
|
|
||||||
LL | fn avr_ptr(f: extern "avr-interrupt" fn()) {
|
LL | fn avr_ptr(f: extern "avr-interrupt" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "msp430-interrupt" is not a supported ABI for the current target
|
error[E0570]: "msp430-interrupt" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:70:25
|
--> $DIR/cannot-be-called.rs:72:25
|
||||||
|
|
|
|
||||||
LL | fn msp430_ptr(f: extern "msp430-interrupt" fn()) {
|
LL | fn msp430_ptr(f: extern "msp430-interrupt" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "riscv-interrupt-m" is not a supported ABI for the current target
|
error[E0570]: "riscv-interrupt-m" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:76:26
|
--> $DIR/cannot-be-called.rs:78:26
|
||||||
|
|
|
|
||||||
LL | fn riscv_m_ptr(f: extern "riscv-interrupt-m" fn()) {
|
LL | fn riscv_m_ptr(f: extern "riscv-interrupt-m" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0570]: "riscv-interrupt-s" is not a supported ABI for the current target
|
error[E0570]: "riscv-interrupt-s" is not a supported ABI for the current target
|
||||||
--> $DIR/cannot-be-called.rs:82:26
|
--> $DIR/cannot-be-called.rs:84:26
|
||||||
|
|
|
|
||||||
LL | fn riscv_s_ptr(f: extern "riscv-interrupt-s" fn()) {
|
LL | fn riscv_s_ptr(f: extern "riscv-interrupt-s" fn()) {
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: functions with the "x86-interrupt" ABI cannot be called
|
error: functions with the "x86-interrupt" ABI cannot be called
|
||||||
--> $DIR/cannot-be-called.rs:58:5
|
--> $DIR/cannot-be-called.rs:60:5
|
||||||
|
|
|
|
||||||
LL | x86();
|
LL | x86(&raw const BYTE);
|
||||||
| ^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
note: an `extern "x86-interrupt"` function can only be called using inline assembly
|
note: an `extern "x86-interrupt"` function can only be called using inline assembly
|
||||||
--> $DIR/cannot-be-called.rs:58:5
|
--> $DIR/cannot-be-called.rs:60:5
|
||||||
|
|
|
|
||||||
LL | x86();
|
LL | x86(&raw const BYTE);
|
||||||
| ^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: functions with the "x86-interrupt" ABI cannot be called
|
error: functions with the "x86-interrupt" ABI cannot be called
|
||||||
--> $DIR/cannot-be-called.rs:90:5
|
--> $DIR/cannot-be-called.rs:92:5
|
||||||
|
|
|
|
||||||
LL | f()
|
LL | f()
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|
|
|
||||||
note: an `extern "x86-interrupt"` function can only be called using inline assembly
|
note: an `extern "x86-interrupt"` function can only be called using inline assembly
|
||||||
--> $DIR/cannot-be-called.rs:90:5
|
--> $DIR/cannot-be-called.rs:92:5
|
||||||
|
|
|
|
||||||
LL | f()
|
LL | f()
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
error: functions with the "x86-interrupt" ABI cannot be `async`
|
error: functions with the "x86-interrupt" ABI cannot be `async`
|
||||||
--> $DIR/cannot-be-coroutine.rs:52:1
|
--> $DIR/cannot-be-coroutine.rs:52:1
|
||||||
|
|
|
|
||||||
LL | async extern "x86-interrupt" fn x86() {
|
LL | async extern "x86-interrupt" fn x86(_p: *mut ()) {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
help: remove the `async` keyword from this definition
|
help: remove the `async` keyword from this definition
|
||||||
|
|
|
|
||||||
LL - async extern "x86-interrupt" fn x86() {
|
LL - async extern "x86-interrupt" fn x86(_p: *mut ()) {
|
||||||
LL + extern "x86-interrupt" fn x86() {
|
LL + extern "x86-interrupt" fn x86(_p: *mut ()) {
|
||||||
|
|
|
|
||||||
|
|
||||||
error: requires `ResumeTy` lang_item
|
error: requires `ResumeTy` lang_item
|
||||||
|
|||||||
@@ -49,6 +49,6 @@ async extern "riscv-interrupt-s" fn riscv_s() {
|
|||||||
//[riscv32,riscv64]~^ ERROR functions with the "riscv-interrupt-s" ABI cannot be `async`
|
//[riscv32,riscv64]~^ ERROR functions with the "riscv-interrupt-s" ABI cannot be `async`
|
||||||
}
|
}
|
||||||
|
|
||||||
async extern "x86-interrupt" fn x86() {
|
async extern "x86-interrupt" fn x86(_p: *mut ()) {
|
||||||
//[x64,x64_win,i686]~^ ERROR functions with the "x86-interrupt" ABI cannot be `async`
|
//[x64,x64_win,i686]~^ ERROR functions with the "x86-interrupt" ABI cannot be `async`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
error: functions with the "x86-interrupt" ABI cannot be `async`
|
error: functions with the "x86-interrupt" ABI cannot be `async`
|
||||||
--> $DIR/cannot-be-coroutine.rs:52:1
|
--> $DIR/cannot-be-coroutine.rs:52:1
|
||||||
|
|
|
|
||||||
LL | async extern "x86-interrupt" fn x86() {
|
LL | async extern "x86-interrupt" fn x86(_p: *mut ()) {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
help: remove the `async` keyword from this definition
|
help: remove the `async` keyword from this definition
|
||||||
|
|
|
|
||||||
LL - async extern "x86-interrupt" fn x86() {
|
LL - async extern "x86-interrupt" fn x86(_p: *mut ()) {
|
||||||
LL + extern "x86-interrupt" fn x86() {
|
LL + extern "x86-interrupt" fn x86(_p: *mut ()) {
|
||||||
|
|
|
|
||||||
|
|
||||||
error: requires `ResumeTy` lang_item
|
error: requires `ResumeTy` lang_item
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
error: functions with the "x86-interrupt" ABI cannot be `async`
|
error: functions with the "x86-interrupt" ABI cannot be `async`
|
||||||
--> $DIR/cannot-be-coroutine.rs:52:1
|
--> $DIR/cannot-be-coroutine.rs:52:1
|
||||||
|
|
|
|
||||||
LL | async extern "x86-interrupt" fn x86() {
|
LL | async extern "x86-interrupt" fn x86(_p: *mut ()) {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
help: remove the `async` keyword from this definition
|
help: remove the `async` keyword from this definition
|
||||||
|
|
|
|
||||||
LL - async extern "x86-interrupt" fn x86() {
|
LL - async extern "x86-interrupt" fn x86(_p: *mut ()) {
|
||||||
LL + extern "x86-interrupt" fn x86() {
|
LL + extern "x86-interrupt" fn x86(_p: *mut ()) {
|
||||||
|
|
|
|
||||||
|
|
||||||
error: requires `ResumeTy` lang_item
|
error: requires `ResumeTy` lang_item
|
||||||
|
|||||||
@@ -1,15 +1,31 @@
|
|||||||
error: invalid signature for `extern "x86-interrupt"` function
|
error: invalid signature for `extern "x86-interrupt"` function
|
||||||
--> $DIR/interrupt-invalid-signature.rs:83:40
|
--> $DIR/interrupt-invalid-signature.rs:83:53
|
||||||
|
|
|
|
||||||
LL | extern "x86-interrupt" fn x86_ret() -> u8 {
|
LL | extern "x86-interrupt" fn x86_ret(_p: *const u8) -> u8 {
|
||||||
| ^^
|
| ^^
|
||||||
|
|
|
|
||||||
= note: functions with the "x86-interrupt" ABI cannot have a return type
|
= note: functions with the "x86-interrupt" ABI cannot have a return type
|
||||||
help: remove the return type
|
help: remove the return type
|
||||||
--> $DIR/interrupt-invalid-signature.rs:83:40
|
--> $DIR/interrupt-invalid-signature.rs:83:53
|
||||||
|
|
|
|
||||||
LL | extern "x86-interrupt" fn x86_ret() -> u8 {
|
LL | extern "x86-interrupt" fn x86_ret(_p: *const u8) -> u8 {
|
||||||
| ^^
|
| ^^
|
||||||
|
|
||||||
error: aborting due to 1 previous error
|
error: invalid signature for `extern "x86-interrupt"` function
|
||||||
|
--> $DIR/interrupt-invalid-signature.rs:89:1
|
||||||
|
|
|
||||||
|
LL | extern "x86-interrupt" fn x86_0() {
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: functions with the "x86-interrupt" ABI must be have either 1 or 2 parameters (but found 0)
|
||||||
|
|
||||||
|
error: invalid signature for `extern "x86-interrupt"` function
|
||||||
|
--> $DIR/interrupt-invalid-signature.rs:100:33
|
||||||
|
|
|
||||||
|
LL | extern "x86-interrupt" fn x86_3(_p1: *const u8, _p2: *const u8, _p3: *const u8) {
|
||||||
|
| ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: functions with the "x86-interrupt" ABI must be have either 1 or 2 parameters (but found 3)
|
||||||
|
|
||||||
|
error: aborting due to 3 previous errors
|
||||||
|
|
||||||
|
|||||||
@@ -80,11 +80,27 @@ extern "riscv-interrupt-s" fn riscv_s_ret() -> u8 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(x64,i686))]
|
#[cfg(any(x64,i686))]
|
||||||
extern "x86-interrupt" fn x86_ret() -> u8 {
|
extern "x86-interrupt" fn x86_ret(_p: *const u8) -> u8 {
|
||||||
//[x64,i686]~^ ERROR invalid signature
|
//[x64,i686]~^ ERROR invalid signature
|
||||||
1
|
1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(any(x64,i686))]
|
||||||
|
extern "x86-interrupt" fn x86_0() {
|
||||||
|
//[x64,i686]~^ ERROR invalid signature
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(any(x64,i686))]
|
||||||
|
extern "x86-interrupt" fn x86_1(_p1: *const u8) { }
|
||||||
|
|
||||||
|
#[cfg(any(x64,i686))]
|
||||||
|
extern "x86-interrupt" fn x86_2(_p1: *const u8, _p2: *const u8) { }
|
||||||
|
|
||||||
|
#[cfg(any(x64,i686))]
|
||||||
|
extern "x86-interrupt" fn x86_3(_p1: *const u8, _p2: *const u8, _p3: *const u8) {
|
||||||
|
//[x64,i686]~^ ERROR invalid signature
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* extern "interrupt" fnptrs with invalid signatures */
|
/* extern "interrupt" fnptrs with invalid signatures */
|
||||||
|
|||||||
@@ -1,15 +1,31 @@
|
|||||||
error: invalid signature for `extern "x86-interrupt"` function
|
error: invalid signature for `extern "x86-interrupt"` function
|
||||||
--> $DIR/interrupt-invalid-signature.rs:83:40
|
--> $DIR/interrupt-invalid-signature.rs:83:53
|
||||||
|
|
|
|
||||||
LL | extern "x86-interrupt" fn x86_ret() -> u8 {
|
LL | extern "x86-interrupt" fn x86_ret(_p: *const u8) -> u8 {
|
||||||
| ^^
|
| ^^
|
||||||
|
|
|
|
||||||
= note: functions with the "x86-interrupt" ABI cannot have a return type
|
= note: functions with the "x86-interrupt" ABI cannot have a return type
|
||||||
help: remove the return type
|
help: remove the return type
|
||||||
--> $DIR/interrupt-invalid-signature.rs:83:40
|
--> $DIR/interrupt-invalid-signature.rs:83:53
|
||||||
|
|
|
|
||||||
LL | extern "x86-interrupt" fn x86_ret() -> u8 {
|
LL | extern "x86-interrupt" fn x86_ret(_p: *const u8) -> u8 {
|
||||||
| ^^
|
| ^^
|
||||||
|
|
||||||
error: aborting due to 1 previous error
|
error: invalid signature for `extern "x86-interrupt"` function
|
||||||
|
--> $DIR/interrupt-invalid-signature.rs:89:1
|
||||||
|
|
|
||||||
|
LL | extern "x86-interrupt" fn x86_0() {
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: functions with the "x86-interrupt" ABI must be have either 1 or 2 parameters (but found 0)
|
||||||
|
|
||||||
|
error: invalid signature for `extern "x86-interrupt"` function
|
||||||
|
--> $DIR/interrupt-invalid-signature.rs:100:33
|
||||||
|
|
|
||||||
|
LL | extern "x86-interrupt" fn x86_3(_p1: *const u8, _p2: *const u8, _p3: *const u8) {
|
||||||
|
| ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: functions with the "x86-interrupt" ABI must be have either 1 or 2 parameters (but found 3)
|
||||||
|
|
||||||
|
error: aborting due to 3 previous errors
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ extern "riscv-interrupt-s" fn riscv_s_ret_never() -> ! {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(x64,i686))]
|
#[cfg(any(x64,i686))]
|
||||||
extern "x86-interrupt" fn x86_ret_never() -> ! {
|
extern "x86-interrupt" fn x86_ret_never(_p: *const u8) -> ! {
|
||||||
loop {}
|
loop {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,7 +83,7 @@ extern "riscv-interrupt-s" fn riscv_s_ret_unit() -> () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(x64,i686))]
|
#[cfg(any(x64,i686))]
|
||||||
extern "x86-interrupt" fn x86_ret_unit() -> () {
|
extern "x86-interrupt" fn x86_ret_unit(_x: *const u8) -> () {
|
||||||
()
|
()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,22 +7,22 @@
|
|||||||
extern crate minicore;
|
extern crate minicore;
|
||||||
use minicore::*;
|
use minicore::*;
|
||||||
|
|
||||||
extern "x86-interrupt" fn f7() {} //~ ERROR "x86-interrupt" ABI is experimental
|
extern "x86-interrupt" fn f7(_p: *const u8) {} //~ ERROR "x86-interrupt" ABI is experimental
|
||||||
trait Tr {
|
trait Tr {
|
||||||
extern "x86-interrupt" fn m7(); //~ ERROR "x86-interrupt" ABI is experimental
|
extern "x86-interrupt" fn m7(_p: *const u8); //~ ERROR "x86-interrupt" ABI is experimental
|
||||||
extern "x86-interrupt" fn dm7() {} //~ ERROR "x86-interrupt" ABI is experimental
|
extern "x86-interrupt" fn dm7(_p: *const u8) {} //~ ERROR "x86-interrupt" ABI is experimental
|
||||||
}
|
}
|
||||||
|
|
||||||
struct S;
|
struct S;
|
||||||
|
|
||||||
// Methods in trait impl
|
// Methods in trait impl
|
||||||
impl Tr for S {
|
impl Tr for S {
|
||||||
extern "x86-interrupt" fn m7() {} //~ ERROR "x86-interrupt" ABI is experimental
|
extern "x86-interrupt" fn m7(_p: *const u8) {} //~ ERROR "x86-interrupt" ABI is experimental
|
||||||
}
|
}
|
||||||
|
|
||||||
// Methods in inherent impl
|
// Methods in inherent impl
|
||||||
impl S {
|
impl S {
|
||||||
extern "x86-interrupt" fn im7() {} //~ ERROR "x86-interrupt" ABI is experimental
|
extern "x86-interrupt" fn im7(_p: *const u8) {} //~ ERROR "x86-interrupt" ABI is experimental
|
||||||
}
|
}
|
||||||
|
|
||||||
type A7 = extern "x86-interrupt" fn(); //~ ERROR "x86-interrupt" ABI is experimental
|
type A7 = extern "x86-interrupt" fn(); //~ ERROR "x86-interrupt" ABI is experimental
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
error[E0658]: the extern "x86-interrupt" ABI is experimental and subject to change
|
error[E0658]: the extern "x86-interrupt" ABI is experimental and subject to change
|
||||||
--> $DIR/feature-gate-abi-x86-interrupt.rs:10:8
|
--> $DIR/feature-gate-abi-x86-interrupt.rs:10:8
|
||||||
|
|
|
|
||||||
LL | extern "x86-interrupt" fn f7() {}
|
LL | extern "x86-interrupt" fn f7(_p: *const u8) {}
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
|
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
|
||||||
@@ -11,7 +11,7 @@ LL | extern "x86-interrupt" fn f7() {}
|
|||||||
error[E0658]: the extern "x86-interrupt" ABI is experimental and subject to change
|
error[E0658]: the extern "x86-interrupt" ABI is experimental and subject to change
|
||||||
--> $DIR/feature-gate-abi-x86-interrupt.rs:12:12
|
--> $DIR/feature-gate-abi-x86-interrupt.rs:12:12
|
||||||
|
|
|
|
||||||
LL | extern "x86-interrupt" fn m7();
|
LL | extern "x86-interrupt" fn m7(_p: *const u8);
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
|
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
|
||||||
@@ -21,7 +21,7 @@ LL | extern "x86-interrupt" fn m7();
|
|||||||
error[E0658]: the extern "x86-interrupt" ABI is experimental and subject to change
|
error[E0658]: the extern "x86-interrupt" ABI is experimental and subject to change
|
||||||
--> $DIR/feature-gate-abi-x86-interrupt.rs:13:12
|
--> $DIR/feature-gate-abi-x86-interrupt.rs:13:12
|
||||||
|
|
|
|
||||||
LL | extern "x86-interrupt" fn dm7() {}
|
LL | extern "x86-interrupt" fn dm7(_p: *const u8) {}
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
|
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
|
||||||
@@ -31,7 +31,7 @@ LL | extern "x86-interrupt" fn dm7() {}
|
|||||||
error[E0658]: the extern "x86-interrupt" ABI is experimental and subject to change
|
error[E0658]: the extern "x86-interrupt" ABI is experimental and subject to change
|
||||||
--> $DIR/feature-gate-abi-x86-interrupt.rs:20:12
|
--> $DIR/feature-gate-abi-x86-interrupt.rs:20:12
|
||||||
|
|
|
|
||||||
LL | extern "x86-interrupt" fn m7() {}
|
LL | extern "x86-interrupt" fn m7(_p: *const u8) {}
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
|
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
|
||||||
@@ -41,7 +41,7 @@ LL | extern "x86-interrupt" fn m7() {}
|
|||||||
error[E0658]: the extern "x86-interrupt" ABI is experimental and subject to change
|
error[E0658]: the extern "x86-interrupt" ABI is experimental and subject to change
|
||||||
--> $DIR/feature-gate-abi-x86-interrupt.rs:25:12
|
--> $DIR/feature-gate-abi-x86-interrupt.rs:25:12
|
||||||
|
|
|
|
||||||
LL | extern "x86-interrupt" fn im7() {}
|
LL | extern "x86-interrupt" fn im7(_p: *const u8) {}
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
|
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
|
||||||
|
|||||||
Reference in New Issue
Block a user