27#include "gdbsupport/gdb_obstack.h"
58 return &(*link)->next;
139 catch (
const gdb_exception &ex)
153 if (ex.error == NOT_AVAILABLE_ERROR)
177 gdb_assert_not_reached (
"frame_unwind_try_unwinder");
196 if (unwinder_from_target != NULL
198 unwinder_from_target))
202 if (unwinder_from_target != NULL
204 unwinder_from_target))
207 for (entry = table->
list; entry != NULL; entry = entry->next)
211 internal_error (_(
"frame_unwind_find_by_frame failed"));
220 void **this_prologue_cache)
234 return UNWIND_OUTERMOST;
236 return UNWIND_NO_REASON;
278 int regnum,
int new_regnum)
305 struct value *reg_val;
317 struct value *reg_val;
334 struct value *reg_val;
359 const char *
name = entry->unwinder->name;
377 _(
"List the frame unwinders currently in effect, "
378 "starting with the highest priority."),
struct gdbarch * target_gdbarch(void)
obstack * gdbarch_obstack(gdbarch *arch)
void set(unsigned key, void *datum)
void field_string(const char *fldname, const char *string, const ui_file_style &style=ui_file_style())
void text(const char *string)
void table_header(int width, ui_align align, const std::string &col_name, const std::string &col_hdr)
struct cmd_list_element * maintenanceinfolist
struct cmd_list_element * add_cmd(const char *name, enum command_class theclass, const char *doc, struct cmd_list_element **list)
static void store_unsigned_integer(gdb_byte *addr, int len, enum bfd_endian byte_order, ULONGEST val)
const struct frame_unwind dummy_frame_unwind
struct value * value_of_register_lazy(frame_info_ptr frame, int regnum)
const struct frame_id outer_frame_id
const struct frame_unwind dwarf2_tailcall_frame_unwind
int default_frame_sniffer(const struct frame_unwind *self, frame_info_ptr this_frame, void **this_prologue_cache)
struct value * frame_unwind_got_memory(frame_info_ptr frame, int regnum, CORE_ADDR addr)
CORE_ADDR default_unwind_pc(struct gdbarch *gdbarch, frame_info_ptr next_frame)
static int frame_unwind_try_unwinder(frame_info_ptr this_frame, void **this_cache, const struct frame_unwind *unwinder)
struct value * frame_unwind_got_optimized(frame_info_ptr frame, int regnum)
void frame_unwind_find_by_frame(frame_info_ptr this_frame, void **this_cache)
struct value * frame_unwind_got_register(frame_info_ptr frame, int regnum, int new_regnum)
static void maintenance_info_frame_unwinders(const char *args, int from_tty)
void frame_unwind_prepend_unwinder(struct gdbarch *gdbarch, const struct frame_unwind *unwinder)
struct value * frame_unwind_got_address(frame_info_ptr frame, int regnum, CORE_ADDR addr)
void _initialize_frame_unwind()
enum unwind_stop_reason default_frame_unwind_stop_reason(frame_info_ptr this_frame, void **this_cache)
static struct frame_unwind_table_entry ** add_unwinder(struct obstack *obstack, const struct frame_unwind *unwinder, struct frame_unwind_table_entry **link)
struct value * frame_unwind_got_bytes(frame_info_ptr frame, int regnum, const gdb_byte *buf)
static const registry< gdbarch >::key< struct frame_unwind_table > frame_unwind_data
static struct frame_unwind_table * get_frame_unwind_table(struct gdbarch *gdbarch)
struct value * frame_unwind_got_constant(frame_info_ptr frame, int regnum, ULONGEST val)
CORE_ADDR default_unwind_sp(struct gdbarch *gdbarch, frame_info_ptr next_frame)
void frame_unwind_append_unwinder(struct gdbarch *gdbarch, const struct frame_unwind *unwinder)
int frame_relative_level(frame_info_ptr fi)
void frame_cleanup_after_sniffer(frame_info_ptr frame)
ULONGEST frame_unwind_register_unsigned(frame_info_ptr next_frame, int regnum)
const char * frame_type_str(frame_type type)
struct gdbarch * frame_unwind_arch(frame_info_ptr next_frame)
struct gdbarch * get_frame_arch(frame_info_ptr this_frame)
void frame_prepare_for_sniffer(frame_info_ptr frame, const struct frame_unwind *unwind)
unsigned int get_frame_cache_generation()
struct frame_id get_frame_id(frame_info_ptr fi)
#define frame_debug_printf(fmt,...)
#define FRAME_SCOPED_DEBUG_ENTER_EXIT
int gdbarch_pc_regnum(struct gdbarch *gdbarch)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
int gdbarch_sp_regnum(struct gdbarch *gdbarch)
CORE_ADDR gdbarch_addr_bits_remove(struct gdbarch *gdbarch, CORE_ADDR addr)
#define GDBARCH_OBSTACK_ZALLOC(GDBARCH, TYPE)
const struct frame_unwind inline_frame_unwind
int register_size(struct gdbarch *gdbarch, int regnum)
struct type * register_type(struct gdbarch *gdbarch, int regnum)
struct frame_unwind_table_entry * next
const struct frame_unwind * unwinder
struct frame_unwind_table_entry * list
struct frame_unwind_table_entry ** osabi_head
frame_sniffer_ftype * sniffer
static struct value * zero(struct type *type, enum lval_type lv)
static struct value * allocate_optimized_out(struct type *type)
gdb::array_view< gdb_byte > contents_writeable()
gdb::array_view< gdb_byte > contents_raw()
const struct frame_unwind * target_get_tailcall_unwinder(void)
const struct frame_unwind * target_get_unwinder(void)
struct value * value_at_lazy(struct type *type, CORE_ADDR addr, frame_info_ptr frame)
void pack_long(gdb_byte *buf, struct type *type, LONGEST num)