GDB (xrefs)
|
#include "defs.h"
#include "inferior.h"
#include "frame.h"
#include "frame-base.h"
#include "frame-unwind.h"
#include "gdbcore.h"
#include "gdbtypes.h"
#include "symtab.h"
#include "objfiles.h"
#include "regcache.h"
#include <dlfcn.h>
#include "gdb_assert.h"
#include "gdb_string.h"
#include "ia64-libunwind-tdep.h"
#include "complaints.h"
Go to the source code of this file.
Classes | |
struct | libunwind_frame_cache |
Defines | |
#define | __LITTLE_ENDIAN 1234 |
#define | __BIG_ENDIAN 4321 |
#define | STRINGIFY2(name) #name |
#define | STRINGIFY(name) STRINGIFY2(name) |
#define | LIBUNWIND_SO "libunwind-" STRINGIFY(UNW_TARGET) ".so.8" |
#define | LIBUNWIND_SO_7 "libunwind-" STRINGIFY(UNW_TARGET) ".so.7" |
Functions | |
static struct libunwind_descr * | libunwind_descr (struct gdbarch *gdbarch) |
static void * | libunwind_descr_init (struct gdbarch *gdbarch) |
void | libunwind_frame_set_descr (struct gdbarch *gdbarch, struct libunwind_descr *descr) |
static struct libunwind_frame_cache * | libunwind_frame_cache (struct frame_info *this_frame, void **this_cache) |
void | libunwind_frame_dealloc_cache (struct frame_info *self, void *this_cache) |
unw_word_t | libunwind_find_dyn_list (unw_addr_space_t as, unw_dyn_info_t *di, void *arg) |
int | libunwind_frame_sniffer (const struct frame_unwind *self, struct frame_info *this_frame, void **this_cache) |
void | libunwind_frame_this_id (struct frame_info *this_frame, void **this_cache, struct frame_id *this_id) |
struct value * | libunwind_frame_prev_register (struct frame_info *this_frame, void **this_cache, int regnum) |
int | libunwind_search_unwind_table (void *as, long ip, void *di, void *pi, int need_unwind_info, void *args) |
int | libunwind_sigtramp_frame_sniffer (const struct frame_unwind *self, struct frame_info *this_frame, void **this_cache) |
int | libunwind_get_reg_special (struct gdbarch *gdbarch, struct regcache *regcache, int regnum, void *buf) |
static int | libunwind_load (void) |
int | libunwind_is_initialized (void) |
void | _initialize_libunwind_frame (void) |
Variables | |
static int | libunwind_initialized |
static struct gdbarch_data * | libunwind_descr_handle |
static int(* | unw_get_reg_p )(unw_cursor_t *, unw_regnum_t, unw_word_t *) |
static int(* | unw_get_fpreg_p )(unw_cursor_t *, unw_regnum_t, unw_fpreg_t *) |
static int(* | unw_get_saveloc_p )(unw_cursor_t *, unw_regnum_t, unw_save_loc_t *) |
static int(* | unw_is_signal_frame_p )(unw_cursor_t *) |
static int(* | unw_step_p )(unw_cursor_t *) |
static int(* | unw_init_remote_p )(unw_cursor_t *, unw_addr_space_t, void *) |
static unw_addr_space_t(* | unw_create_addr_space_p )(unw_accessors_t *, int) |
static void(* | unw_destroy_addr_space_p )(unw_addr_space_t) |
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 unw_word_t(* | unw_find_dyn_list_p )(unw_addr_space_t, unw_dyn_info_t *, void *) |
static char * | get_reg_name = STRINGIFY(UNW_OBJ(get_reg)) |
static char * | get_fpreg_name = STRINGIFY(UNW_OBJ(get_fpreg)) |
static char * | get_saveloc_name = STRINGIFY(UNW_OBJ(get_save_loc)) |
static char * | is_signal_frame_name = STRINGIFY(UNW_OBJ(is_signal_frame)) |
static char * | step_name = STRINGIFY(UNW_OBJ(step)) |
static char * | init_remote_name = STRINGIFY(UNW_OBJ(init_remote)) |
static char * | create_addr_space_name = STRINGIFY(UNW_OBJ(create_addr_space)) |
static char * | destroy_addr_space_name = STRINGIFY(UNW_OBJ(destroy_addr_space)) |
static char * | search_unwind_table_name = STRINGIFY(UNW_OBJ(search_unwind_table)) |
static char * | find_dyn_list_name = STRINGIFY(UNW_OBJ(find_dyn_list)) |
#define __BIG_ENDIAN 4321 |
Definition at line 58 of file ia64-libunwind-tdep.c.
Referenced by libunwind_frame_cache(), libunwind_frame_sniffer(), libunwind_get_reg_special(), and libunwind_sigtramp_frame_sniffer().
#define __LITTLE_ENDIAN 1234 |
Definition at line 55 of file ia64-libunwind-tdep.c.
Referenced by libunwind_frame_cache(), libunwind_frame_sniffer(), libunwind_get_reg_special(), and libunwind_sigtramp_frame_sniffer().
#define LIBUNWIND_SO "libunwind-" STRINGIFY(UNW_TARGET) ".so.8" |
Definition at line 98 of file ia64-libunwind-tdep.c.
Referenced by libunwind_load().
#define LIBUNWIND_SO_7 "libunwind-" STRINGIFY(UNW_TARGET) ".so.7" |
Definition at line 102 of file ia64-libunwind-tdep.c.
Referenced by libunwind_load().
#define STRINGIFY | ( | name | ) | STRINGIFY2(name) |
Definition at line 93 of file ia64-libunwind-tdep.c.
#define STRINGIFY2 | ( | name | ) | #name |
Definition at line 92 of file ia64-libunwind-tdep.c.
void _initialize_libunwind_frame | ( | void | ) |
Definition at line 576 of file ia64-libunwind-tdep.c.
References gdbarch_data_register_post_init(), libunwind_descr_init(), libunwind_initialized, and libunwind_load().
static struct libunwind_descr* libunwind_descr | ( | struct gdbarch * | gdbarch | ) | [static, read] |
Definition at line 118 of file ia64-libunwind-tdep.c.
References gdbarch_data().
Referenced by libunwind_frame_cache(), libunwind_frame_prev_register(), libunwind_frame_sniffer(), libunwind_get_reg_special(), and libunwind_sigtramp_frame_sniffer().
static void* libunwind_descr_init | ( | struct gdbarch * | gdbarch | ) | [static] |
Definition at line 124 of file ia64-libunwind-tdep.c.
References GDBARCH_OBSTACK_ZALLOC.
Referenced by _initialize_libunwind_frame(), and libunwind_frame_set_descr().
unw_word_t libunwind_find_dyn_list | ( | unw_addr_space_t | as, |
unw_dyn_info_t * | di, | ||
void * | arg | ||
) |
Definition at line 243 of file ia64-libunwind-tdep.c.
References unw_find_dyn_list_p.
static struct libunwind_frame_cache* libunwind_frame_cache | ( | struct frame_info * | this_frame, |
void ** | this_cache | ||
) | [static, read] |
Definition at line 159 of file ia64-libunwind-tdep.c.
References _, __BIG_ENDIAN, __LITTLE_ENDIAN, libunwind_descr::accessors, libunwind_frame_cache::as, libunwind_frame_cache::base, libunwind_frame_cache::cursor, error(), FRAME_OBSTACK_ZALLOC, libunwind_frame_cache::func_addr, libunwind_descr::gdb2uw, gdbarch_byte_order(), gdbarch_sp_regnum(), get_frame_arch(), get_frame_func(), get_frame_pc(), libunwind_descr(), unw_create_addr_space_p, unw_destroy_addr_space_p, unw_get_reg_p, unw_init_remote_p, and unw_step_p.
Referenced by libunwind_frame_prev_register(), and libunwind_frame_this_id().
void libunwind_frame_dealloc_cache | ( | struct frame_info * | self, |
void * | this_cache | ||
) |
Definition at line 234 of file ia64-libunwind-tdep.c.
References libunwind_frame_cache::as, and unw_destroy_addr_space_p.
struct value* libunwind_frame_prev_register | ( | struct frame_info * | this_frame, |
void ** | this_cache, | ||
int | regnum | ||
) | [read] |
Definition at line 308 of file ia64-libunwind-tdep.c.
References _, frame_info::addr, libunwind_frame_cache::cursor, error(), frame_unwind_got_bytes(), frame_unwind_got_constant(), frame_unwind_got_memory(), frame_unwind_got_register(), libunwind_descr::gdb2uw, gdb_assert, get_frame_arch(), libunwind_descr::is_fpreg, libunwind_descr(), libunwind_frame_cache(), target_has_registers, unw_get_fpreg_p, unw_get_reg_p, unw_get_saveloc_p, and libunwind_descr::uw2gdb.
void libunwind_frame_set_descr | ( | struct gdbarch * | gdbarch, |
struct libunwind_descr * | descr | ||
) |
Definition at line 133 of file ia64-libunwind-tdep.c.
References libunwind_descr::accessors, deprecated_set_gdbarch_data(), libunwind_descr::gdb2uw, gdb_assert, gdbarch_data(), libunwind_descr::is_fpreg, libunwind_descr_init(), libunwind_descr::special_accessors, and libunwind_descr::uw2gdb.
Referenced by ia64_gdbarch_init(), and ia64_openvms_init_abi().
int libunwind_frame_sniffer | ( | const struct frame_unwind * | self, |
struct frame_info * | this_frame, | ||
void ** | this_cache | ||
) |
Definition at line 251 of file ia64-libunwind-tdep.c.
References __BIG_ENDIAN, __LITTLE_ENDIAN, libunwind_descr::accessors, libunwind_frame_cache::as, libunwind_frame_cache::cursor, gdbarch_byte_order(), get_frame_arch(), libunwind_descr(), unw_create_addr_space_p, unw_destroy_addr_space_p, unw_init_remote_p, and unw_is_signal_frame_p.
void libunwind_frame_this_id | ( | struct frame_info * | this_frame, |
void ** | this_cache, | ||
struct frame_id * | this_id | ||
) |
Definition at line 297 of file ia64-libunwind-tdep.c.
References libunwind_frame_cache::base, frame_id_build(), libunwind_frame_cache::func_addr, and libunwind_frame_cache().
int libunwind_get_reg_special | ( | struct gdbarch * | gdbarch, |
struct regcache * | regcache, | ||
int | regnum, | ||
void * | buf | ||
) |
Definition at line 441 of file ia64-libunwind-tdep.c.
References __BIG_ENDIAN, __LITTLE_ENDIAN, libunwind_descr::gdb2uw, gdbarch_byte_order(), libunwind_descr::is_fpreg, libunwind_descr(), memcpy(), register_size(), libunwind_descr::special_accessors, unw_create_addr_space_p, unw_destroy_addr_space_p, unw_get_fpreg_p, unw_get_reg_p, and unw_init_remote_p.
Referenced by ia64_pseudo_register_read().
int libunwind_is_initialized | ( | void | ) |
Definition at line 567 of file ia64-libunwind-tdep.c.
References libunwind_initialized.
Referenced by ia64_pseudo_register_read().
static int libunwind_load | ( | void | ) | [static] |
Definition at line 495 of file ia64-libunwind-tdep.c.
References _, fprintf_unfiltered(), gdb_stderr, get_reg_name, LIBUNWIND_SO, LIBUNWIND_SO_7, search_unwind_table_name, unw_create_addr_space_p, unw_destroy_addr_space_p, unw_find_dyn_list_p, unw_get_fpreg_p, unw_get_reg_p, unw_get_saveloc_p, unw_init_remote_p, unw_is_signal_frame_p, unw_search_unwind_table_p, unw_step_p, and xfree().
Referenced by _initialize_libunwind_frame().
int libunwind_search_unwind_table | ( | void * | as, |
long | ip, | ||
void * | di, | ||
void * | pi, | ||
int | need_unwind_info, | ||
void * | args | ||
) |
Definition at line 383 of file ia64-libunwind-tdep.c.
References unw_search_unwind_table_p.
int libunwind_sigtramp_frame_sniffer | ( | const struct frame_unwind * | self, |
struct frame_info * | this_frame, | ||
void ** | this_cache | ||
) |
Definition at line 392 of file ia64-libunwind-tdep.c.
References __BIG_ENDIAN, __LITTLE_ENDIAN, libunwind_descr::accessors, gdbarch_byte_order(), get_frame_arch(), libunwind_descr(), unw_create_addr_space_p, unw_destroy_addr_space_p, unw_init_remote_p, and unw_is_signal_frame_p.
char* create_addr_space_name = STRINGIFY(UNW_OBJ(create_addr_space)) [static] |
Definition at line 111 of file ia64-libunwind-tdep.c.
char* destroy_addr_space_name = STRINGIFY(UNW_OBJ(destroy_addr_space)) [static] |
Definition at line 112 of file ia64-libunwind-tdep.c.
char* find_dyn_list_name = STRINGIFY(UNW_OBJ(find_dyn_list)) [static] |
Definition at line 115 of file ia64-libunwind-tdep.c.
char* get_fpreg_name = STRINGIFY(UNW_OBJ(get_fpreg)) [static] |
Definition at line 106 of file ia64-libunwind-tdep.c.
char* get_reg_name = STRINGIFY(UNW_OBJ(get_reg)) [static] |
Definition at line 105 of file ia64-libunwind-tdep.c.
Referenced by libunwind_load().
char* get_saveloc_name = STRINGIFY(UNW_OBJ(get_save_loc)) [static] |
Definition at line 107 of file ia64-libunwind-tdep.c.
char* init_remote_name = STRINGIFY(UNW_OBJ(init_remote)) [static] |
Definition at line 110 of file ia64-libunwind-tdep.c.
char* is_signal_frame_name = STRINGIFY(UNW_OBJ(is_signal_frame)) [static] |
Definition at line 108 of file ia64-libunwind-tdep.c.
struct gdbarch_data* libunwind_descr_handle [static] |
Definition at line 62 of file ia64-libunwind-tdep.c.
int libunwind_initialized [static] |
Definition at line 61 of file ia64-libunwind-tdep.c.
Referenced by _initialize_libunwind_frame(), and libunwind_is_initialized().
char* search_unwind_table_name = STRINGIFY(UNW_OBJ(search_unwind_table)) [static] |
Definition at line 114 of file ia64-libunwind-tdep.c.
Referenced by libunwind_load().
Definition at line 109 of file ia64-libunwind-tdep.c.
unw_addr_space_t(* unw_create_addr_space_p)(unw_accessors_t *, int) [static] |
Definition at line 72 of file ia64-libunwind-tdep.c.
Referenced by libunwind_frame_cache(), libunwind_frame_sniffer(), libunwind_get_reg_special(), libunwind_load(), and libunwind_sigtramp_frame_sniffer().
void(* unw_destroy_addr_space_p)(unw_addr_space_t) [static] |
Definition at line 73 of file ia64-libunwind-tdep.c.
Referenced by libunwind_frame_cache(), libunwind_frame_dealloc_cache(), libunwind_frame_sniffer(), libunwind_get_reg_special(), libunwind_load(), and libunwind_sigtramp_frame_sniffer().
unw_word_t(* unw_find_dyn_list_p)(unw_addr_space_t, unw_dyn_info_t *, void *) [static] |
Definition at line 77 of file ia64-libunwind-tdep.c.
Referenced by libunwind_find_dyn_list(), and libunwind_load().
int(* unw_get_fpreg_p)(unw_cursor_t *, unw_regnum_t, unw_fpreg_t *) [static] |
Definition at line 66 of file ia64-libunwind-tdep.c.
Referenced by libunwind_frame_prev_register(), libunwind_get_reg_special(), and libunwind_load().
int(* unw_get_reg_p)(unw_cursor_t *, unw_regnum_t, unw_word_t *) [static] |
Definition at line 65 of file ia64-libunwind-tdep.c.
Referenced by libunwind_frame_cache(), libunwind_frame_prev_register(), libunwind_get_reg_special(), and libunwind_load().
int(* unw_get_saveloc_p)(unw_cursor_t *, unw_regnum_t, unw_save_loc_t *) [static] |
Definition at line 67 of file ia64-libunwind-tdep.c.
Referenced by libunwind_frame_prev_register(), and libunwind_load().
int(* unw_init_remote_p)(unw_cursor_t *, unw_addr_space_t, void *) [static] |
Definition at line 71 of file ia64-libunwind-tdep.c.
Referenced by libunwind_frame_cache(), libunwind_frame_sniffer(), libunwind_get_reg_special(), libunwind_load(), and libunwind_sigtramp_frame_sniffer().
int(* unw_is_signal_frame_p)(unw_cursor_t *) [static] |
Definition at line 69 of file ia64-libunwind-tdep.c.
Referenced by libunwind_frame_sniffer(), libunwind_load(), and libunwind_sigtramp_frame_sniffer().
int(* unw_search_unwind_table_p)(unw_addr_space_t, unw_word_t, unw_dyn_info_t *, unw_proc_info_t *, int, void *) [static] |
Definition at line 74 of file ia64-libunwind-tdep.c.
Referenced by libunwind_load(), and libunwind_search_unwind_table().
int(* unw_step_p)(unw_cursor_t *) [static] |
Definition at line 70 of file ia64-libunwind-tdep.c.
Referenced by libunwind_frame_cache(), and libunwind_load().