cxa.rs 642 B

12345678910111213141516171819202122232425262728
  1. use crate::platform::types::*;
  2. // TODO: Implement cxa_finalize and uncomment this
  3. #[derive(Clone, Copy)]
  4. struct CxaAtExitFunc {
  5. //func: extern "C" fn(*mut c_void),
  6. //arg: *mut c_void,
  7. //dso: *mut c_void,
  8. }
  9. static mut CXA_ATEXIT_FUNCS: [Option<CxaAtExitFunc>; 32] = [None; 32];
  10. #[no_mangle]
  11. pub unsafe extern "C" fn __cxa_atexit(
  12. func_opt: Option<extern "C" fn(*mut c_void)>,
  13. arg: *mut c_void,
  14. dso: *mut c_void,
  15. ) -> c_int {
  16. for item in &mut CXA_ATEXIT_FUNCS {
  17. if item.is_none() {
  18. *item = func_opt.map(|func| CxaAtExitFunc {} /*{ func, arg, dso }*/);
  19. return 0;
  20. }
  21. }
  22. -1
  23. }