GDB (xrefs)

Classes | Macros | Typedefs | Functions | Variables
/tmp/gdb-8.1/gdb/ia64-libunwind-tdep.c File Reference
`#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 "complaints.h"`
`#include "common/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)
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 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 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))

## Macro Definition Documentation

## ◆ __BIG_ENDIAN

#define __BIG_ENDIAN 4321

Definition at line 56 of file ia64-libunwind-tdep.c.

Referenced by libunwind_frame_cache(), libunwind_frame_sniffer(), libunwind_get_reg_special(), and libunwind_sigtramp_frame_sniffer().

## ◆ __LITTLE_ENDIAN

#define __LITTLE_ENDIAN 1234

Definition at line 53 of file ia64-libunwind-tdep.c.

Referenced by libunwind_frame_cache(), libunwind_frame_sniffer(), libunwind_get_reg_special(), and libunwind_sigtramp_frame_sniffer().

## ◆ LIBUNWIND_SO

#define LIBUNWIND_SO "libunwind-" STRINGIFY(UNW_TARGET) ".so.8"

Definition at line 107 of file ia64-libunwind-tdep.c.

Referenced by libunwind_load().

## ◆ LIBUNWIND_SO_7

#define LIBUNWIND_SO_7 "libunwind-" STRINGIFY(UNW_TARGET) ".so.7"

Definition at line 111 of file ia64-libunwind-tdep.c.

Referenced by libunwind_load().

## Typedef Documentation

## ◆ unw_create_addr_space_p_ftype

typedef unw_addr_space_t() unw_create_addr_space_p_ftype(unw_accessors_t *, int)

Definition at line 78 of file ia64-libunwind-tdep.c.

## ◆ unw_destroy_addr_space_p_ftype

typedef void() unw_destroy_addr_space_p_ftype(unw_addr_space_t)

Definition at line 81 of file ia64-libunwind-tdep.c.

## ◆ unw_find_dyn_list_p_ftype

typedef unw_word_t() unw_find_dyn_list_p_ftype(unw_addr_space_t, unw_dyn_info_t *, void *)

Definition at line 87 of file ia64-libunwind-tdep.c.

## ◆ unw_get_fpreg_p_ftype

typedef int() unw_get_fpreg_p_ftype(unw_cursor_t *, unw_regnum_t, unw_fpreg_t *)

Definition at line 65 of file ia64-libunwind-tdep.c.

## ◆ unw_get_reg_p_ftype

typedef int() unw_get_reg_p_ftype(unw_cursor_t *, unw_regnum_t, unw_word_t *)

Definition at line 63 of file ia64-libunwind-tdep.c.

## ◆ unw_get_saveloc_p_ftype

typedef int() unw_get_saveloc_p_ftype(unw_cursor_t *, unw_regnum_t, unw_save_loc_t *)

Definition at line 68 of file ia64-libunwind-tdep.c.

## ◆ unw_init_remote_p_ftype

typedef int() unw_init_remote_p_ftype(unw_cursor_t *, unw_addr_space_t, void *)

Definition at line 75 of file ia64-libunwind-tdep.c.

## ◆ unw_is_signal_frame_p_ftype

typedef int() unw_is_signal_frame_p_ftype(unw_cursor_t *)

Definition at line 71 of file ia64-libunwind-tdep.c.

## ◆ unw_search_unwind_table_p_ftype

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 83 of file ia64-libunwind-tdep.c.

## ◆ unw_step_p_ftype

typedef int() unw_step_p_ftype(unw_cursor_t *)

Definition at line 73 of file ia64-libunwind-tdep.c.

## Function Documentation

## ◆ _initialize_libunwind_frame()

void _initialize_libunwind_frame | ( | void |  | ) |

Definition at line 596 of file ia64-libunwind-tdep.c.

References gdbarch_data_register_post_init(), libunwind_descr_handle, libunwind_descr_init(), libunwind_initialized, and libunwind_load().

## ◆ libunwind_descr()

static struct libunwind_descr* libunwind_descr | ( | struct gdbarch * | gdbarch | ) |
| static

Definition at line 127 of file ia64-libunwind-tdep.c.

References libunwind_descr_handle.

Referenced by libunwind_frame_cache(), libunwind_frame_prev_register(), libunwind_frame_sniffer(), libunwind_get_reg_special(), and libunwind_sigtramp_frame_sniffer().

## ◆ libunwind_descr_init()

static void* libunwind_descr_init | ( | struct gdbarch * | gdbarch | ) |
| static

Definition at line 134 of file ia64-libunwind-tdep.c.

References GDBARCH_OBSTACK_ZALLOC.

Referenced by _initialize_libunwind_frame(), and libunwind_frame_set_descr().

## ◆ libunwind_find_dyn_list()

unw_word_t libunwind_find_dyn_list | ( | unw_addr_space_t | as,
|  | unw_dyn_info_t * | di,
|  | void * | arg
| ) |  |

Definition at line 255 of file ia64-libunwind-tdep.c.

References libunwind_frame_cache::as, and unw_find_dyn_list_p.

## ◆ libunwind_frame_cache()

static struct libunwind_frame_cache* libunwind_frame_cache | ( | struct frame_info * | this_frame,
|  | void ** | this_cache
| ) |  |
| static

Definition at line 170 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().

## ◆ libunwind_frame_dealloc_cache()

void libunwind_frame_dealloc_cache | ( | struct frame_info * | self,
|  | void * | this_cache
| ) |  |

Definition at line 245 of file ia64-libunwind-tdep.c.

References libunwind_frame_cache::as, and unw_destroy_addr_space_p.

## ◆ libunwind_frame_prev_register()

struct value* libunwind_frame_prev_register | ( | struct frame_info * | this_frame,
|  | void ** | this_cache,
|  | int | regnum
| ) |  |

Definition at line 320 of file ia64-libunwind-tdep.c.

References _, 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(), regnum, target_has_registers, unw_get_fpreg_p, unw_get_reg_p, unw_get_saveloc_p, and libunwind_descr::uw2gdb.

## ◆ libunwind_frame_set_descr()

void libunwind_frame_set_descr | ( | struct gdbarch * | gdbarch,
|  | struct libunwind_descr * | descr
| ) |  |

Definition at line 143 of file ia64-libunwind-tdep.c.

References libunwind_descr::accessors, deprecated_set_gdbarch_data(), libunwind_descr::gdb2uw, gdb_assert, libunwind_descr::is_fpreg, libunwind_descr_handle, libunwind_descr_init(), libunwind_descr::special_accessors, and libunwind_descr::uw2gdb.

Referenced by ia64_gdbarch_init(), and ia64_openvms_init_abi().

## ◆ libunwind_frame_sniffer()

int libunwind_frame_sniffer | ( | const struct frame_unwind * | self,
|  | struct frame_info * | this_frame,
|  | void ** | this_cache
| ) |  |

Definition at line 263 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.

## ◆ libunwind_frame_this_id()

void libunwind_frame_this_id | ( | struct frame_info * | this_frame,
|  | void ** | this_cache,
|  | struct frame_id * | this_id
| ) |  |

Definition at line 309 of file ia64-libunwind-tdep.c.

References libunwind_frame_cache::base, frame_id_build(), libunwind_frame_cache::func_addr, and libunwind_frame_cache().

## ◆ libunwind_get_reg_special()

int libunwind_get_reg_special | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | int | regnum,
|  | void * | buf
| ) |  |

Definition at line 455 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().

## ◆ libunwind_is_initialized()

int libunwind_is_initialized | ( | void |  | ) |

Definition at line 590 of file ia64-libunwind-tdep.c.

References libunwind_initialized.

Referenced by ia64_pseudo_register_read().

## ◆ libunwind_load()

static int libunwind_load | ( | void |  | ) |
| static

Definition at line 509 of file ia64-libunwind-tdep.c.

References _, create_addr_space_name, destroy_addr_space_name, find_dyn_list_name, fprintf_unfiltered(), 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().

## ◆ libunwind_search_unwind_table()

int libunwind_search_unwind_table | ( | void * | as,
|  | long | ip,
|  | void * | di,
|  | void * | pi,
|  | int | need_unwind_info,
|  | void * | args
| ) |  |

Definition at line 395 of file ia64-libunwind-tdep.c.

References unw_search_unwind_table_p.

## ◆ libunwind_sigtramp_frame_sniffer()

int libunwind_sigtramp_frame_sniffer | ( | const struct frame_unwind * | self,
|  | struct frame_info * | this_frame,
|  | void ** | this_cache
| ) |  |

Definition at line 406 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.

## Variable Documentation

## ◆ create_addr_space_name

char* create_addr_space_name = STRINGIFY(UNW_OBJ(create_addr_space))
| static

Definition at line 120 of file ia64-libunwind-tdep.c.

Referenced by libunwind_load().

## ◆ destroy_addr_space_name

char* destroy_addr_space_name = STRINGIFY(UNW_OBJ(destroy_addr_space))
| static

Definition at line 121 of file ia64-libunwind-tdep.c.

Referenced by libunwind_load().

## ◆ find_dyn_list_name

char* find_dyn_list_name = STRINGIFY(UNW_OBJ(find_dyn_list))
| static

Definition at line 124 of file ia64-libunwind-tdep.c.

Referenced by libunwind_load().

## ◆ get_fpreg_name

char* get_fpreg_name = STRINGIFY(UNW_OBJ(get_fpreg))
| static

Definition at line 115 of file ia64-libunwind-tdep.c.

Referenced by libunwind_load().

## ◆ get_reg_name

char* get_reg_name = STRINGIFY(UNW_OBJ(get_reg))
| static

Definition at line 114 of file ia64-libunwind-tdep.c.

Referenced by libunwind_load().

## ◆ get_saveloc_name

char* get_saveloc_name = STRINGIFY(UNW_OBJ(get_save_loc))
| static

Definition at line 116 of file ia64-libunwind-tdep.c.

Referenced by libunwind_load().

## ◆ init_remote_name

char* init_remote_name = STRINGIFY(UNW_OBJ(init_remote))
| static

Definition at line 119 of file ia64-libunwind-tdep.c.

Referenced by libunwind_load().

## ◆ is_signal_frame_name

char* is_signal_frame_name = STRINGIFY(UNW_OBJ(is_signal_frame))
| static

Definition at line 117 of file ia64-libunwind-tdep.c.

Referenced by libunwind_load().

## ◆ libunwind_descr_handle

struct gdbarch_data* libunwind_descr_handle
| static

Definition at line 60 of file ia64-libunwind-tdep.c.

Referenced by _initialize_libunwind_frame(), libunwind_descr(), and libunwind_frame_set_descr().

## ◆ libunwind_initialized

int libunwind_initialized
| static

Definition at line 59 of file ia64-libunwind-tdep.c.

Referenced by _initialize_libunwind_frame(), and libunwind_is_initialized().

## ◆ search_unwind_table_name

char* search_unwind_table_name = STRINGIFY(UNW_OBJ(search_unwind_table))
| static

Definition at line 123 of file ia64-libunwind-tdep.c.

Referenced by libunwind_load().

## ◆ step_name

char* step_name = STRINGIFY(UNW_OBJ(step))
| static

Definition at line 118 of file ia64-libunwind-tdep.c.

Referenced by libunwind_load().

## ◆ unw_create_addr_space_p

unw_create_addr_space_p_ftype* unw_create_addr_space_p
| static

Definition at line 80 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().

## ◆ unw_destroy_addr_space_p

unw_destroy_addr_space_p_ftype* unw_destroy_addr_space_p
| static

Definition at line 82 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_find_dyn_list_p

unw_find_dyn_list_p_ftype* unw_find_dyn_list_p
| static

Definition at line 89 of file ia64-libunwind-tdep.c.

Referenced by libunwind_find_dyn_list(), and libunwind_load().

## ◆ unw_get_fpreg_p

unw_get_fpreg_p_ftype* unw_get_fpreg_p
| static

Definition at line 67 of file ia64-libunwind-tdep.c.

Referenced by libunwind_frame_prev_register(), libunwind_get_reg_special(), and libunwind_load().

## ◆ unw_get_reg_p

unw_get_reg_p_ftype* unw_get_reg_p
| static

Definition at line 64 of file ia64-libunwind-tdep.c.

Referenced by libunwind_frame_cache(), libunwind_frame_prev_register(), libunwind_get_reg_special(), and libunwind_load().

## ◆ unw_get_saveloc_p

unw_get_saveloc_p_ftype* unw_get_saveloc_p
| static

Definition at line 70 of file ia64-libunwind-tdep.c.

Referenced by libunwind_frame_prev_register(), and libunwind_load().

## ◆ unw_init_remote_p

unw_init_remote_p_ftype* unw_init_remote_p
| static

Definition at line 77 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().

## ◆ unw_is_signal_frame_p

unw_is_signal_frame_p_ftype* unw_is_signal_frame_p
| static

Definition at line 72 of file ia64-libunwind-tdep.c.

Referenced by libunwind_frame_sniffer(), libunwind_load(), and libunwind_sigtramp_frame_sniffer().

## ◆ unw_search_unwind_table_p

unw_search_unwind_table_p_ftype* unw_search_unwind_table_p
| static

Definition at line 86 of file ia64-libunwind-tdep.c.

Referenced by libunwind_load(), and libunwind_search_unwind_table().

## ◆ unw_step_p

unw_step_p_ftype* unw_step_p
| static

Definition at line 74 of file ia64-libunwind-tdep.c.

Referenced by libunwind_frame_cache(), and libunwind_load().