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 "ia64-libunwind-tdep.h"
#include "gdbsupport/preprocessor.h"
Go to the source code of this file.
Classes | |
struct | libunwind_frame_cache |
Macros | |
#define | __LITTLE_ENDIAN 1234 |
#define | __BIG_ENDIAN 4321 |
#define | LIBUNWIND_SO "libunwind-" STRINGIFY(UNW_TARGET) ".so.8" |
#define | LIBUNWIND_SO_7 "libunwind-" STRINGIFY(UNW_TARGET) ".so.7" |
Typedefs | |
typedef int | unw_get_reg_p_ftype(unw_cursor_t *, unw_regnum_t, unw_word_t *) |
typedef int | unw_get_fpreg_p_ftype(unw_cursor_t *, unw_regnum_t, unw_fpreg_t *) |
typedef int | unw_get_saveloc_p_ftype(unw_cursor_t *, unw_regnum_t, unw_save_loc_t *) |
typedef int | unw_is_signal_frame_p_ftype(unw_cursor_t *) |
typedef int | unw_step_p_ftype(unw_cursor_t *) |
typedef int | unw_init_remote_p_ftype(unw_cursor_t *, unw_addr_space_t, void *) |
typedef unw_addr_space_t | unw_create_addr_space_p_ftype(unw_accessors_t *, int) |
typedef void | unw_destroy_addr_space_p_ftype(unw_addr_space_t) |
typedef int | unw_search_unwind_table_p_ftype(unw_addr_space_t, unw_word_t, unw_dyn_info_t *, unw_proc_info_t *, int, void *) |
typedef unw_word_t | unw_find_dyn_list_p_ftype(unw_addr_space_t, unw_dyn_info_t *, void *) |
Functions | |
static struct libunwind_descr * | libunwind_descr (struct gdbarch *gdbarch) |
void | libunwind_frame_set_descr (struct gdbarch *gdbarch, struct libunwind_descr *descr) |
static struct libunwind_frame_cache * | libunwind_frame_cache (frame_info_ptr this_frame, void **this_cache) |
void | libunwind_frame_dealloc_cache (frame_info_ptr 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, frame_info_ptr this_frame, void **this_cache) |
void | libunwind_frame_this_id (frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id) |
struct value * | libunwind_frame_prev_register (frame_info_ptr 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, frame_info_ptr this_frame, void **this_cache) |
int | libunwind_get_reg_special (struct gdbarch *gdbarch, readable_regcache *regcache, int regnum, void *buf) |
static int | libunwind_load (void) |
int | libunwind_is_initialized (void) |
void | _initialize_libunwind_frame () |
Variables | |
static int | libunwind_initialized |
static const registry< gdbarch >::key< libunwind_descr > | libunwind_descr_handle |
static unw_get_reg_p_ftype * | unw_get_reg_p |
static unw_get_fpreg_p_ftype * | unw_get_fpreg_p |
static unw_get_saveloc_p_ftype * | unw_get_saveloc_p |
static unw_is_signal_frame_p_ftype * | unw_is_signal_frame_p |
static unw_step_p_ftype * | unw_step_p |
static unw_init_remote_p_ftype * | unw_init_remote_p |
static unw_create_addr_space_p_ftype * | unw_create_addr_space_p |
static unw_destroy_addr_space_p_ftype * | unw_destroy_addr_space_p |
static unw_search_unwind_table_p_ftype * | unw_search_unwind_table_p |
static unw_find_dyn_list_p_ftype * | unw_find_dyn_list_p |
static const char * | get_reg_name = STRINGIFY(UNW_OBJ(get_reg)) |
static const char * | get_fpreg_name = STRINGIFY(UNW_OBJ(get_fpreg)) |
static const char * | get_saveloc_name = STRINGIFY(UNW_OBJ(get_save_loc)) |
static const char * | is_signal_frame_name = STRINGIFY(UNW_OBJ(is_signal_frame)) |
static const char * | step_name = STRINGIFY(UNW_OBJ(step)) |
static const char * | init_remote_name = STRINGIFY(UNW_OBJ(init_remote)) |
static const char * | create_addr_space_name = STRINGIFY(UNW_OBJ(create_addr_space)) |
static const char * | destroy_addr_space_name = STRINGIFY(UNW_OBJ(destroy_addr_space)) |
static const char * | search_unwind_table_name = STRINGIFY(UNW_OBJ(search_unwind_table)) |
static const char * | find_dyn_list_name = STRINGIFY(UNW_OBJ(find_dyn_list)) |
#define __BIG_ENDIAN 4321 |
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 __LITTLE_ENDIAN 1234 |
Definition at line 52 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 106 of file ia64-libunwind-tdep.c.
Referenced by libunwind_load().
#define LIBUNWIND_SO_7 "libunwind-" STRINGIFY(UNW_TARGET) ".so.7" |
Definition at line 110 of file ia64-libunwind-tdep.c.
Referenced by libunwind_load().
typedef unw_addr_space_t unw_create_addr_space_p_ftype(unw_accessors_t *, int) |
Definition at line 77 of file ia64-libunwind-tdep.c.
typedef void unw_destroy_addr_space_p_ftype(unw_addr_space_t) |
Definition at line 80 of file ia64-libunwind-tdep.c.
typedef unw_word_t unw_find_dyn_list_p_ftype(unw_addr_space_t, unw_dyn_info_t *, void *) |
Definition at line 86 of file ia64-libunwind-tdep.c.
typedef int unw_get_fpreg_p_ftype(unw_cursor_t *, unw_regnum_t, unw_fpreg_t *) |
Definition at line 64 of file ia64-libunwind-tdep.c.
typedef int unw_get_reg_p_ftype(unw_cursor_t *, unw_regnum_t, unw_word_t *) |
Definition at line 62 of file ia64-libunwind-tdep.c.
typedef int unw_get_saveloc_p_ftype(unw_cursor_t *, unw_regnum_t, unw_save_loc_t *) |
Definition at line 67 of file ia64-libunwind-tdep.c.
typedef int unw_init_remote_p_ftype(unw_cursor_t *, unw_addr_space_t, void *) |
Definition at line 74 of file ia64-libunwind-tdep.c.
typedef int unw_is_signal_frame_p_ftype(unw_cursor_t *) |
Definition at line 70 of file ia64-libunwind-tdep.c.
typedef int unw_search_unwind_table_p_ftype(unw_addr_space_t, unw_word_t, unw_dyn_info_t *, unw_proc_info_t *, int, void *) |
Definition at line 82 of file ia64-libunwind-tdep.c.
typedef int unw_step_p_ftype(unw_cursor_t *) |
Definition at line 72 of file ia64-libunwind-tdep.c.
void _initialize_libunwind_frame | ( | ) |
Definition at line 580 of file ia64-libunwind-tdep.c.
References libunwind_initialized, and libunwind_load().
|
static |
Definition at line 128 of file ia64-libunwind-tdep.c.
References registry< T >::get(), and libunwind_descr_handle.
Referenced by libunwind_frame_cache(), libunwind_frame_prev_register(), libunwind_frame_set_descr(), libunwind_frame_sniffer(), libunwind_get_reg_special(), and libunwind_sigtramp_frame_sniffer().
unw_word_t libunwind_find_dyn_list | ( | unw_addr_space_t | as, |
unw_dyn_info_t * | di, | ||
void * | arg ) |
Definition at line 241 of file ia64-libunwind-tdep.c.
References libunwind_frame_cache::as, and unw_find_dyn_list_p.
|
static |
Definition at line 156 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, 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 | ( | frame_info_ptr | self, |
void * | this_cache ) |
Definition at line 231 of file ia64-libunwind-tdep.c.
References libunwind_frame_cache::as, and unw_destroy_addr_space_p.
struct value * libunwind_frame_prev_register | ( | frame_info_ptr | this_frame, |
void ** | this_cache, | ||
int | regnum ) |
Definition at line 306 of file ia64-libunwind-tdep.c.
References libunwind_frame_cache::cursor, frame_unwind_got_bytes(), frame_unwind_got_constant(), frame_unwind_got_memory(), frame_unwind_got_register(), libunwind_descr::gdb2uw, get_frame_arch(), libunwind_descr::is_fpreg, libunwind_descr(), libunwind_frame_cache(), regnum, 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 137 of file ia64-libunwind-tdep.c.
References libunwind_descr::accessors, libunwind_descr::gdb2uw, libunwind_descr::is_fpreg, libunwind_descr(), 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, |
frame_info_ptr | this_frame, | ||
void ** | this_cache ) |
Definition at line 249 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 | ( | frame_info_ptr | this_frame, |
void ** | this_cache, | ||
struct frame_id * | this_id ) |
Definition at line 295 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, |
readable_regcache * | regcache, | ||
int | regnum, | ||
void * | buf ) |
Definition at line 438 of file ia64-libunwind-tdep.c.
References __BIG_ENDIAN, __LITTLE_ENDIAN, libunwind_descr::gdb2uw, gdbarch_byte_order(), libunwind_descr::is_fpreg, libunwind_descr(), register_size(), regnum, 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 573 of file ia64-libunwind-tdep.c.
References libunwind_initialized.
Referenced by ia64_pseudo_register_read().
|
static |
Definition at line 492 of file ia64-libunwind-tdep.c.
References create_addr_space_name, destroy_addr_space_name, find_dyn_list_name, gdb_printf(), gdb_stderr, get_fpreg_name, get_reg_name, get_saveloc_name, init_remote_name, is_signal_frame_name, LIBUNWIND_SO, LIBUNWIND_SO_7, search_unwind_table_name, step_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 378 of file ia64-libunwind-tdep.c.
References unw_search_unwind_table_p.
int libunwind_sigtramp_frame_sniffer | ( | const struct frame_unwind * | self, |
frame_info_ptr | this_frame, | ||
void ** | this_cache ) |
Definition at line 389 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.
|
static |
Definition at line 119 of file ia64-libunwind-tdep.c.
Referenced by libunwind_load().
|
static |
Definition at line 121 of file ia64-libunwind-tdep.c.
Referenced by libunwind_load().
|
static |
Definition at line 125 of file ia64-libunwind-tdep.c.
Referenced by libunwind_load().
|
static |
Definition at line 114 of file ia64-libunwind-tdep.c.
Referenced by libunwind_load().
|
static |
Definition at line 113 of file ia64-libunwind-tdep.c.
Referenced by libunwind_load().
|
static |
Definition at line 115 of file ia64-libunwind-tdep.c.
Referenced by libunwind_load().
|
static |
Definition at line 118 of file ia64-libunwind-tdep.c.
Referenced by libunwind_load().
|
static |
Definition at line 116 of file ia64-libunwind-tdep.c.
Referenced by libunwind_load().
|
static |
Definition at line 59 of file ia64-libunwind-tdep.c.
Referenced by libunwind_descr().
|
static |
Definition at line 58 of file ia64-libunwind-tdep.c.
Referenced by _initialize_libunwind_frame(), and libunwind_is_initialized().
|
static |
Definition at line 123 of file ia64-libunwind-tdep.c.
Referenced by libunwind_load().
|
static |
Definition at line 117 of file ia64-libunwind-tdep.c.
Referenced by libunwind_load().
|
static |
Definition at line 79 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().
|
static |
Definition at line 81 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().
|
static |
Definition at line 88 of file ia64-libunwind-tdep.c.
Referenced by libunwind_find_dyn_list(), and libunwind_load().
|
static |
Definition at line 66 of file ia64-libunwind-tdep.c.
Referenced by libunwind_frame_prev_register(), libunwind_get_reg_special(), and libunwind_load().
|
static |
Definition at line 63 of file ia64-libunwind-tdep.c.
Referenced by libunwind_frame_cache(), libunwind_frame_prev_register(), libunwind_get_reg_special(), and libunwind_load().
|
static |
Definition at line 69 of file ia64-libunwind-tdep.c.
Referenced by libunwind_frame_prev_register(), and libunwind_load().
|
static |
Definition at line 76 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().
|
static |
Definition at line 71 of file ia64-libunwind-tdep.c.
Referenced by libunwind_frame_sniffer(), libunwind_load(), and libunwind_sigtramp_frame_sniffer().
|
static |
Definition at line 85 of file ia64-libunwind-tdep.c.
Referenced by libunwind_load(), and libunwind_search_unwind_table().
|
static |
Definition at line 73 of file ia64-libunwind-tdep.c.
Referenced by libunwind_frame_cache(), and libunwind_load().