blob: 7c66e81fa23a967280f6d5a2905fbbf151392e80 [file] [log] [blame] [edit]
use gimli::{EndianSlice, NativeEndian, Pointer};
pub type StaticSlice = EndianSlice<'static, NativeEndian>;
pub unsafe fn get_unlimited_slice<'a>(start: *const u8) -> &'a [u8] {
// Create the largest possible slice for this address.
let start = start as usize;
let end = start.saturating_add(isize::MAX as _);
let len = end - start;
unsafe { core::slice::from_raw_parts(start as *const _, len) }
}
pub unsafe fn deref_pointer(ptr: Pointer) -> usize {
match ptr {
Pointer::Direct(x) => x as _,
Pointer::Indirect(x) => unsafe { *(x as *const _) },
}
}
#[cfg(feature = "libc")]
pub use libc::c_int;
#[cfg(not(feature = "libc"))]
#[allow(non_camel_case_types)]
pub type c_int = i32;
#[cfg(all(
any(feature = "panic", feature = "panic-handler-dummy"),
feature = "libc"
))]
pub fn abort() -> ! {
unsafe { libc::abort() };
}
#[cfg(all(
any(feature = "panic", feature = "panic-handler-dummy"),
not(feature = "libc")
))]
pub fn abort() -> ! {
core::intrinsics::abort();
}