While cg_llvm is very lax about mismatched function signatures, cg_clif will crash when there is any mismatch. It could be turned into an error, but without Cranelift changes can't just be ignored.
51 lines
967 B
Rust
51 lines
967 B
Rust
#![feature(rustc_attrs)]
|
|
#![no_std]
|
|
#![no_main]
|
|
|
|
extern crate alloc;
|
|
|
|
use alloc::alloc::{GlobalAlloc, Layout};
|
|
|
|
#[panic_handler]
|
|
fn panic_handler(_: &core::panic::PanicInfo) -> ! {
|
|
loop {}
|
|
}
|
|
|
|
#[no_mangle]
|
|
extern "C" fn rust_eh_personality(
|
|
_version: i32,
|
|
_actions: i32,
|
|
_exception_class: u64,
|
|
_exception_object: *mut (),
|
|
_context: *mut (),
|
|
) -> i32 {
|
|
loop {}
|
|
}
|
|
|
|
#[global_allocator]
|
|
static ALLOC: Alloc = Alloc;
|
|
|
|
struct Alloc;
|
|
|
|
unsafe impl GlobalAlloc for Alloc {
|
|
unsafe fn alloc(&self, _: Layout) -> *mut u8 {
|
|
core::ptr::null_mut()
|
|
}
|
|
unsafe fn dealloc(&self, _: *mut u8, _: Layout) {
|
|
todo!()
|
|
}
|
|
}
|
|
|
|
#[cfg(not(check_feature_gate))]
|
|
#[rustc_std_internal_symbol]
|
|
fn __rust_no_alloc_shim_is_unstable_v2() {}
|
|
|
|
#[no_mangle]
|
|
extern "C" fn main(_argc: core::ffi::c_int, _argv: *const *const i8) -> i32 {
|
|
unsafe {
|
|
assert_eq!(alloc::alloc::alloc(Layout::new::<()>()), core::ptr::null_mut());
|
|
}
|
|
|
|
0
|
|
}
|