51 #ifndef __LITTLE_ENDIAN
52 #define __LITTLE_ENDIAN 1234
55 #define __BIG_ENDIAN 4321
73 unw_proc_info_t *,
int,
void *);
89 #define STRINGIFY2(name) #name
90 #define STRINGIFY(name) STRINGIFY2(name)
95 #define LIBUNWIND_SO "libunwind-" STRINGIFY(UNW_TARGET) ".so.8"
99 #define LIBUNWIND_SO_7 "libunwind-" STRINGIFY(UNW_TARGET) ".so.7"
103 static char *get_fpreg_name =
STRINGIFY(UNW_OBJ(get_fpreg));
104 static char *get_saveloc_name =
STRINGIFY(UNW_OBJ(get_save_loc));
105 static char *is_signal_frame_name =
STRINGIFY(UNW_OBJ(is_signal_frame));
107 static char *init_remote_name =
STRINGIFY(UNW_OBJ(init_remote));
108 static char *create_addr_space_name =
STRINGIFY(UNW_OBJ(create_addr_space));
109 static char *destroy_addr_space_name =
STRINGIFY(UNW_OBJ(destroy_addr_space));
112 static char *find_dyn_list_name =
STRINGIFY(UNW_OBJ(find_dyn_list));
137 arch_descr =
gdbarch_data (gdbarch, libunwind_descr_handle);
139 if (arch_descr == NULL)
144 libunwind_descr_handle, arch_descr);
158 unw_accessors_t *acc;
161 unw_regnum_t uw_sp_regnum;
220 error (
_(
"Can't get libunwind sp register."));
249 struct frame_info *this_frame,
void **this_cache)
252 unw_accessors_t *acc;
306 void **this_cache,
int regnum)
318 unw_regnum_t uw_regnum;
320 struct value *val = NULL;
327 uw_regnum = descr->
gdb2uw (regnum);
332 error (
_(
"No registers."));
348 descr->
uw2gdb (sl.u.regnum));
381 void *pi,
int need_unwind_info,
void *args)
384 di, pi, need_unwind_info, args);
394 unw_accessors_t *acc;
442 unw_accessors_t *acc;
446 unw_regnum_t uw_regnum;
467 uw_regnum = descr->
gdb2uw (regnum);
495 char *so_error = NULL;
500 so_error = xstrdup (dlerror ());
501 #ifdef LIBUNWIND_SO_7
509 #ifdef LIBUNWIND_SO_7
575 libunwind_descr_handle
#define target_has_registers
void libunwind_frame_set_descr(struct gdbarch *gdbarch, struct libunwind_descr *descr)
struct frame_id frame_id_build(CORE_ADDR stack_addr, CORE_ADDR code_addr)
struct value * frame_unwind_got_bytes(struct frame_info *frame, int regnum, gdb_byte *buf)
CORE_ADDR get_frame_pc(struct frame_info *frame)
static void * libunwind_descr_init(struct gdbarch *gdbarch)
static int(* unw_get_reg_p)(unw_cursor_t *, unw_regnum_t, unw_word_t *)
void libunwind_frame_dealloc_cache(struct frame_info *self, void *this_cache)
struct value * frame_unwind_got_memory(struct frame_info *frame, int regnum, CORE_ADDR addr)
void libunwind_frame_this_id(struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
void * gdbarch_data(struct gdbarch *gdbarch, struct gdbarch_data *data)
static unw_addr_space_t(* unw_create_addr_space_p)(unw_accessors_t *, int)
static char * search_unwind_table_name
static struct gdbarch_data * libunwind_descr_handle
#define FRAME_OBSTACK_ZALLOC(TYPE)
#define GDBARCH_OBSTACK_ZALLOC(GDBARCH, TYPE)
struct value * frame_unwind_got_constant(struct frame_info *frame, int regnum, ULONGEST val)
static int(* unw_step_p)(unw_cursor_t *)
static char * get_reg_name
void _initialize_libunwind_frame(void)
static int(* unw_is_signal_frame_p)(unw_cursor_t *)
int gdbarch_sp_regnum(struct gdbarch *gdbarch)
int libunwind_is_initialized(void)
void fprintf_unfiltered(struct ui_file *stream, const char *format,...)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
static void(* unw_destroy_addr_space_p)(unw_addr_space_t)
static int(* unw_get_fpreg_p)(unw_cursor_t *, unw_regnum_t, unw_fpreg_t *)
static int(* unw_init_remote_p)(unw_cursor_t *, unw_addr_space_t, void *)
static int(* unw_search_unwind_table_p)(unw_addr_space_t, unw_word_t, unw_dyn_info_t *, unw_proc_info_t *, int, void *)
static int libunwind_load(void)
const char const char int
int libunwind_get_reg_special(struct gdbarch *gdbarch, struct regcache *regcache, int regnum, void *buf)
int libunwind_sigtramp_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_cache)
int libunwind_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_cache)
struct value * frame_unwind_got_register(struct frame_info *frame, int regnum, int new_regnum)
struct ui_file * gdb_stderr
struct value * libunwind_frame_prev_register(struct frame_info *this_frame, void **this_cache, int regnum)
static unw_word_t(* unw_find_dyn_list_p)(unw_addr_space_t, unw_dyn_info_t *, void *)
void deprecated_set_gdbarch_data(struct gdbarch *gdbarch, struct gdbarch_data *data, void *pointer)
static struct libunwind_frame_cache * libunwind_frame_cache(struct frame_info *this_frame, void **this_cache)
unw_word_t libunwind_find_dyn_list(unw_addr_space_t as, unw_dyn_info_t *di, void *arg)
static struct libunwind_descr * libunwind_descr(struct gdbarch *gdbarch)
int register_size(struct gdbarch *gdbarch, int regnum)
static int(* unw_get_saveloc_p)(unw_cursor_t *, unw_regnum_t, unw_save_loc_t *)
int libunwind_search_unwind_table(void *as, long ip, void *di, void *pi, int need_unwind_info, void *args)
CORE_ADDR get_frame_func(struct frame_info *this_frame)
void error(const char *fmt,...)
static int libunwind_initialized
struct gdbarch_data * gdbarch_data_register_post_init(gdbarch_data_post_init_ftype *post_init)
struct gdbarch * get_frame_arch(struct frame_info *this_frame)