23 lines
712 B
Rust
23 lines
712 B
Rust
//! assert implementation for Redox, following http://pubs.opengroup.org/onlinepubs/7908799/xsh/assert.h.html
|
|
|
|
// TODO: set this for entire crate when possible
|
|
#![deny(unsafe_op_in_unsafe_fn)]
|
|
|
|
use crate::{c_str::CStr, platform::types::*};
|
|
|
|
#[unsafe(no_mangle)]
|
|
pub unsafe extern "C" fn __assert_fail(
|
|
func: *const c_char,
|
|
file: *const c_char,
|
|
line: c_int,
|
|
cond: *const c_char,
|
|
) -> ! {
|
|
let func = unsafe { CStr::from_ptr(func) }.to_str().unwrap();
|
|
let file = unsafe { CStr::from_ptr(file) }.to_str().unwrap();
|
|
let cond = unsafe { CStr::from_ptr(cond) }.to_str().unwrap();
|
|
|
|
eprintln!("{}: {}:{}: Assertion `{}` failed.", func, file, line, cond);
|
|
|
|
core::intrinsics::abort();
|
|
}
|