| Index: gdb/symtab.h
|
| diff --git a/gdb/symtab.h b/gdb/symtab.h
|
| index 9a26656acd29002b0a7563e33fac681621026603..76120a37a93ad14a9dc7d90949e73f486b4451b3 100644
|
| --- a/gdb/symtab.h
|
| +++ b/gdb/symtab.h
|
| @@ -22,6 +22,7 @@
|
| #define SYMTAB_H 1
|
|
|
| #include "vec.h"
|
| +#include "gdb_vecs.h"
|
|
|
| /* Opaque declarations. */
|
| struct ui_file;
|
| @@ -35,6 +36,7 @@ struct axs_value;
|
| struct agent_expr;
|
| struct program_space;
|
| struct language_defn;
|
| +struct probe;
|
|
|
| /* Some of the structures in this file are space critical.
|
| The space-critical structures are:
|
| @@ -81,7 +83,7 @@ struct language_defn;
|
|
|
| struct cplus_specific
|
| {
|
| - char *demangled_name;
|
| + const char *demangled_name;
|
| };
|
|
|
| /* Define a structure for the information that is common to all symbol types,
|
| @@ -99,7 +101,7 @@ struct general_symbol_info
|
| the mangled name and demangled name, this is the mangled
|
| name. */
|
|
|
| - char *name;
|
| + const char *name;
|
|
|
| /* Value of the symbol. Which member of this union to use, and what
|
| it means, depends on what kind of symbol this is and its
|
| @@ -109,10 +111,7 @@ struct general_symbol_info
|
|
|
| union
|
| {
|
| - /* The fact that this is a long not a LONGEST mainly limits the
|
| - range of a LOC_CONST. Since LOC_CONST_BYTES exists, I'm not
|
| - sure that is a big deal. */
|
| - long ivalue;
|
| + LONGEST ivalue;
|
|
|
| struct block *block;
|
|
|
| @@ -135,7 +134,7 @@ struct general_symbol_info
|
| currently used by Ada, Java, and Objective C. */
|
| struct mangled_lang
|
| {
|
| - char *demangled_name;
|
| + const char *demangled_name;
|
| }
|
| mangled_lang;
|
|
|
| @@ -166,7 +165,8 @@ struct general_symbol_info
|
| extern void symbol_set_demangled_name (struct general_symbol_info *, char *,
|
| struct objfile *);
|
|
|
| -extern char *symbol_get_demangled_name (const struct general_symbol_info *);
|
| +extern const char *symbol_get_demangled_name
|
| + (const struct general_symbol_info *);
|
|
|
| extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, struct obj_section *);
|
|
|
| @@ -225,7 +225,8 @@ extern void symbol_set_names (struct general_symbol_info *symbol,
|
|
|
| #define SYMBOL_NATURAL_NAME(symbol) \
|
| (symbol_natural_name (&(symbol)->ginfo))
|
| -extern char *symbol_natural_name (const struct general_symbol_info *symbol);
|
| +extern const char *symbol_natural_name
|
| + (const struct general_symbol_info *symbol);
|
|
|
| /* Return SYMBOL's name from the point of view of the linker. In
|
| languages like C++ where symbols may be mangled for ease of
|
| @@ -238,7 +239,8 @@ extern char *symbol_natural_name (const struct general_symbol_info *symbol);
|
| that symbol. If no demangled name exists, return NULL. */
|
| #define SYMBOL_DEMANGLED_NAME(symbol) \
|
| (symbol_demangled_name (&(symbol)->ginfo))
|
| -extern char *symbol_demangled_name (const struct general_symbol_info *symbol);
|
| +extern const char *symbol_demangled_name
|
| + (const struct general_symbol_info *symbol);
|
|
|
| /* Macro that returns a version of the name of a symbol that is
|
| suitable for output. In C++ this is the "demangled" form of the
|
| @@ -254,21 +256,6 @@ extern char *symbol_demangled_name (const struct general_symbol_info *symbol);
|
| (demangle ? SYMBOL_NATURAL_NAME (symbol) : SYMBOL_LINKAGE_NAME (symbol))
|
| extern int demangle;
|
|
|
| -/* Macro that tests a symbol for a match against a specified name string.
|
| - First test the unencoded name, then looks for and test a C++ encoded
|
| - name if it exists. Note that whitespace is ignored while attempting to
|
| - match a C++ encoded name, so that "foo::bar(int,long)" is the same as
|
| - "foo :: bar (int, long)".
|
| - Evaluates to zero if the match fails, or nonzero if it succeeds. */
|
| -
|
| -/* Macro that tests a symbol for a match against a specified name
|
| - string. It tests against SYMBOL_NATURAL_NAME, and it ignores
|
| - whitespace and trailing parentheses. (See strcmp_iw for details
|
| - about its behavior.) */
|
| -
|
| -#define SYMBOL_MATCHES_NATURAL_NAME(symbol, name) \
|
| - (strcmp_iw (SYMBOL_NATURAL_NAME (symbol), (name)) == 0)
|
| -
|
| /* Macro that returns the name to be used when sorting and searching symbols.
|
| In C++, Chill, and Java, we search for the demangled form of a name,
|
| and so sort symbols accordingly. In Ada, however, we search by mangled
|
| @@ -276,10 +263,11 @@ extern int demangle;
|
| returns the same value (same pointer) as SYMBOL_LINKAGE_NAME. */
|
| #define SYMBOL_SEARCH_NAME(symbol) \
|
| (symbol_search_name (&(symbol)->ginfo))
|
| -extern char *symbol_search_name (const struct general_symbol_info *);
|
| +extern const char *symbol_search_name (const struct general_symbol_info *);
|
|
|
| -/* Analogous to SYMBOL_MATCHES_NATURAL_NAME, but uses the search
|
| - name. */
|
| +/* Return non-zero if NAME matches the "search" name of SYMBOL.
|
| + Whitespace and trailing parentheses are ignored.
|
| + See strcmp_iw for details about its behavior. */
|
| #define SYMBOL_MATCHES_SEARCH_NAME(symbol, name) \
|
| (strcmp_iw (SYMBOL_SEARCH_NAME (symbol), (name)) == 0)
|
|
|
| @@ -346,12 +334,16 @@ struct minimal_symbol
|
| unsigned long size;
|
|
|
| /* Which source file is this symbol in? Only relevant for mst_file_*. */
|
| - char *filename;
|
| + const char *filename;
|
|
|
| /* Classification type for this minimal symbol. */
|
|
|
| ENUM_BITFIELD(minimal_symbol_type) type : 8;
|
|
|
| + /* Non-zero if this symbol was created by gdb.
|
| + Such symbols do not appear in the output of "info var|fun". */
|
| + unsigned int created_by_gdb : 1;
|
| +
|
| /* Two flag bits provided for the use of the target. */
|
| unsigned int target_flag_1 : 1;
|
| unsigned int target_flag_2 : 1;
|
| @@ -372,6 +364,8 @@ struct minimal_symbol
|
| #define MSYMBOL_SIZE(msymbol) (msymbol)->size
|
| #define MSYMBOL_TYPE(msymbol) (msymbol)->type
|
|
|
| +#include "minsyms.h"
|
| +
|
|
|
|
|
| /* Represent one symbol name; a variable, constant, function or typedef. */
|
| @@ -844,6 +838,23 @@ struct symtab
|
| /* struct call_site entries for this compilation unit or NULL. */
|
|
|
| htab_t call_site_htab;
|
| +
|
| + /* If non-NULL, then this points to a NULL-terminated vector of
|
| + included symbol tables. When searching the static or global
|
| + block of this symbol table, the corresponding block of all
|
| + included symbol tables will also be searched. Note that this
|
| + list must be flattened -- the symbol reader is responsible for
|
| + ensuring that this vector contains the transitive closure of all
|
| + included symbol tables. */
|
| +
|
| + struct symtab **includes;
|
| +
|
| + /* If this is an included symbol table, this points to one includer
|
| + of the table. This user is considered the canonical symbol table
|
| + containing this one. An included symbol table may itself be
|
| + included by another. */
|
| +
|
| + struct symtab *user;
|
| };
|
|
|
| #define BLOCKVECTOR(symtab) (symtab)->blockvector
|
| @@ -964,14 +975,14 @@ extern struct symbol *find_pc_function (CORE_ADDR);
|
|
|
| extern struct symbol *find_pc_sect_function (CORE_ADDR, struct obj_section *);
|
|
|
| -extern int find_pc_partial_function_gnu_ifunc (CORE_ADDR pc, char **name,
|
| +extern int find_pc_partial_function_gnu_ifunc (CORE_ADDR pc, const char **name,
|
| CORE_ADDR *address,
|
| CORE_ADDR *endaddr,
|
| int *is_gnu_ifunc_p);
|
|
|
| /* lookup function from address, return name, start addr and end addr. */
|
|
|
| -extern int find_pc_partial_function (CORE_ADDR, char **, CORE_ADDR *,
|
| +extern int find_pc_partial_function (CORE_ADDR, const char **, CORE_ADDR *,
|
| CORE_ADDR *);
|
|
|
| extern void clear_pc_function_cache (void);
|
| @@ -1007,62 +1018,6 @@ extern struct type *basic_lookup_transparent_type (const char *);
|
| #define GCC2_COMPILED_FLAG_SYMBOL "gcc2_compiled."
|
| #endif
|
|
|
| -/* Functions for dealing with the minimal symbol table, really a misc
|
| - address<->symbol mapping for things we don't have debug symbols for. */
|
| -
|
| -extern void prim_record_minimal_symbol (const char *, CORE_ADDR,
|
| - enum minimal_symbol_type,
|
| - struct objfile *);
|
| -
|
| -extern struct minimal_symbol *prim_record_minimal_symbol_full
|
| - (const char *, int, int, CORE_ADDR,
|
| - enum minimal_symbol_type,
|
| - int section, asection * bfd_section, struct objfile *);
|
| -
|
| -extern struct minimal_symbol *prim_record_minimal_symbol_and_info
|
| - (const char *, CORE_ADDR,
|
| - enum minimal_symbol_type,
|
| - int section, asection * bfd_section, struct objfile *);
|
| -
|
| -extern unsigned int msymbol_hash_iw (const char *);
|
| -
|
| -extern unsigned int msymbol_hash (const char *);
|
| -
|
| -/* Compute the next hash value from previous HASH and the character C. This
|
| - is only a GDB in-memory computed value with no external files compatibility
|
| - requirements. */
|
| -
|
| -#define SYMBOL_HASH_NEXT(hash, c) \
|
| - ((hash) * 67 + tolower ((unsigned char) (c)) - 113)
|
| -
|
| -extern struct objfile * msymbol_objfile (struct minimal_symbol *sym);
|
| -
|
| -extern void
|
| -add_minsym_to_hash_table (struct minimal_symbol *sym,
|
| - struct minimal_symbol **table);
|
| -
|
| -extern struct minimal_symbol *lookup_minimal_symbol (const char *,
|
| - const char *,
|
| - struct objfile *);
|
| -
|
| -extern struct minimal_symbol *lookup_minimal_symbol_text (const char *,
|
| - struct objfile *);
|
| -
|
| -struct minimal_symbol *lookup_minimal_symbol_solib_trampoline (const char *,
|
| - struct objfile
|
| - *);
|
| -
|
| -extern struct minimal_symbol *lookup_minimal_symbol_by_pc_name
|
| - (CORE_ADDR, const char *, struct objfile *);
|
| -
|
| -extern struct minimal_symbol *lookup_minimal_symbol_by_pc (CORE_ADDR);
|
| -
|
| -extern void iterate_over_minimal_symbols (struct objfile *objf,
|
| - const char *name,
|
| - void (*callback) (struct minimal_symbol *,
|
| - void *),
|
| - void *user_data);
|
| -
|
| extern int in_gnu_ifunc_stub (CORE_ADDR pc);
|
|
|
| /* Functions for resolving STT_GNU_IFUNC symbols which are implemented only
|
| @@ -1092,28 +1047,8 @@ struct gnu_ifunc_fns
|
|
|
| extern const struct gnu_ifunc_fns *gnu_ifunc_fns_p;
|
|
|
| -extern struct minimal_symbol *
|
| - lookup_minimal_symbol_and_objfile (const char *,
|
| - struct objfile **);
|
| -
|
| -extern struct minimal_symbol
|
| - *lookup_minimal_symbol_by_pc_section (CORE_ADDR, struct obj_section *);
|
| -
|
| -extern struct minimal_symbol
|
| - *lookup_solib_trampoline_symbol_by_pc (CORE_ADDR);
|
| -
|
| extern CORE_ADDR find_solib_trampoline_target (struct frame_info *, CORE_ADDR);
|
|
|
| -extern void init_minimal_symbol_collection (void);
|
| -
|
| -extern struct cleanup *make_cleanup_discard_minimal_symbols (void);
|
| -
|
| -extern void install_minimal_symbols (struct objfile *);
|
| -
|
| -/* Sort all the minimal symbols in OBJFILE. */
|
| -
|
| -extern void msymbols_sort (struct objfile *objfile);
|
| -
|
| struct symtab_and_line
|
| {
|
| /* The program space of this sal. */
|
| @@ -1130,6 +1065,9 @@ struct symtab_and_line
|
| CORE_ADDR end;
|
| int explicit_pc;
|
| int explicit_line;
|
| +
|
| + /* The probe associated with this symtab_and_line. */
|
| + struct probe *probe;
|
| };
|
|
|
| extern void init_sal (struct symtab_and_line *sal);
|
| @@ -1175,13 +1113,6 @@ extern int find_line_pc_range (struct symtab_and_line, CORE_ADDR *,
|
|
|
| extern void resolve_sal_pc (struct symtab_and_line *);
|
|
|
| -/* Given a string, return the line specified by it. For commands like "list"
|
| - and "breakpoint". */
|
| -
|
| -extern struct symtabs_and_lines decode_line_spec (char *, int);
|
| -
|
| -extern struct symtabs_and_lines decode_line_spec_1 (char *, int);
|
| -
|
| /* Symmisc.c */
|
|
|
| void maintenance_print_symbols (char *, int);
|
| @@ -1217,16 +1148,17 @@ extern void forget_cached_source_info (void);
|
|
|
| extern void select_source_symtab (struct symtab *);
|
|
|
| -extern char **default_make_symbol_completion_list_break_on
|
| +extern VEC (char_ptr) *default_make_symbol_completion_list_break_on
|
| (char *text, char *word, const char *break_on);
|
| -extern char **default_make_symbol_completion_list (char *, char *);
|
| -extern char **make_symbol_completion_list (char *, char *);
|
| -extern char **make_symbol_completion_list_fn (struct cmd_list_element *,
|
| - char *, char *);
|
| +extern VEC (char_ptr) *default_make_symbol_completion_list (char *, char *);
|
| +extern VEC (char_ptr) *make_symbol_completion_list (char *, char *);
|
| +extern VEC (char_ptr) *make_symbol_completion_list_fn (struct cmd_list_element *,
|
| + char *, char *);
|
|
|
| -extern char **make_file_symbol_completion_list (char *, char *, char *);
|
| +extern VEC (char_ptr) *make_file_symbol_completion_list (char *,
|
| + char *, char *);
|
|
|
| -extern char **make_source_files_completion_list (char *, char *);
|
| +extern VEC (char_ptr) *make_source_files_completion_list (char *, char *);
|
|
|
| /* symtab.c */
|
|
|
| @@ -1311,8 +1243,14 @@ void fixup_section (struct general_symbol_info *ginfo,
|
|
|
| struct objfile *lookup_objfile_from_block (const struct block *block);
|
|
|
| +extern int symtab_create_debug;
|
| +
|
| extern int basenames_may_differ;
|
|
|
| +int compare_filenames_for_search (const char *filename,
|
| + const char *search_name,
|
| + int search_len);
|
| +
|
| int iterate_over_some_symtabs (const char *name,
|
| const char *full_path,
|
| const char *real_path,
|
| @@ -1332,9 +1270,18 @@ DEF_VEC_I (CORE_ADDR);
|
| VEC (CORE_ADDR) *find_pcs_for_symtab_line (struct symtab *symtab, int line,
|
| struct linetable_entry **best_entry);
|
|
|
| +/* Callback for LA_ITERATE_OVER_SYMBOLS. The callback will be called
|
| + once per matching symbol SYM, with DATA being the argument of the
|
| + same name that was passed to LA_ITERATE_OVER_SYMBOLS. The callback
|
| + should return nonzero to indicate that LA_ITERATE_OVER_SYMBOLS
|
| + should continue iterating, or zero to indicate that the iteration
|
| + should end. */
|
| +
|
| +typedef int (symbol_found_callback_ftype) (struct symbol *sym, void *data);
|
| +
|
| void iterate_over_symbols (const struct block *block, const char *name,
|
| const domain_enum domain,
|
| - int (*callback) (struct symbol *, void *),
|
| + symbol_found_callback_ftype *callback,
|
| void *data);
|
|
|
| struct cleanup *demangle_for_lookup (const char *name, enum language lang,
|
|
|