12345678910111213141516171819202122232425262728 |
- use platform::types::*;
- #[derive(Clone, Copy)]
- struct CxaAtExitFunc {
- func: extern "C" fn(*mut c_void),
- arg: *mut c_void,
- dso: *mut c_void,
- }
- static mut CXA_ATEXIT_FUNCS: [Option<CxaAtExitFunc>; 32] = [None; 32];
- #[no_mangle]
- pub unsafe extern "C" fn __cxa_atexit(
- func_opt: Option<extern "C" fn(*mut c_void)>,
- arg: *mut c_void,
- dso: *mut c_void,
- ) -> c_int {
- for item in &mut CXA_ATEXIT_FUNCS {
- if item.is_none() {
- *item = func_opt.map(|func| CxaAtExitFunc { func, arg, dso });
- return 0;
- }
- }
- -1
- }
- // TODO: cxa_finalize
|