20 #if !defined (SYMTAB_H) 81 const char *search_name);
273 template<
typename Field,
typename... Args>
277 field.emplace (*
this, std::forward<Args> (args)...);
463 #define SYMBOL_VALUE(symbol) (symbol)->ginfo.value.ivalue 464 #define SYMBOL_VALUE_ADDRESS(symbol) (symbol)->ginfo.value.address 465 #define SYMBOL_VALUE_BYTES(symbol) (symbol)->ginfo.value.bytes 466 #define SYMBOL_VALUE_COMMON_BLOCK(symbol) (symbol)->ginfo.value.common_block 467 #define SYMBOL_BLOCK_VALUE(symbol) (symbol)->ginfo.value.block 468 #define SYMBOL_VALUE_CHAIN(symbol) (symbol)->ginfo.value.chain 469 #define SYMBOL_LANGUAGE(symbol) (symbol)->ginfo.language 470 #define SYMBOL_SECTION(symbol) (symbol)->ginfo.section 471 #define SYMBOL_OBJ_SECTION(objfile, symbol) \ 472 (((symbol)->ginfo.section >= 0) \ 473 ? (&(((objfile)->sections)[(symbol)->ginfo.section])) \ 478 #define SYMBOL_SET_LANGUAGE(symbol,language,obstack) \ 479 (symbol_set_language (&(symbol)->ginfo, (language), (obstack))) 482 struct obstack *obstack);
489 #define SYMBOL_SET_LINKAGE_NAME(symbol,linkage_name) \ 490 (symbol)->ginfo.name = (linkage_name) 494 #define SYMBOL_SET_NAMES(symbol,linkage_name,len,copy_name,objfile) \ 495 symbol_set_names (&(symbol)->ginfo, linkage_name, len, copy_name, objfile) 497 const char *linkage_name,
int len,
int copy_name,
513 #define SYMBOL_NATURAL_NAME(symbol) \ 514 (symbol_natural_name (&(symbol)->ginfo)) 523 #define SYMBOL_LINKAGE_NAME(symbol) (symbol)->ginfo.name 527 #define SYMBOL_DEMANGLED_NAME(symbol) \ 528 (symbol_demangled_name (&(symbol)->ginfo)) 542 #define SYMBOL_PRINT_NAME(symbol) \ 543 (demangle ? SYMBOL_NATURAL_NAME (symbol) : SYMBOL_LINKAGE_NAME (symbol)) 551 #define SYMBOL_SEARCH_NAME(symbol) \ 552 (symbol_search_name (&(symbol)->ginfo)) 557 #define SYMBOL_MATCHES_SEARCH_NAME(symbol, name) \ 558 symbol_matches_search_name (&(symbol)->ginfo, (name)) 569 const char *search_name);
608 #define MINSYM_TYPE_BITS 4 670 #define MSYMBOL_TARGET_FLAG_1(msymbol) (msymbol)->target_flag_1 671 #define MSYMBOL_TARGET_FLAG_2(msymbol) (msymbol)->target_flag_2 672 #define MSYMBOL_SIZE(msymbol) ((msymbol)->size + 0) 673 #define SET_MSYMBOL_SIZE(msymbol, sz) \ 676 (msymbol)->size = sz; \ 677 (msymbol)->has_size = 1; \ 679 #define MSYMBOL_HAS_SIZE(msymbol) ((msymbol)->has_size + 0) 680 #define MSYMBOL_TYPE(msymbol) (msymbol)->type 682 #define MSYMBOL_VALUE(symbol) (symbol)->mginfo.value.ivalue 684 #define MSYMBOL_VALUE_RAW_ADDRESS(symbol) ((symbol)->mginfo.value.address + 0) 687 #define MSYMBOL_VALUE_ADDRESS(objfile, symbol) \ 688 ((symbol)->mginfo.value.address \ 689 + ANOFFSET ((objfile)->section_offsets, ((symbol)->mginfo.section))) 691 #define BMSYMBOL_VALUE_ADDRESS(symbol) \ 692 MSYMBOL_VALUE_ADDRESS ((symbol).objfile, (symbol).minsym) 693 #define SET_MSYMBOL_VALUE_ADDRESS(symbol, new_value) \ 694 ((symbol)->mginfo.value.address = (new_value)) 695 #define MSYMBOL_VALUE_BYTES(symbol) (symbol)->mginfo.value.bytes 696 #define MSYMBOL_BLOCK_VALUE(symbol) (symbol)->mginfo.value.block 697 #define MSYMBOL_VALUE_CHAIN(symbol) (symbol)->mginfo.value.chain 698 #define MSYMBOL_LANGUAGE(symbol) (symbol)->mginfo.language 699 #define MSYMBOL_SECTION(symbol) (symbol)->mginfo.section 700 #define MSYMBOL_OBJ_SECTION(objfile, symbol) \ 701 (((symbol)->mginfo.section >= 0) \ 702 ? (&(((objfile)->sections)[(symbol)->mginfo.section])) \ 705 #define MSYMBOL_NATURAL_NAME(symbol) \ 706 (symbol_natural_name (&(symbol)->mginfo)) 707 #define MSYMBOL_LINKAGE_NAME(symbol) (symbol)->mginfo.name 708 #define MSYMBOL_PRINT_NAME(symbol) \ 709 (demangle ? MSYMBOL_NATURAL_NAME (symbol) : MSYMBOL_LINKAGE_NAME (symbol)) 710 #define MSYMBOL_DEMANGLED_NAME(symbol) \ 711 (symbol_demangled_name (&(symbol)->mginfo)) 712 #define MSYMBOL_SET_LANGUAGE(symbol,language,obstack) \ 713 (symbol_set_language (&(symbol)->mginfo, (language), (obstack))) 714 #define MSYMBOL_SEARCH_NAME(symbol) \ 715 (symbol_search_name (&(symbol)->mginfo)) 716 #define MSYMBOL_SET_NAMES(symbol,linkage_name,len,copy_name,objfile) \ 717 symbol_set_names (&(symbol)->mginfo, linkage_name, len, copy_name, objfile) 765 #define SYMBOL_DOMAIN_BITS 3 908 #define SYMBOL_ACLASS_BITS 5 970 unsigned char *registers_used,
986 const gdb_byte **start,
size_t *length);
1152 #define SYMBOL_DOMAIN(symbol) (symbol)->domain 1153 #define SYMBOL_IMPL(symbol) (symbol_impls[(symbol)->aclass_index]) 1154 #define SYMBOL_ACLASS_INDEX(symbol) (symbol)->aclass_index 1155 #define SYMBOL_CLASS(symbol) (SYMBOL_IMPL (symbol).aclass) 1156 #define SYMBOL_OBJFILE_OWNED(symbol) ((symbol)->is_objfile_owned) 1157 #define SYMBOL_IS_ARGUMENT(symbol) (symbol)->is_argument 1158 #define SYMBOL_INLINED(symbol) (symbol)->is_inlined 1159 #define SYMBOL_IS_CPLUS_TEMPLATE_FUNCTION(symbol) \ 1160 (((symbol)->subclass) == SYMBOL_TEMPLATE) 1161 #define SYMBOL_TYPE(symbol) (symbol)->type 1162 #define SYMBOL_LINE(symbol) (symbol)->line 1163 #define SYMBOL_COMPUTED_OPS(symbol) (SYMBOL_IMPL (symbol).ops_computed) 1164 #define SYMBOL_BLOCK_OPS(symbol) (SYMBOL_IMPL (symbol).ops_block) 1165 #define SYMBOL_REGISTER_OPS(symbol) (SYMBOL_IMPL (symbol).ops_register) 1166 #define SYMBOL_LOCATION_BATON(symbol) (symbol)->aux_value 1276 #define ANOFFSET(secoff, whichone) \ 1278 ? (internal_error (__FILE__, __LINE__, \ 1279 _("Section index is uninitialized")), -1) \ 1280 : secoff->offsets[whichone]) 1283 #define SIZEOF_N_SECTION_OFFSETS(n) \ 1284 (sizeof (struct section_offsets) \ 1285 + sizeof (((struct section_offsets *) 0)->offsets) * ((n)-1)) 1331 #define SYMTAB_COMPUNIT(symtab) ((symtab)->compunit_symtab) 1332 #define SYMTAB_LINETABLE(symtab) ((symtab)->linetable) 1333 #define SYMTAB_LANGUAGE(symtab) ((symtab)->language) 1334 #define SYMTAB_BLOCKVECTOR(symtab) \ 1335 COMPUNIT_BLOCKVECTOR (SYMTAB_COMPUNIT (symtab)) 1336 #define SYMTAB_OBJFILE(symtab) \ 1337 COMPUNIT_OBJFILE (SYMTAB_COMPUNIT (symtab)) 1338 #define SYMTAB_PSPACE(symtab) (SYMTAB_OBJFILE (symtab)->pspace) 1339 #define SYMTAB_DIRNAME(symtab) \ 1340 COMPUNIT_DIRNAME (SYMTAB_COMPUNIT (symtab)) 1460 #define COMPUNIT_OBJFILE(cust) ((cust)->objfile) 1461 #define COMPUNIT_FILETABS(cust) ((cust)->filetabs) 1462 #define COMPUNIT_DEBUGFORMAT(cust) ((cust)->debugformat) 1463 #define COMPUNIT_PRODUCER(cust) ((cust)->producer) 1464 #define COMPUNIT_DIRNAME(cust) ((cust)->dirname) 1465 #define COMPUNIT_BLOCKVECTOR(cust) ((cust)->blockvector) 1466 #define COMPUNIT_BLOCK_LINE_SECTION(cust) ((cust)->block_line_section) 1467 #define COMPUNIT_LOCATIONS_VALID(cust) ((cust)->locations_valid) 1468 #define COMPUNIT_EPILOGUE_UNWIND_VALID(cust) ((cust)->epilogue_unwind_valid) 1469 #define COMPUNIT_CALL_SITE_HTAB(cust) ((cust)->call_site_htab) 1470 #define COMPUNIT_MACRO_TABLE(cust) ((cust)->macro_table) 1474 #define ALL_COMPUNIT_FILETABS(cu, s) \ 1475 for ((s) = (cu) -> filetabs; (s) != NULL; (s) = (s) -> next) 1502 #define VTBL_FNADDR_OFFSET 2 1559 const struct block *,
1567 const struct block *,
1592 const struct block *,
1671 int *is_gnu_ifunc_p);
1706 #ifndef GCC_COMPILED_FLAG_SYMBOL 1707 #define GCC_COMPILED_FLAG_SYMBOL "gcc_compiled." 1711 #ifndef GCC2_COMPILED_FLAG_SYMBOL 1712 #define GCC2_COMPILED_FLAG_SYMBOL "gcc2_compiled." 1736 #define gnu_ifunc_resolve_addr gnu_ifunc_fns_p->gnu_ifunc_resolve_addr 1737 #define gnu_ifunc_resolve_name gnu_ifunc_fns_p->gnu_ifunc_resolve_name 1738 #define gnu_ifunc_resolver_stop gnu_ifunc_fns_p->gnu_ifunc_resolver_stop 1739 #define gnu_ifunc_resolver_return_stop \ 1740 gnu_ifunc_fns_p->gnu_ifunc_resolver_return_stop 1817 print_source_lines_flags);
1839 const char *text,
const char *word,
const char *break_on,
1852 const char *,
const char *);
1854 const char *,
const char *,
1861 const char *,
const char *,
const char *);
1878 template<
typename Symbol>
2005 const char *search_name);
2008 const char *search_name);
2011 const char *real_path,
2085 const char *symname,
2087 const char *text,
const char *word);
bool symbol_is_function_or_method(symbol *sym)
const ada_lookup_name_info & ada() const
const struct symbol_register_ops * ops_register
void symbol_set_symtab(struct symbol *symbol, struct symtab *symtab)
struct symtab * find_line_symtab(struct symtab *, int, int *, int *)
const char * symbol_natural_name(const struct general_symbol_info *symbol)
struct symtab * compunit_primary_filetab(const struct compunit_symtab *cust)
bool operator==(const symbol_search &other) const
struct symtab_and_line find_function_start_sal(struct symbol *sym, int)
void print_source_lines(struct symtab *, int, int, print_source_lines_flags)
struct block_symbol lookup_symbol_search_name(const char *search_name, const struct block *block, domain_enum domain)
struct minimal_symbol * hash_next
gdb::optional< ada_lookup_name_info > m_ada
unsigned int target_flag_1
const struct blockvector * blockvector
struct linetable_entry item[1]
void reread_symbols(void)
void(* describe_location)(struct symbol *symbol, CORE_ADDR addr, struct ui_file *stream)
int register_symbol_register_impl(enum address_class, const struct symbol_register_ops *)
const struct block_symbol null_block_symbol
void clear_pc_function_cache(void)
bool wild_match_p() const
void iterate_over_symtabs(const char *name, gdb::function_view< bool(symtab *)> callback)
#define SYMBOL_DOMAIN_BITS
const char * set_malloc_ptr(char *ptr)
struct symbol * hash_next
enum address_class aclass
const std::string & lookup_name() const
int register_symbol_block_impl(enum address_class aclass, const struct symbol_block_ops *ops)
unsigned int epilogue_unwind_valid
bool completion_mode() const
enum domain_enum_tag domain_enum
struct type * lookup_transparent_type(const char *)
struct symbol * lookup_symbol_in_block(const char *name, symbol_name_match_type match_type, const struct block *block, const domain_enum domain)
void(* generate_c_location)(struct symbol *symbol, string_file &stream, struct gdbarch *gdbarch, unsigned char *registers_used, CORE_ADDR pc, const char *result_name)
const char * symbol_search_name(const struct general_symbol_info *ginfo)
std::vector< symbol_search > search_symbols(const char *, enum search_domain, int, const char **)
bool symbol_matches_search_name(const struct general_symbol_info *gsymbol, const lookup_name_info &name)
union general_symbol_info::@171 value
struct symbol ** template_arguments
bool() symbol_name_matcher_ftype(const char *symbol_search_name, const lookup_name_info &lookup_name, completion_match_result *comp_match_res)
__extension__ enum minimal_symbol_type type
bool operator<(const symbol_search &other) const
int(* gnu_ifunc_resolve_name)(const char *function_name, CORE_ADDR *function_address_p)
unsigned char location_has_loclist
struct obj_section * section
gdb::optional< demangle_for_lookup_info > m_d
struct symbol * find_pc_sect_function(CORE_ADDR, struct obj_section *)
symbol_search(int block_, struct minimal_symbol *minsym, struct objfile *objfile)
struct symbol * find_symbol_at_address(CORE_ADDR)
int in_gnu_ifunc_stub(CORE_ADDR pc)
const char multiple_symbols_ask[]
struct block_symbol lookup_symbol_in_language(const char *, const struct block *, const domain_enum, enum language, struct field_of_this_result *)
unsigned int aclass_index
CORE_ADDR skip_prologue_using_sal(struct gdbarch *gdbarch, CORE_ADDR func_addr)
static int compare_search_syms(const symbol_search &sym_a, const symbol_search &sym_b)
struct compunit_symtab * compunit_symtab_ptr
struct linetable * linetable
const struct symbol_block_ops * ops_block
int find_pc_partial_function(CORE_ADDR, const char **, CORE_ADDR *, CORE_ADDR *)
ada_lookup_name_info(const lookup_name_info &lookup_name)
__extension__ enum symbol_subclass_kind subclass
symbol_name_match_type match_type() const
unsigned int symbol_lookup_debug
symbol_search(int block_, struct symbol *symbol_)
struct gdbarch * symbol_arch(const struct symbol *symbol)
struct fn_fieldlist * fn_field
void collect_symbol_completion_matches_type(completion_tracker &tracker, const char *, const char *, enum type_code)
const char * multiple_symbols_select_mode(void)
struct compunit_symtab ** includes
void(* find_frame_base_location)(struct symbol *framefunc, CORE_ADDR pc, const gdb_byte **start, size_t *length)
unsigned int created_by_gdb
const char * symbol_demangled_name(const struct general_symbol_info *symbol)
struct symtab * find_pc_line_symtab(CORE_ADDR)
struct symtab * lookup_symtab(const char *)
const struct symbol_impl * symbol_impls
struct symbol * allocate_symbol(struct objfile *)
void expand_symtab_containing_pc(CORE_ADDR, struct obj_section *)
void completion_list_add_name(completion_tracker &tracker, language symbol_language, const char *symname, const lookup_name_info &lookup_name, const char *text, const char *word)
std::unique_ptr< T, xfree_deleter< T > > unique_xmalloc_ptr
struct minimal_symbol * demangled_hash_next
int find_pc_line_pc_range(CORE_ADDR, CORE_ADDR *, CORE_ADDR *)
struct symtab * symtab_ptr
int compare_glob_filenames_for_search(const char *filename, const char *search_name)
int(* register_number)(struct symbol *symbol, struct gdbarch *gdbarch)
void collect_file_symbol_completion_matches(completion_tracker &tracker, complete_symbol_mode, symbol_name_match_type name_match_type, const char *, const char *, const char *)
const struct block * block
static const lookup_name_info & match_any()
std::vector< gdb::unique_xmalloc_ptr< char > > completion_list
void(* tracepoint_var_ref)(struct symbol *symbol, struct agent_expr *ax, struct axs_value *value)
CORE_ADDR(* get_frame_base)(struct symbol *framefunc, struct frame_info *frame)
const demangle_for_lookup_info & d() const
int find_pc_partial_function_gnu_ifunc(CORE_ADDR pc, const char **name, CORE_ADDR *address, CORE_ADDR *endaddr, int *is_gnu_ifunc_p)
void select_source_symtab(struct symtab *)
void iterate_over_symbols(const struct block *block, const lookup_name_info &name, const domain_enum domain, gdb::function_view< symbol_found_callback_ftype > callback)
void collect_symbol_completion_matches(completion_tracker &tracker, complete_symbol_mode mode, symbol_name_match_type name_match_type, const char *, const char *)
void default_collect_symbol_completion_matches(completion_tracker &tracker, complete_symbol_mode, symbol_name_match_type name_match_type, const char *, const char *, enum type_code)
unsigned int locations_valid
struct symbol * find_pc_function(CORE_ADDR)
static bool completion_skip_symbol(complete_symbol_mode mode, Symbol *sym)
void forget_cached_source_info_for_objfile(struct objfile *)
demangle_for_lookup_info(const lookup_name_info &lookup_name, language lang)
const bool ignore_parameters() const
gdb::optional< demangle_for_lookup_info > m_go
union general_symbol_info::@172 language_specific
struct type * lookup_union(const char *, const struct block *)
std::string m_encoded_name
gdb_static_assert(nr_minsym_types<=(1<< MINSYM_TYPE_BITS))
int find_line_pc_range(struct symtab_and_line, CORE_ADDR *, CORE_ADDR *)
struct objfile * symbol_objfile(const struct symbol *symbol)
#define SYMBOL_ACLASS_BITS
const struct block * block
int matching_obj_sections(struct obj_section *, struct obj_section *)
enum language compunit_language(const struct compunit_symtab *cust)
symbol_name_match_type m_match_type
gdb::unique_xmalloc_ptr< char > m_malloc
struct compunit_symtab * find_pc_sect_compunit_symtab(CORE_ADDR, struct obj_section *)
int currently_reading_symtab
const demangle_for_lookup_info & go() const
struct compunit_symtab * next
struct type * lookup_enum(const char *, const struct block *)
struct block_symbol lookup_global_symbol_from_objfile(struct objfile *main_objfile, const char *name, const domain_enum domain)
const char * demangle_for_lookup(const char *name, enum language lang, demangle_result_storage &storage)
const char * domain_name(domain_enum)
void resolve_sal_pc(struct symtab_and_line *)
const char * swap_string(std::string &str)
void(* gnu_ifunc_resolver_stop)(struct breakpoint *b)
int register_symbol_computed_impl(enum address_class, const struct symbol_computed_ops *)
struct block_symbol basic_lookup_symbol_nonlocal(const struct language_defn *langdef, const char *, const struct block *, const domain_enum)
int identify_source_line(struct symtab *, int, int, CORE_ADDR)
CORE_ADDR find_solib_trampoline_target(struct frame_info *, CORE_ADDR)
CORE_ADDR symbol_overlayed_address(CORE_ADDR, struct obj_section *)
struct symtab * last_filetab
struct general_symbol_info mginfo
struct block_symbol lookup_global_symbol(const char *name, const struct block *block, const domain_enum domain)
struct type * basic_lookup_transparent_type(const char *)
void maybe_init(Field &field, Args &&... args) const
const struct gnu_ifunc_fns * gnu_ifunc_fns_p
const std::string & language_lookup_name(language lang) const
struct block_symbol lookup_symbol_in_static_block(const char *name, const struct block *block, const domain_enum domain)
std::array< unsigned int, nr_languages > m_demangled_hashes
const char * search_domain_name(enum search_domain)
unsigned int search_name_hash(language lang) const
struct type * concrete_type
void(* gnu_ifunc_resolver_return_stop)(struct breakpoint *b)
struct symtab_and_line find_pc_sect_line(CORE_ADDR, struct obj_section *, int)
lookup_name_info make_ignore_params() const
const demangle_for_lookup_info & cplus() const
int producer_is_realview(const char *producer)
const char multiple_symbols_cancel[]
struct macro_table * macro_table
bool matches(const char *symbol_search_name, symbol_name_match_type match_type, completion_match_result *comp_match_res) const
struct block_symbol lookup_static_symbol(const char *name, const domain_enum domain)
CORE_ADDR(* gnu_ifunc_resolve_addr)(struct gdbarch *gdbarch, CORE_ADDR pc)
struct bound_minimal_symbol msymbol
const std::string & name() const
unsigned int is_objfile_owned
struct symtab_and_line find_pc_line(CORE_ADDR, int)
void symbol_set_demangled_name(struct general_symbol_info *, const char *, struct obstack *)
struct minimal_symbol * minsym
int symbol_matches_domain(enum language symbol_language, domain_enum symbol_domain, domain_enum domain)
__extension__ enum language language
gdb::optional< demangle_for_lookup_info > m_cplus
unsigned int target_flag_2
struct program_space * pspace
struct symbol * fixup_symbol_section(struct symbol *, struct objfile *)
int find_line_pc(struct symtab *, int, CORE_ADDR *)
struct type * lookup_struct(const char *, const struct block *)
struct general_symbol_info ginfo
const char * symbol_get_demangled_name(const struct general_symbol_info *)
unsigned int symtab_create_debug
struct compunit_symtab * compunit_symtab
void symbol_set_language(struct general_symbol_info *symbol, enum language language, struct obstack *obstack)
struct objfile * lookup_objfile_from_block(const struct block *block)
struct template_symbol * allocate_template_symbol(struct objfile *)
lookup_name_info(std::string name, symbol_name_match_type match_type, bool completion_mode=false, bool ignore_parameters=false)
void default_collect_symbol_completion_matches_break_on(completion_tracker &tracker, complete_symbol_mode mode, symbol_name_match_type name_match_type, const char *text, const char *word, const char *break_on, enum type_code code)
void forget_cached_source_info(void)
bool iterate_over_some_symtabs(const char *name, const char *real_path, struct compunit_symtab *first, struct compunit_symtab *after_last, gdb::function_view< bool(symtab *)> callback)
struct block_symbol lookup_symbol(const char *, const struct block *, const domain_enum, struct field_of_this_result *)
std::vector< CORE_ADDR > find_pcs_for_symtab_line(struct symtab *symtab, int line, struct linetable_entry **best_entry)
DEF_ENUM_FLAGS_TYPE(enum print_source_lines_flag, print_source_lines_flags)
struct block_symbol lookup_language_this(const struct language_defn *lang, const struct block *block)
symbol * find_function_alias_target(bound_minimal_symbol msymbol)
const struct common_block * common_block
void initialize_objfile_symbol(struct symbol *)
struct symtab * symbol_symtab(const struct symbol *symbol)
std::string m_demangled_name
const std::string & lookup_name() const
enum symbol_needs_kind(* get_symbol_read_needs)(struct symbol *symbol)
const char multiple_symbols_all[]
std::array< bool, nr_languages > m_demangled_hashes_p
struct compunit_symtab * find_pc_compunit_symtab(CORE_ADDR)
struct compunit_symtab * user
const struct symbol_computed_ops * ops_computed
completion_list make_source_files_completion_list(const char *, const char *)
int compare_filenames_for_search(const char *filename, const char *search_name)
void skip_prologue_sal(struct symtab_and_line *)
void fixup_section(struct general_symbol_info *ginfo, CORE_ADDR addr, struct objfile *objfile)
bool() symbol_found_callback_ftype(symbol *sym)
enum language main_language(void)
unsigned int search_name_hash(enum language language, const char *search_name)
char * copy_name(struct stoken token)
const char * demangled_name
__extension__ enum domain_enum_tag domain
void symbol_set_names(struct general_symbol_info *symbol, const char *linkage_name, int len, int copy_name, struct objfile *objfile)