1#![allow(bad_style)]
2#![no_std]
3
4extern crate libc;
5
6#[cfg(not(empty))]
7pub use self::bindings::*;
8#[cfg(not(empty))]
9mod bindings {
10 use libc::{c_char, c_int, c_void, uintptr_t};
11
12 pub type backtrace_syminfo_callback = extern "C" fn(
13 data: *mut c_void,
14 pc: uintptr_t,
15 symname: *const c_char,
16 symval: uintptr_t,
17 symsize: uintptr_t,
18 );
19 pub type backtrace_full_callback = extern "C" fn(
20 data: *mut c_void,
21 pc: uintptr_t,
22 filename: *const c_char,
23 lineno: c_int,
24 function: *const c_char,
25 ) -> c_int;
26 pub type backtrace_error_callback =
27 extern "C" fn(data: *mut c_void, msg: *const c_char, errnum: c_int);
28 pub enum backtrace_state {}
29
30 extern "C" {
31 #[cfg_attr(rdos, link_name = "__rdos_backtrace_create_state")]
32 #[cfg_attr(rbt, link_name = "__rbt_backtrace_create_state")]
33 pub fn backtrace_create_state(
34 filename: *const c_char,
35 threaded: c_int,
36 error: backtrace_error_callback,
37 data: *mut c_void,
38 ) -> *mut backtrace_state;
39 #[cfg_attr(rdos, link_name = "__rdos_backtrace_syminfo")]
40 #[cfg_attr(rbt, link_name = "__rbt_backtrace_syminfo")]
41 pub fn backtrace_syminfo(
42 state: *mut backtrace_state,
43 addr: uintptr_t,
44 cb: backtrace_syminfo_callback,
45 error: backtrace_error_callback,
46 data: *mut c_void,
47 ) -> c_int;
48 #[cfg_attr(rdos, link_name = "__rdos_backtrace_pcinfo")]
49 #[cfg_attr(rbt, link_name = "__rbt_backtrace_pcinfo")]
50 pub fn backtrace_pcinfo(
51 state: *mut backtrace_state,
52 addr: uintptr_t,
53 cb: backtrace_full_callback,
54 error: backtrace_error_callback,
55 data: *mut c_void,
56 ) -> c_int;
57 }
58}