X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fsymtab.h;h=bb22d0d4eaadbd7d33a2071590eaf7a1e33739bf;hb=0d62e5e8077eecf77e9b7b5dc0d2689d051a3ab3;hp=a4f224d68725d1976118fe28907e2bb3960a6458;hpb=5565b5569bf75adccb29b590f5433aeb9dda3314;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/symtab.h b/gdb/symtab.h index a4f224d687..bb22d0d4ea 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -159,74 +159,12 @@ extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, asection *); } \ } while (0) -/* Macro that attempts to initialize the demangled name for a symbol, - based on the language of that symbol. If the language is set to - language_auto, it will attempt to find any demangling algorithm - that works and then set the language appropriately. If no demangling - of any kind is found, the language is set back to language_unknown, - so we can avoid doing this work again the next time we encounter - the symbol. Any required space to store the name is obtained from the - specified obstack. */ - -#define SYMBOL_INIT_DEMANGLED_NAME(symbol,obstack) \ - do { \ - char *demangled = NULL; \ - if (SYMBOL_LANGUAGE (symbol) == language_unknown) \ - SYMBOL_LANGUAGE (symbol) = language_auto; \ - if (SYMBOL_LANGUAGE (symbol) == language_cplus \ - || SYMBOL_LANGUAGE (symbol) == language_auto) \ - { \ - demangled = \ - cplus_demangle (SYMBOL_NAME (symbol), DMGL_PARAMS | DMGL_ANSI);\ - if (demangled != NULL) \ - { \ - SYMBOL_LANGUAGE (symbol) = language_cplus; \ - SYMBOL_CPLUS_DEMANGLED_NAME (symbol) = \ - obsavestring (demangled, strlen (demangled), (obstack)); \ - xfree (demangled); \ - } \ - else \ - { \ - SYMBOL_CPLUS_DEMANGLED_NAME (symbol) = NULL; \ - } \ - } \ - if (SYMBOL_LANGUAGE (symbol) == language_java) \ - { \ - demangled = \ - cplus_demangle (SYMBOL_NAME (symbol), \ - DMGL_PARAMS | DMGL_ANSI | DMGL_JAVA); \ - if (demangled != NULL) \ - { \ - SYMBOL_LANGUAGE (symbol) = language_java; \ - SYMBOL_CPLUS_DEMANGLED_NAME (symbol) = \ - obsavestring (demangled, strlen (demangled), (obstack)); \ - xfree (demangled); \ - } \ - else \ - { \ - SYMBOL_CPLUS_DEMANGLED_NAME (symbol) = NULL; \ - } \ - } \ - if (demangled == NULL \ - && (SYMBOL_LANGUAGE (symbol) == language_chill \ - || SYMBOL_LANGUAGE (symbol) == language_auto)) \ - { \ - demangled = \ - chill_demangle (SYMBOL_NAME (symbol)); \ - if (demangled != NULL) \ - { \ - SYMBOL_LANGUAGE (symbol) = language_chill; \ - SYMBOL_CHILL_DEMANGLED_NAME (symbol) = \ - obsavestring (demangled, strlen (demangled), (obstack)); \ - xfree (demangled); \ - } \ - else \ - { \ - SYMBOL_CHILL_DEMANGLED_NAME (symbol) = NULL; \ - } \ - } \ - } while (0) +#define SYMBOL_INIT_DEMANGLED_NAME(symbol,obstack) \ + (symbol_init_demangled_name (&symbol->ginfo, (obstack))) +extern void symbol_init_demangled_name (struct general_symbol_info *symbol, + struct obstack *obstack); + /* Macro that returns the demangled name for a symbol based on the language for that symbol. If no demangled name exists, returns NULL. */ @@ -467,6 +405,18 @@ struct block #define BLOCK_SUPERBLOCK(bl) (bl)->superblock #define BLOCK_GCC_COMPILED(bl) (bl)->gcc_compile_flag +/* Macro to loop through all symbols in a block BL. + i counts which symbol we are looking at, and sym points to the current + symbol. + The contortion at the end is to avoid reading past the last valid + BLOCK_SYM. */ +#define ALL_BLOCK_SYMBOLS(bl, i, sym) \ + for ((i) = 0, (sym) = BLOCK_SYM ((bl), (i)); \ + (i) < BLOCK_NSYMS ((bl)); \ + ++(i), (sym) = ((i) < BLOCK_NSYMS ((bl))) \ + ? BLOCK_SYM ((bl), (i)) \ + : NULL) + /* Nonzero if symbols of block BL should be sorted alphabetically. Don't sort a block which corresponds to a function. If we did the sorting would have to preserve the order of the symbols for the @@ -793,7 +743,10 @@ struct linetable_entry 30 0x300 10 0x400 - for the increment part of a for stmt. - */ + If an entry has a line number of zero, it marks the start of a PC + range for which no line number information is available. It is + acceptable, though wasteful of table space, for such a range to be + zero length. */ struct linetable { @@ -871,6 +824,11 @@ struct symtab int primary; + /* The macro table for this symtab. Like the blockvector, this + may be shared between different symtabs --- and normally is for + all the symtabs in a given compilation unit. */ + struct macro_table *macro_table; + /* Name of this source file. */ char *filename; @@ -959,6 +917,10 @@ struct partial_symtab char *filename; + /* Full path of the source file. NULL if not known. */ + + char *fullname; + /* Information about the object file from which symbols should be read. */ struct objfile *objfile; @@ -1046,30 +1008,6 @@ struct partial_symtab #define VTBL_FNADDR_OFFSET 2 -/* Macro that yields non-zero value iff NAME is the prefix for C++ operator - names. If you leave out the parenthesis here you will lose! */ -#define OPNAME_PREFIX_P(NAME) \ - (!strncmp (NAME, "operator", 8)) - -/* Macro that yields non-zero value iff NAME is the prefix for C++ vtbl - names. Note that this macro is g++ specific (FIXME). - '_vt$' is the old cfront-style vtables; '_VT$' is the new - style, using thunks (where '$' is really CPLUS_MARKER). */ - -#define VTBL_PREFIX_P(NAME) \ - (((NAME)[0] == '_' \ - && (((NAME)[1] == 'V' && (NAME)[2] == 'T') \ - || ((NAME)[1] == 'v' && (NAME)[2] == 't')) \ - && is_cplus_marker ((NAME)[3])) || ((NAME)[0]=='_' && (NAME)[1]=='_' \ - && (NAME)[2]=='v' && (NAME)[3]=='t' && (NAME)[4]=='_')) - -/* Macro that yields non-zero value iff NAME is the prefix for C++ destructor - names. Note that this macro is g++ specific (FIXME). */ - -#define DESTRUCTOR_PREFIX_P(NAME) \ - ((NAME)[0] == '_' && is_cplus_marker ((NAME)[1]) && (NAME)[2] == '_') - - /* External variables and functions for the objects described above. */ /* This symtab variable specifies the current file for printing source lines */ @@ -1096,7 +1034,7 @@ extern int asm_demangle; /* lookup a symbol table by source file name */ -extern struct symtab *lookup_symtab (char *); +extern struct symtab *lookup_symtab (const char *); /* lookup a symbol by name (optional block, optional symtab) */ @@ -1107,6 +1045,7 @@ extern struct symbol *lookup_symbol (const char *, const struct block *, /* lookup a symbol by name, within a specified block */ extern struct symbol *lookup_block_symbol (const struct block *, const char *, + const char *, const namespace_enum); /* lookup a [struct, union, enum] by name, within a specified block */ @@ -1146,7 +1085,7 @@ find_pc_sect_partial_function (CORE_ADDR, asection *, /* lookup partial symbol table by filename */ -extern struct partial_symtab *lookup_partial_symtab (char *); +extern struct partial_symtab *lookup_partial_symtab (const char *); /* lookup partial symbol table by address */ @@ -1205,10 +1144,6 @@ extern struct minimal_symbol *prim_record_minimal_symbol_and_info enum minimal_symbol_type, char *info, int section, asection * bfd_section, struct objfile *); -#ifdef SOFUN_ADDRESS_MAYBE_MISSING -extern CORE_ADDR find_stab_function_addr (char *, char *, struct objfile *); -#endif - extern unsigned int msymbol_hash_iw (const char *); extern unsigned int msymbol_hash (const char *); @@ -1383,8 +1318,12 @@ extern void select_source_symtab (struct symtab *); extern char **make_symbol_completion_list (char *, char *); +extern char **make_file_symbol_completion_list (char *, char *, char *); + extern struct symbol **make_symbol_overload_list (struct symbol *); +extern char **make_source_files_completion_list (char *, char *); + /* symtab.c */ extern struct partial_symtab *find_main_psymtab (void); @@ -1447,4 +1386,11 @@ extern void search_symbols (char *, namespace_enum, int, char **, extern void free_search_symbols (struct symbol_search *); extern struct cleanup *make_cleanup_free_search_symbols (struct symbol_search *); +/* The name of the ``main'' function. + FIXME: cagney/2001-03-20: Can't make main_name() const since some + of the calling code currently assumes that the string isn't + const. */ +extern void set_main_name (const char *name); +extern /*const*/ char *main_name (void); + #endif /* !defined(SYMTAB_H) */