24#include "gdbsupport/gdb_obstack.h"
93 const block *bl =
this;
107 const block *bl =
this;
126static const struct block *
129 const struct block *b;
143 gdb_assert (bl->
blocks ().size () >= 2);
145 top = bl->
blocks ().size ();
147 while (top - bot > 1)
149 half = (top - bot + 1) >> 1;
150 b = bl->
block (bot + half);
151 if (b->
start () <= pc)
162 if (!(b->
start () <= pc))
179 const struct block **pblock,
183 const struct block *b;
235 throw_error (NO_ENTRY_VALUE_ERROR,
236 _(
"DW_OP_entry_value resolving cannot find "
237 "DW_TAG_call_site %s in %s"),
239 (msym.
minsym == NULL ?
"???"
264 const struct block *b;
341 if (using_decl ==
nullptr)
414 if (objfile == NULL ||
function () == NULL)
471 while (cu->
user != NULL)
498 if (iterator->
idx == -1)
616 if (iterator->
name ==
nullptr)
684 struct symbol *other = NULL;
696 if (sym->matches (
domain))
712 struct symbol *sym_found = NULL;
716 if (sym->matches (
domain))
719 if (!sym->is_argument ())
735 struct symbol *sym, *other;
803 if (!sym->matches (
domain))
819 const std::vector<blockrange> &rangevec)
822 size_t n = rangevec.size();
830 for (
int i = 0; i < n; i++)
831 blr->
range[i] = rangevec[i];
bool best_symbol(struct symbol *a, const domain_enum domain)
struct symbol * better_symbol(struct symbol *a, struct symbol *b, const domain_enum domain)
struct call_site * call_site_for_pc(struct gdbarch *gdbarch, CORE_ADDR pc)
struct symbol * block_lookup_symbol_primary(const struct block *block, const char *name, const domain_enum domain)
static struct symbol * block_iter_match_step(struct block_iterator *iterator, int first)
struct symbol * block_iterator_first(const struct block *block, struct block_iterator *iterator, const lookup_name_info *name)
static struct symbol * block_iterator_step(struct block_iterator *iterator, int first)
struct blockranges * make_blockranges(struct objfile *objfile, const std::vector< blockrange > &rangevec)
const struct blockvector * blockvector_for_pc_sect(CORE_ADDR pc, struct obj_section *section, const struct block **pblock, struct compunit_symtab *cust)
static struct compunit_symtab * get_block_compunit_symtab(const struct block *block)
struct symbol * block_lookup_symbol(const struct block *block, const char *name, symbol_name_match_type match_type, const domain_enum domain)
const struct block * block_for_pc(CORE_ADDR pc)
const struct block * block_for_pc_sect(CORE_ADDR pc, struct obj_section *section)
int blockvector_contains_pc(const struct blockvector *bv, CORE_ADDR pc)
struct symbol * block_find_symbol(const struct block *block, const lookup_name_info &name, const domain_enum domain, struct symbol **stub)
struct symbol * block_iterator_next(struct block_iterator *iterator)
static void initialize_block_iterator(const struct block *block, struct block_iterator *iter, const lookup_name_info *name=nullptr)
static struct compunit_symtab * find_iterator_compunit_symtab(struct block_iterator *iterator)
const struct blockvector * blockvector_for_pc(CORE_ADDR pc, const struct block **pblock)
static const struct block * find_block_in_blockvector(const struct blockvector *bl, CORE_ADDR pc)
iterator_range< block_iterator_wrapper > block_iterator_range
struct symbol * mdict_iterator_first(const multidictionary *mdict, struct mdict_iterator *miterator)
struct symbol * mdict_iter_match_next(const lookup_name_info &name, struct mdict_iterator *miterator)
struct symbol * mdict_iter_match_first(const struct multidictionary *mdict, const lookup_name_info &name, struct mdict_iterator *miterator)
struct symbol * mdict_iterator_next(struct mdict_iterator *miterator)
#define TYPE_IS_OPAQUE(thistype)
struct bound_minimal_symbol lookup_minimal_symbol_by_pc(CORE_ADDR pc)
const struct dynamic_prop * objfile_lookup_static_link(struct objfile *objfile, const struct block *block)
const void * find(CORE_ADDR addr) const
const struct block * block
struct compunit_symtab * compunit_symtab
const lookup_name_info * name
union block_iterator::@21 d
struct mdict_iterator mdict_iter
struct using_direct * using_decl
const block * superblock() const
void set_using(struct using_direct *using_decl, struct obstack *obstack)
bool contains(const struct block *a, bool allow_nested=false) const
void initialize_namespace(struct obstack *obstack)
multidictionary * multidict() const
const struct block * global_block() const
struct gdbarch * gdbarch() const
struct symbol * containing_function() const
const struct block * function_block() const
const struct block * static_block() const
void set_compunit_symtab(struct compunit_symtab *)
struct dynamic_prop * static_link() const
struct block_namespace_info * m_namespace_info
void set_scope(const char *scope, struct obstack *obstack)
symbol * function() const
struct objfile * objfile() const
struct symbol * linkage_function() const
struct using_direct * get_using() const
const char * scope() const
struct blockrange range[1]
struct block * block(size_t i)
gdb::array_view< struct block * > blocks()
struct minimal_symbol * minsym
call_site * find_call_site(CORE_ADDR pc) const
struct blockvector * blockvector()
struct compunit_symtab * user
struct compunit_symtab ** includes
struct objfile * objfile() const
const char * print_name() const
struct compunit_symtab * compunit_symtab
struct gdbarch * arch() const
auto_obstack objfile_obstack
address_class aclass() const
domain_enum domain() const
bool matches(domain_enum d) const
struct objfile * objfile() const
struct obj_section * find_pc_mapped_section(CORE_ADDR pc)
struct compunit_symtab * find_pc_sect_compunit_symtab(CORE_ADDR pc, struct obj_section *section)
struct compunit_symtab * find_pc_compunit_symtab(CORE_ADDR pc)
const char * paddress(struct gdbarch *gdbarch, CORE_ADDR addr)