97 cache =
xzalloc (
sizeof (*cache));
102 slot = htab_find_slot (
cache_htab, cache, INSERT);
161 slot = htab_find_slot (
cache_htab, &fi, NO_INSERT);
223 (*this_id).code_addr_p = 1;
243 if (next_levels < chain->
callees)
250 if (next_levels < chain->
callers)
266 void **tailcall_cachep,
int regnum)
294 static struct value *
296 void **this_cache,
int regnum)
317 struct frame_info *this_frame,
void **this_cache)
325 if (next_frame == NULL)
362 void **tailcall_cachep,
363 const LONGEST *entry_cfa_sp_offsetp)
391 if (entry_cfa_sp_offsetp == NULL)
408 if (chain == NULL || chain->
length == 0)
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)
initialize_file_ftype _initialize_tailcall_frame
ULONGEST frame_unwind_register_unsigned(struct frame_info *frame, int regnum)
struct ui_file * gdb_stdout
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 * 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)
void initialize_file_ftype(void)
int gdbarch_sp_regnum(struct gdbarch *gdbarch)
void * xzalloc(size_t size)
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)
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)