100 slot = htab_find_slot (
cache_htab, cache, INSERT);
159 slot = htab_find_slot (
cache_htab, &fi, NO_INSERT);
221 (*this_id).code_addr_p = 1;
241 if (next_levels < chain->
callees)
248 if (next_levels < chain->
callers)
264 void **tailcall_cachep,
int regnum)
292 static struct value *
294 void **this_cache,
int regnum)
315 struct frame_info *this_frame,
void **this_cache)
323 if (next_frame == NULL)
360 void **tailcall_cachep,
361 const LONGEST *entry_cfa_sp_offsetp)
389 if (entry_cfa_sp_offsetp != NULL)
415 *tailcall_cachep = cache;
445 void **this_prologue_cache)
CORE_ADDR get_frame_address_in_block(struct frame_info *this_frame)
CORE_ADDR get_frame_pc(struct frame_info *frame)
struct call_site * call_site[1]
static int existing_next_levels(struct frame_info *this_frame, struct tailcall_cache *cache)
struct call_site_chain * chain
CORE_ADDR dwarf2_frame_cfa(struct frame_info *this_frame)
ULONGEST frame_unwind_register_unsigned(struct frame_info *frame, int regnum)
static int pretended_chain_levels(struct call_site_chain *chain)
static CORE_ADDR pretend_pc(struct frame_info *this_frame, struct tailcall_cache *cache)
struct frame_info::@60 this_id
struct frame_info * next_bottom_frame
struct gdbarch * frame_unwind_arch(struct frame_info *next_frame)
struct frame_id get_frame_id(struct frame_info *fi)
#define CATCH(EXCEPTION, MASK)
int gdbarch_sp_regnum(struct gdbarch *gdbarch)
static void cache_ref(struct tailcall_cache *cache)
static void cache_unref(struct tailcall_cache *cache)
static struct tailcall_cache * cache_new_ref1(struct frame_info *next_bottom_frame)
void exception_print(struct ui_file *file, struct gdb_exception e)
static struct gdbarch * tailcall_frame_prev_arch(struct frame_info *this_frame, void **this_prologue_cache)
CORE_ADDR gdbarch_unwind_pc(struct gdbarch *gdbarch, struct frame_info *next_frame)
static struct tailcall_cache * cache_find(struct frame_info *fi)
void dwarf2_tailcall_sniffer_first(struct frame_info *this_frame, void **tailcall_cachep, const LONGEST *entry_cfa_sp_offsetp)
static hashval_t cache_hash(const void *arg)
static struct value * tailcall_frame_prev_register(struct frame_info *this_frame, void **this_cache, int regnum)
static int frame_is_tailcall(struct frame_info *fi)
static void tailcall_frame_this_id(struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
void _initialize_tailcall_frame(void)
const struct frame_unwind dwarf2_tailcall_frame_unwind
struct frame_info * get_next_frame(struct frame_info *this_frame)
int frame_relative_level(struct frame_info *fi)
static void tailcall_frame_dealloc_cache(struct frame_info *self, void *this_cache)
struct value * frame_unwind_got_register(struct frame_info *frame, int regnum, int new_regnum)
LONGEST entry_cfa_sp_offset
struct value * dwarf2_tailcall_prev_register_first(struct frame_info *this_frame, void **tailcall_cachep, int regnum)
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
unsigned int entry_values_debug
struct value * frame_unwind_got_address(struct frame_info *frame, int regnum, CORE_ADDR addr)
static int tailcall_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_cache)
int gdbarch_pc_regnum(struct gdbarch *gdbarch)
static int cache_eq(const void *arg1, const void *arg2)
PTR xcalloc(size_t number, size_t size)
struct call_site_chain * call_site_find_chain(struct gdbarch *gdbarch, CORE_ADDR caller_pc, CORE_ADDR callee_pc)
struct gdbarch * get_frame_arch(struct frame_info *this_frame)
int frame_unwinder_is(struct frame_info *fi, const struct frame_unwind *unwinder)