libunwind_sys/
x86_64.rs

1//! wrapper for x86_64 target
2
3
4use crate::*;
5use libc::c_int;
6
7//Registrers
8pub const UNW_TDEP_IP: u32 = x86_64_regnum_t_UNW_X86_64_RIP;
9pub const UNW_TDEP_SP: u32 = x86_64_regnum_t_UNW_X86_64_RSP;
10pub const UNW_TDEP_BP: u32 = x86_64_regnum_t_UNW_X86_64_RBP;
11pub const UNW_TDEP_EH: u32 = x86_64_regnum_t_UNW_X86_64_RAX;
12
13//functions
14extern "C" {
15    #[link_name = "_Ux86_64_create_addr_space"]
16    pub fn unw_create_addr_space( accessors: *mut unw_accessors_t, byteorder: c_int) -> unw_addr_space_t;
17
18    #[link_name = "_Ux86_64_destroy_addr_space"]
19    pub fn unw_destroy_addr_space(arg1: unw_addr_space_t);
20    
21    #[link_name = "_Ux86_64_get_accessors"]
22    pub fn unw_get_accessors(arg1: unw_addr_space_t) -> *mut unw_accessors_t;
23    
24    #[link_name = "_Ux86_64_init_local"]
25    pub fn unw_init_local(arg1: *mut unw_cursor_t,arg2: *mut unw_context_t) -> ::std::os::raw::c_int;
26
27    #[link_name = "_Ux86_64_init_remote"]
28    pub fn unw_init_remote( arg1: *mut unw_cursor_t, arg2: unw_addr_space_t, arg3: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int;
29    
30    #[link_name = "_Ux86_64_step"]
31    pub fn unw_step(arg1: *mut unw_cursor_t) -> ::std::os::raw::c_int;
32    
33    #[link_name = "_Ux86_64_resume"]
34    pub fn unw_resume(arg1: *mut unw_cursor_t) -> ::std::os::raw::c_int;
35    
36    #[link_name = "_Ux86_64_get_proc_info"]
37    pub fn unw_get_proc_info(arg1: *mut unw_cursor_t, arg2: *mut unw_proc_info_t) -> ::std::os::raw::c_int;
38
39    #[link_name = "_Ux86_64_get_reg"]
40    pub fn unw_get_reg(arg1: *mut unw_cursor_t, arg2: ::std::os::raw::c_int,arg3: *mut unw_word_t) -> ::std::os::raw::c_int;
41    
42    #[link_name = "_Ux86_64_set_reg"]
43    pub fn unw_set_reg(arg1: *mut unw_cursor_t,arg2: ::std::os::raw::c_int, arg3: unw_word_t) -> ::std::os::raw::c_int;
44
45    #[link_name = "_Ux86_64_get_proc_name"]
46    pub fn unw_get_proc_name(
47        arg1: *mut unw_cursor_t,
48        arg2: *mut ::std::os::raw::c_char,
49        arg3: usize,
50        arg4: *mut unw_word_t,
51    ) -> ::std::os::raw::c_int;
52
53    #[link_name = "_Ux86_64_getcontext"]
54    pub fn unw_getcontext(arg1: *mut unw_tdep_context_t) -> ::std::os::raw::c_int;
55    
56    #[link_name = "_Ux86_64_strerror"]
57    pub fn unw_strerror(arg1: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char;
58   
59    #[link_name = "_Ux86_64_flush_cache"]
60    pub fn unw_flush_cache(arg1: unw_addr_space_t, arg2: unw_word_t, arg3: unw_word_t);
61    
62    #[link_name = "_Ux86_64_set_caching_policy"]
63    pub fn unw_set_caching_policy(
64        arg1: unw_addr_space_t,
65        arg2: unw_caching_policy_t,
66    ) -> ::std::os::raw::c_int;
67
68    #[link_name = "_Ux86_64_get_fpreg"]
69    pub fn unw_get_fpreg(
70        arg1: *mut unw_cursor_t,
71        arg2: ::std::os::raw::c_int,
72        arg3: *mut unw_fpreg_t,
73    ) -> ::std::os::raw::c_int;
74    
75    #[link_name = "_Ux86_64_regname"]
76    pub fn unw_regname(arg1: unw_regnum_t) -> *const ::std::os::raw::c_char;
77
78    #[link_name = "_Ux86_64_get_proc_info_by_ip"]
79    pub fn unw_get_proc_info_by_ip(
80        arg1: unw_addr_space_t,
81        arg2: unw_word_t,
82        arg3: *mut unw_proc_info_t,
83        arg4: *mut ::std::os::raw::c_void,
84    ) -> ::std::os::raw::c_int;
85
86    #[link_name = "_Ux86_64_set_fpreg"]
87    pub fn unw_set_fpreg(
88        arg1: *mut unw_cursor_t,
89        arg2: ::std::os::raw::c_int,
90        arg3: unw_fpreg_t,
91    ) -> ::std::os::raw::c_int;
92
93    #[link_name = "_Ux86_64_get_save_loc"]
94    pub fn unw_get_save_loc(
95        arg1: *mut unw_cursor_t,
96        arg2: ::std::os::raw::c_int,
97        arg3: *mut unw_save_loc_t,
98    ) -> ::std::os::raw::c_int;
99
100    #[link_name = "_Ux86_64_is_signal_frame"]
101    pub fn unw_is_signal_frame(arg1: *mut unw_cursor_t) -> ::std::os::raw::c_int;
102
103    #[link_name = "_Ux86_64_handle_signal_frame"]
104    pub fn unw_handle_signal_frame(arg1: *mut unw_cursor_t) -> ::std::os::raw::c_int;
105
106    #[link_name = "_Ux86_64_is_fpreg"]
107    pub fn unw_is_fpreg(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
108}