diff options
| author | tiif <pekyuan@gmail.com> | 2025-03-11 16:46:26 +0000 |
|---|---|---|
| committer | tiif <pekyuan@gmail.com> | 2025-03-12 14:38:52 +0000 |
| commit | d463c5d07c4715f4ebd86b2093139784fa69bd2b (patch) | |
| tree | c8f14046edea644b5deb38dd0b2fbbf9befc94c4 | |
| parent | 43c51e9ff33e0014c0e17712d01ae8dc44a57096 (diff) | |
| download | rust-d463c5d07c4715f4ebd86b2093139784fa69bd2b.tar.gz rust-d463c5d07c4715f4ebd86b2093139784fa69bd2b.zip | |
Implement Display by mapping Conv to ExternAbi
| -rw-r--r-- | compiler/rustc_target/src/callconv/mod.rs | 53 | ||||
| -rw-r--r-- | src/tools/miri/tests/fail/function_calls/check_arg_abi.rs | 2 | ||||
| -rw-r--r-- | src/tools/miri/tests/fail/function_calls/check_arg_abi.stderr | 4 |
3 files changed, 30 insertions, 29 deletions
diff --git a/compiler/rustc_target/src/callconv/mod.rs b/compiler/rustc_target/src/callconv/mod.rs index 0ea0d2d0173..8d8270cd8cd 100644 --- a/compiler/rustc_target/src/callconv/mod.rs +++ b/compiler/rustc_target/src/callconv/mod.rs @@ -898,34 +898,35 @@ impl FromStr for Conv { } } +fn conv_to_externabi(conv: &Conv) -> ExternAbi { + match conv { + Conv::Rust => ExternAbi::Rust, + Conv::PreserveMost => ExternAbi::RustCold, + Conv::X86Stdcall => ExternAbi::Stdcall{unwind: false}, + Conv::X86Fastcall => ExternAbi::Fastcall{unwind: false}, + Conv::X86VectorCall => ExternAbi::Vectorcall{unwind: false}, + Conv::X86ThisCall => ExternAbi::Thiscall{unwind: false}, + Conv::C => ExternAbi::C{unwind: false}, + Conv::X86_64Win64 => ExternAbi::Win64{unwind: false}, + Conv::X86_64SysV => ExternAbi::SysV64{unwind: false}, + Conv::ArmAapcs => ExternAbi::Aapcs{unwind: false}, + Conv::CCmseNonSecureCall => ExternAbi::CCmseNonSecureCall, + Conv::CCmseNonSecureEntry => ExternAbi::CCmseNonSecureEntry, + Conv::PtxKernel => ExternAbi::PtxKernel, + Conv::Msp430Intr => ExternAbi::Msp430Interrupt, + Conv::X86Intr => ExternAbi::X86Interrupt, + Conv::GpuKernel => ExternAbi::GpuKernel, + Conv::AvrInterrupt => ExternAbi::AvrInterrupt, + Conv::AvrNonBlockingInterrupt => ExternAbi::AvrNonBlockingInterrupt, + Conv::RiscvInterrupt { kind: RiscvInterruptKind::Machine } => ExternAbi::RiscvInterruptM, + Conv::RiscvInterrupt { kind: RiscvInterruptKind::Supervisor } => ExternAbi::RiscvInterruptS, + Conv::Cold | Conv::PreserveAll => panic!("This is deadcode"), + } +} + impl Display for Conv { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str(match self { - Conv::C => "C", - Conv::Rust => "Rust", - Conv::Cold => "Cold", - Conv::PreserveMost => "PreserveMost", - Conv::PreserveAll => "PreserveAll", - Conv::ArmAapcs => "ArmAapcs", - Conv::CCmseNonSecureCall => "CCmseNonSecureCall", - Conv::CCmseNonSecureEntry => "CCmseNonSecureEntry", - Conv::Msp430Intr => "Msp430Intr", - Conv::PtxKernel => "PtxKernel", - Conv::GpuKernel => "GpuKernel", - Conv::X86Fastcall => "X86Fastcall", - Conv::X86Intr => "X86Intr", - Conv::X86Stdcall => "X86Stdcall", - Conv::X86ThisCall => "X86ThisCall", - Conv::X86VectorCall => "X86VectorCall", - Conv::X86_64SysV => "X86_64SysV", - Conv::X86_64Win64 => "X86_64Win64", - Conv::AvrInterrupt => "AvrInterrupt", - Conv::AvrNonBlockingInterrupt => "AvrNonBlockingInterrupt", - Conv::RiscvInterrupt { kind: RiscvInterruptKind::Machine } => "RiscvInterrupt(machine)", - Conv::RiscvInterrupt { kind: RiscvInterruptKind::Supervisor } => { - "RiscvInterrupt(supervisor)" - } - }) + write!(f, "{}", conv_to_externabi(self)) } } diff --git a/src/tools/miri/tests/fail/function_calls/check_arg_abi.rs b/src/tools/miri/tests/fail/function_calls/check_arg_abi.rs index ffa0443ce50..0e916364169 100644 --- a/src/tools/miri/tests/fail/function_calls/check_arg_abi.rs +++ b/src/tools/miri/tests/fail/function_calls/check_arg_abi.rs @@ -4,6 +4,6 @@ fn main() { } unsafe { - let _ = malloc(0); //~ ERROR: calling a function with ABI C using caller ABI Rust + let _ = malloc(0); //~ ERROR: calling a function with calling convention "C" using caller calling convention "Rust" }; } diff --git a/src/tools/miri/tests/fail/function_calls/check_arg_abi.stderr b/src/tools/miri/tests/fail/function_calls/check_arg_abi.stderr index bf1fbb7721f..78730182923 100644 --- a/src/tools/miri/tests/fail/function_calls/check_arg_abi.stderr +++ b/src/tools/miri/tests/fail/function_calls/check_arg_abi.stderr @@ -1,8 +1,8 @@ -error: Undefined Behavior: calling a function with ABI C using caller ABI Rust +error: Undefined Behavior: calling a function with calling convention "C" using caller calling convention "Rust" --> tests/fail/function_calls/check_arg_abi.rs:LL:CC | LL | let _ = malloc(0); - | ^^^^^^^^^ calling a function with ABI C using caller ABI Rust + | ^^^^^^^^^ calling a function with calling convention "C" using caller calling convention "Rust" | = help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior = help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information |
