backtrace_sys/
lib.rs

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}