40 std::vector<symbol *> &&skipped_symbols_)
76 return state.thread == thread;
103 gdb_assert (target != NULL);
105 if (filter_ptid == minus_one_ptid || filter_ptid.is_pid ())
107 auto matcher = [target, &filter_ptid] (
const inline_state &state)
111 && t->
ptid.matches (filter_ptid));
123 auto matcher = [target, &filter_ptid] (
const inline_state &state)
127 && filter_ptid == t->
ptid);
145 return thread == state.thread;
167 if (prev_frame ==
nullptr)
168 error (_(
"failed to find previous frame when computing inline frame id"));
183 gdb_assert (
func != NULL);
184 (*this_id).code_addr =
func->value_block ()->entry_pc ();
185 (*this_id).artificial_depth++;
215 const struct block *frame_block, *cur_block;
222 if (frame_block == NULL)
228 cur_block = frame_block;
233 else if (cur_block->
function () != NULL)
244 gdb_assert (depth > 0);
251 if (state != NULL && state->
skipped_frames > 0 && next_frame == NULL)
289 if (bv->
map () ==
nullptr)
312 for (
bpstat *s = stop_chain; s !=
nullptr; s = s->
next)
330 if (
loc->symbol ==
nullptr
331 || frame_block ==
loc->symbol->value_block ())
345 const struct block *frame_block, *cur_block;
346 std::vector<struct symbol *> skipped_syms;
355 if (frame_block != NULL)
357 cur_block = frame_block;
364 if (cur_block->
entry_pc () == this_pc
374 skipped_syms.push_back (cur_block->
function ());
379 else if (cur_block->
function () != NULL)
388 std::move (skipped_syms));
427 gdb_assert (state != NULL);
447 int inline_count = 0;
459 if (next_frame == NULL)
const struct block * block_for_pc(CORE_ADDR pc)
const struct blockvector * blockvector_for_pc(CORE_ADDR pc, const struct block **pblock)
struct symbol * get_frame_function(frame_info_ptr frame)
int user_breakpoint_p(struct breakpoint *b)
@ bp_loc_hardware_breakpoint
@ bp_loc_software_breakpoint
struct process_stratum_target * process_target()
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)
struct value * get_frame_register_value(frame_info_ptr frame, int regnum)
CORE_ADDR get_frame_pc(frame_info_ptr frame)
void reinit_frame_cache(void)
frame_info_ptr get_prev_frame_always(frame_info_ptr this_frame)
bool frame_id_p(frame_id l)
enum frame_type get_frame_type(frame_info_ptr frame)
frame_info_ptr get_current_frame(void)
CORE_ADDR get_frame_address_in_block(frame_info_ptr this_frame)
struct frame_id get_frame_id(frame_info_ptr fi)
struct thread_info * inferior_thread(void)
void clear_inline_frame_state(process_stratum_target *target, ptid_t filter_ptid)
int inline_skipped_frames(thread_info *thread)
int frame_inlined_callees(frame_info_ptr this_frame)
static std::vector< inline_state > inline_states
void step_into_inline_frame(thread_info *thread)
static void inline_frame_this_id(frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
static bool stopped_by_user_bp_inline_frame(const block *frame_block, bpstat *stop_chain)
static int block_starting_point_at(CORE_ADDR pc, const struct block *block)
struct symbol * inline_skipped_symbol(thread_info *thread)
void skip_inline_frames(thread_info *thread, bpstat *stop_chain)
const struct frame_unwind inline_frame_unwind
static struct value * inline_frame_prev_register(frame_info_ptr this_frame, void **this_cache, int regnum)
static struct inline_state * find_inline_frame_state(thread_info *thread)
static int inline_frame_sniffer(const struct frame_unwind *self, frame_info_ptr this_frame, void **this_cache)
static struct block * new_block(struct objfile *objfile, enum block_type, enum language)
CORE_ADDR regcache_read_pc(struct regcache *regcache)
struct regcache * get_thread_regcache(process_stratum_target *target, ptid_t ptid)
void(* func)(remote_target *remote, char *)
const void * find(CORE_ADDR addr) const
const block * superblock() const
bool contains(const struct block *a, bool allow_nested=false) const
CORE_ADDR entry_pc() const
symbol * function() const
std::vector< struct symbol * > skipped_symbols
inline_state(thread_info *thread_, int skipped_frames_, CORE_ADDR saved_pc_, std::vector< symbol * > &&skipped_symbols_)