101 slot = htab_find_slot (
cache_htab, cache, INSERT);
102 gdb_assert (*slot == NULL);
113 gdb_assert (cache->
refc > 0);
124 gdb_assert (cache->
refc > 0);
128 gdb_assert (htab_find_slot (
cache_htab, cache, NO_INSERT) != NULL);
158 gdb_assert (fi != NULL);
163 slot = htab_find_slot (
cache_htab, &search, NO_INSERT);
168 gdb_assert (cache != NULL);
182 gdb_assert (retval >= -1);
196 gdb_assert (
chain != NULL);
202 gdb_assert (chain_levels <= chain->length);
221 gdb_assert (next_frame != NULL);
225 (*this_id).code_addr_p =
true;
228 gdb_assert ((*this_id).artificial_depth > 0);
240 gdb_assert (chain != NULL);
243 gdb_assert (next_levels >= 0);
245 if (next_levels < chain->
callees)
252 if (next_levels < chain->
callers)
257 gdb_assert (next_levels == 0);
268 void **tailcall_cachep,
int regnum)
298 void **this_cache,
int regnum)
330 if (next_frame == NULL)
342 gdb_assert (next_levels >= 0);
367 void **tailcall_cachep,
368 const LONGEST *entry_cfa_sp_offsetp)
374 gdb::unique_xmalloc_ptr<call_site_chain> chain;
377 gdb_assert (*tailcall_cachep == NULL);
395 if (entry_cfa_sp_offsetp != NULL)
405 catch (
const gdb_exception_error &except)
410 switch (except.error)
412 case NO_ENTRY_VALUE_ERROR:
415 case OPTIMIZED_OUT_ERROR:
416 case NOT_AVAILABLE_ERROR:
432 *tailcall_cachep = cache;
462 void **this_prologue_cache)
void * xcalloc(size_t number, size_t size)
bool dwarf2_frame_unwinders_enabled_p
CORE_ADDR dwarf2_frame_cfa(frame_info_ptr this_frame)
void exception_print(struct ui_file *file, const struct gdb_exception &e)
static hashval_t cache_hash(const void *arg)
static struct value * tailcall_frame_prev_register(frame_info_ptr this_frame, void **this_cache, int regnum)
static int pretended_chain_levels(struct call_site_chain *chain)
static struct tailcall_cache * cache_new_ref1(frame_info_ptr next_bottom_frame)
static void tailcall_frame_dealloc_cache(frame_info *self, void *this_cache)
static struct tailcall_cache * cache_find(frame_info_ptr fi)
const struct frame_unwind dwarf2_tailcall_frame_unwind
void _initialize_tailcall_frame()
static void tailcall_frame_this_id(frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
static int frame_is_tailcall(frame_info_ptr fi)
static struct gdbarch * tailcall_frame_prev_arch(frame_info_ptr this_frame, void **this_prologue_cache)
static int tailcall_frame_sniffer(const struct frame_unwind *self, frame_info_ptr this_frame, void **this_cache)
void dwarf2_tailcall_sniffer_first(frame_info_ptr this_frame, void **tailcall_cachep, const LONGEST *entry_cfa_sp_offsetp)
static int cache_eq(const void *arg1, const void *arg2)
static int existing_next_levels(frame_info_ptr this_frame, struct tailcall_cache *cache)
static void cache_unref(struct tailcall_cache *cache)
struct value * dwarf2_tailcall_prev_register_first(frame_info_ptr this_frame, void **tailcall_cachep, int regnum)
static CORE_ADDR pretend_pc(frame_info_ptr this_frame, struct tailcall_cache *cache)
static void cache_ref(struct tailcall_cache *cache)
struct value * frame_unwind_got_register(frame_info_ptr frame, int regnum, int new_regnum)
struct value * frame_unwind_got_address(frame_info_ptr frame, int regnum, CORE_ADDR addr)
enum unwind_stop_reason default_frame_unwind_stop_reason(frame_info_ptr this_frame, void **this_cache)
frame_info_ptr get_next_frame(frame_info_ptr this_frame)
int frame_relative_level(frame_info_ptr fi)
ULONGEST frame_unwind_register_unsigned(frame_info_ptr next_frame, int regnum)
CORE_ADDR get_frame_pc(frame_info_ptr frame)
struct gdbarch * frame_unwind_arch(frame_info_ptr next_frame)
struct gdbarch * get_frame_arch(frame_info_ptr this_frame)
bool frame_unwinder_is(frame_info_ptr fi, const frame_unwind *unwinder)
CORE_ADDR get_frame_address_in_block(frame_info_ptr this_frame)
struct frame_id get_frame_id(frame_info_ptr fi)
int gdbarch_pc_regnum(struct gdbarch *gdbarch)
CORE_ADDR gdbarch_unwind_pc(struct gdbarch *gdbarch, frame_info_ptr next_frame)
int gdbarch_sp_regnum(struct gdbarch *gdbarch)
unsigned int entry_values_debug
gdb::unique_xmalloc_ptr< call_site_chain > call_site_find_chain(struct gdbarch *gdbarch, CORE_ADDR caller_pc, CORE_ADDR callee_pc)
struct call_site * call_site[1]
LONGEST entry_cfa_sp_offset
struct call_site_chain * chain
frame_info * next_bottom_frame