2023-04-24 17:08:35 -05:00
|
|
|
#![feature(panic_handler, alloc_error_handler)]
|
2018-08-02 14:30:43 -05:00
|
|
|
#![crate_type = "cdylib"]
|
|
|
|
#![no_std]
|
|
|
|
|
|
|
|
use core::alloc::*;
|
|
|
|
|
|
|
|
struct B;
|
|
|
|
|
|
|
|
unsafe impl GlobalAlloc for B {
|
|
|
|
unsafe fn alloc(&self, x: Layout) -> *mut u8 {
|
|
|
|
1 as *mut u8
|
|
|
|
}
|
|
|
|
|
|
|
|
unsafe fn dealloc(&self, ptr: *mut u8, x: Layout) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#[global_allocator]
|
|
|
|
static A: B = B;
|
|
|
|
|
|
|
|
#[no_mangle]
|
|
|
|
pub extern fn foo(a: u32) -> u32 {
|
|
|
|
assert_eq!(a, 3);
|
|
|
|
a * 2
|
|
|
|
}
|
|
|
|
|
2023-04-24 17:08:35 -05:00
|
|
|
#[alloc_error_handler]
|
|
|
|
fn a(_: core::alloc::Layout) -> ! {
|
|
|
|
loop {}
|
|
|
|
}
|
|
|
|
|
2018-08-22 17:40:32 -05:00
|
|
|
#[panic_handler]
|
2018-08-02 14:30:43 -05:00
|
|
|
fn b(_: &core::panic::PanicInfo) -> ! {
|
|
|
|
loop {}
|
|
|
|
}
|