libunwind_sys/
x86_64.rs

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