#![feature(panic_handler, alloc_error_handler)] #![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 "C" fn foo(a: u32) -> u32 { assert_eq!(a, 3); a * 2 } #[alloc_error_handler] fn a(_: core::alloc::Layout) -> ! { loop {} } #[panic_handler] fn b(_: &core::panic::PanicInfo) -> ! { loop {} }