24#include "gdbsupport/gdb_obstack.h"
41 struct obstack *obstack);
133static const struct block *
136 const struct block *b;
150 gdb_assert (bl->
blocks ().size () >= 2);
152 top = bl->
blocks ().size ();
154 while (top - bot > 1)
156 half = (top - bot + 1) >> 1;
157 b = bl->
block (bot + half);
158 if (b->
start () <= pc)
169 if (!(b->
start () <= pc))
186 const struct block **pblock,
190 const struct block *b;
242 throw_error (NO_ENTRY_VALUE_ERROR,
243 _(
"DW_OP_entry_value resolving cannot find "
244 "DW_TAG_call_site %s in %s"),
246 (msym.
minsym == NULL ?
"???"
271 const struct block *b;
314 struct obstack *obstack)
340 struct obstack *obstack)
399 struct block *bl = OBSTACK_ZALLOC (obstack,
struct block);
491 while (cu->
user != NULL)
518 if (iterator->
idx == -1)
717 struct symbol *other = NULL;
746 struct symbol *sym_found = NULL;
770 struct symbol *sym, *other;
847 && matcher (sym, data))
878 const std::vector<blockrange> &rangevec)
881 size_t n = rangevec.size();
889 for (
int i = 0; i < n; i++)
890 blr->
range[i] = rangevec[i];
struct symbol * block_iter_match_next(const lookup_name_info &name, struct block_iterator *iterator)
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)
struct block * allocate_block(struct obstack *obstack)
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)
const struct block * block_global_block(const struct block *block)
static void initialize_block_iterator(const struct block *block, struct block_iterator *iter)
void block_set_using(struct block *block, struct using_direct *using_decl, struct obstack *obstack)
static struct symbol * block_iter_match_step(struct block_iterator *iterator, const lookup_name_info &name, int first)
struct objfile * block_objfile(const struct block *block)
int block_inlined_p(const struct block *bl)
struct dynamic_prop * block_static_link(const struct block *block)
struct symbol * block_find_symbol(const struct block *block, const char *name, const domain_enum domain, block_symbol_matcher_ftype *matcher, void *data)
struct using_direct * block_using(const struct block *block)
bool contained_in(const struct block *a, const struct block *b, bool allow_nested)
void block_set_scope(struct block *block, const char *scope, struct obstack *obstack)
struct gdbarch * block_gdbarch(const struct block *block)
struct symbol * block_containing_function(const struct block *bl)
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 block * allocate_global_block(struct obstack *obstack)
static void block_initialize_namespace(struct block *block, struct obstack *obstack)
const struct block * block_static_block(const struct block *block)
int block_find_non_opaque_type_preferred(struct symbol *sym, void *data)
struct symbol * block_iter_match_first(const struct block *block, const lookup_name_info &name, struct block_iterator *iterator)
const char * block_scope(const struct block *block)
struct symbol * block_iterator_next(struct block_iterator *iterator)
static struct compunit_symtab * find_iterator_compunit_symtab(struct block_iterator *iterator)
struct symbol * block_iterator_first(const struct block *block, struct block_iterator *iterator)
const struct blockvector * blockvector_for_pc(CORE_ADDR pc, const struct block **pblock)
int block_find_non_opaque_type(struct symbol *sym, void *data)
static const struct block * find_block_in_blockvector(const struct blockvector *bl, CORE_ADDR pc)
struct symbol * block_linkage_function(const struct block *bl)
void set_block_compunit_symtab(struct block *block, struct compunit_symtab *cu)
int() block_symbol_matcher_ftype(struct symbol *, void *)
#define ALL_BLOCK_SYMBOLS_WITH_NAME(block, name, iter, sym)
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)
virtual void * find(CORE_ADDR addr) const =0
union block_iterator::@19 d
const struct block * block
struct compunit_symtab * compunit_symtab
struct mdict_iterator mdict_iter
struct using_direct * using_decl
const block * superblock() const
multidictionary * multidict() const
block_namespace_info * namespace_info() const
void set_namespace_info(block_namespace_info *namespace_info)
symbol * function() 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
enum language language() const
struct compunit_symtab * compunit_symtab
struct gdbarch * arch() const
auto_obstack objfile_obstack
address_class aclass() const
struct type * type() const
domain_enum domain() 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)
bool symbol_matches_domain(enum language symbol_language, domain_enum symbol_domain, domain_enum domain)
const char * paddress(struct gdbarch *gdbarch, CORE_ADDR addr)