1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
#![no_std] #![feature(lang_items)] #![allocator] #![feature(allocator)] #[no_mangle] pub extern "C" fn __rust_allocate(size: usize, align: usize) -> *mut u8 { unsafe { imp::allocate(size, align) } } #[no_mangle] pub extern "C" fn __rust_deallocate(ptr: *mut u8, old_size: usize, align: usize) { unsafe { imp::deallocate(ptr, old_size, align) } } #[no_mangle] pub extern "C" fn __rust_reallocate(ptr: *mut u8, old_size: usize, size: usize, align: usize) -> *mut u8 { unsafe { imp::reallocate(ptr, old_size, size, align) } } #[no_mangle] pub extern "C" fn __rust_reallocate_inplace(ptr: *mut u8, old_size: usize, size: usize, align: usize) -> usize { unsafe { imp::reallocate_inplace(ptr, old_size, size, align) } } #[no_mangle] pub extern "C" fn __rust_usable_size(size: usize, align: usize) -> usize { imp::usable_size(size, align) } mod imp { extern "C" { fn malloc(size: usize) -> *mut u8; fn realloc(ptr: *mut u8, size: usize) -> *mut u8; fn free(ptr: *mut u8); } pub unsafe fn allocate(size: usize, _: usize) -> *mut u8 { malloc(size) } pub unsafe fn reallocate(ptr: *mut u8, _: usize, size: usize, _: usize) -> *mut u8 { realloc(ptr, size) } pub unsafe fn reallocate_inplace(_ptr: *mut u8, old_size: usize, _size: usize, _align: usize) -> usize { old_size } pub unsafe fn deallocate(ptr: *mut u8, _: usize, _: usize) { free(ptr) } pub fn usable_size(size: usize, _align: usize) -> usize { size } }