X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gdb%2Fsymtab.h;h=7ae93468257d48c8abf3b89ac4fe6e343e266af0;hb=02e423b9b296edcf2fc50161c361062727a3263d;hp=7fb78db3ea73c10bd3db39f3f23363c70adddeee;hpb=357e46e7c9f18a0603aa9a6de440bedb147e57f8;p=binutils-gdb.git diff --git a/gdb/symtab.h b/gdb/symtab.h index 7fb78db3ea7..7ae93468257 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -1,5 +1,6 @@ /* Symbol table definitions for GDB. - Copyright 1986, 89, 91, 92, 93, 94, 95, 96, 1998 + Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, + 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GDB. @@ -26,7 +27,7 @@ #include "obstack.h" #define obstack_chunk_alloc xmalloc -#define obstack_chunk_free free +#define obstack_chunk_free xfree #include "bcache.h" /* Don't do this; it means that if some .o's are compiled with GNU C @@ -170,6 +171,8 @@ extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, asection *); #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) \ { \ @@ -180,7 +183,7 @@ extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, asection *); SYMBOL_LANGUAGE (symbol) = language_cplus; \ SYMBOL_CPLUS_DEMANGLED_NAME (symbol) = \ obsavestring (demangled, strlen (demangled), (obstack)); \ - free (demangled); \ + xfree (demangled); \ } \ else \ { \ @@ -197,7 +200,7 @@ extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, asection *); SYMBOL_LANGUAGE (symbol) = language_java; \ SYMBOL_CPLUS_DEMANGLED_NAME (symbol) = \ obsavestring (demangled, strlen (demangled), (obstack)); \ - free (demangled); \ + xfree (demangled); \ } \ else \ { \ @@ -215,17 +218,13 @@ extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, asection *); SYMBOL_LANGUAGE (symbol) = language_chill; \ SYMBOL_CHILL_DEMANGLED_NAME (symbol) = \ obsavestring (demangled, strlen (demangled), (obstack)); \ - free (demangled); \ + xfree (demangled); \ } \ else \ { \ SYMBOL_CHILL_DEMANGLED_NAME (symbol) = NULL; \ } \ } \ - if (SYMBOL_LANGUAGE (symbol) == language_auto) \ - { \ - SYMBOL_LANGUAGE (symbol) = language_unknown; \ - } \ } while (0) /* Macro that returns the demangled name for a symbol based on the language @@ -763,7 +762,7 @@ struct partial_symbol /* Source-file information. This describes the relation between source files, - ine numbers and addresses in the program text. */ + line numbers and addresses in the program text. */ struct sourcevector { @@ -829,7 +828,10 @@ struct section_offsets CORE_ADDR offsets[1]; /* As many as needed. */ }; -#define ANOFFSET(secoff, whichone) (secoff->offsets[whichone]) +#define ANOFFSET(secoff, whichone) \ + ((whichone == -1) \ + ? (internal_error (__FILE__, __LINE__, "Section index is uninitialized"), -1) \ + : secoff->offsets[whichone]) /* The maximum possible size of a section_offsets table. */ @@ -1044,34 +1046,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! - Currently 'o' 'p' CPLUS_MARKER is used for both the symbol in the - symbol-file and the names in gdb's symbol table. - Note that this macro is g++ specific (FIXME). */ - -#define OPNAME_PREFIX_P(NAME) \ - ((NAME)[0] == 'o' && (NAME)[1] == 'p' && is_cplus_marker ((NAME)[2])) - -/* 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 */ @@ -1098,7 +1072,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) */ @@ -1148,7 +1122,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 */ @@ -1349,9 +1323,6 @@ extern struct symtabs_and_lines decode_line_spec (char *, int); extern struct symtabs_and_lines decode_line_spec_1 (char *, int); -extern struct symtabs_and_lines -decode_line_1 (char **, int, struct symtab *, int, char ***); - /* Symmisc.c */ void maintenance_print_symbols (char *, int); @@ -1388,12 +1359,20 @@ 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); +extern struct symtab *find_line_symtab (struct symtab *, int, int *, int *); + +extern struct symtab_and_line find_function_start_sal (struct symbol *sym, int); + /* blockframe.c */ extern struct blockvector *blockvector_for_pc (CORE_ADDR, int *); @@ -1414,10 +1393,14 @@ extern int in_prologue (CORE_ADDR pc, CORE_ADDR func_start); extern struct symbol *fixup_symbol_section (struct symbol *, struct objfile *); +extern struct partial_symbol *fixup_psymbol_section (struct partial_symbol + *psym, + struct objfile *objfile); + /* Symbol searching */ /* When using search_symbols, a list of the following structs is returned. - Callers must free the search list using free_symbol_search! */ + Callers must free the search list using free_search_symbols! */ struct symbol_search { /* The block in which the match was found. Could be, for example, @@ -1444,4 +1427,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) */