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, |