diff options
-rw-r--r-- | gdb/ChangeLog | 12 | ||||
-rw-r--r-- | gdb/symtab.c | 18 | ||||
-rw-r--r-- | gdb/symtab.h | 9 |
3 files changed, 28 insertions, 11 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7da8c9e..1d6bcc5 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,17 @@ 2011-04-09 Jan Kratochvil <jan.kratochvil@redhat.com> + Code cleanup. + * symtab.c (search_symbols): Reorder the KIND description in the + function comment. Remove the unused 4th element of types, types2, + types3 and types4. New gdb_assert on KIND. + (symtab_symbol_info): Remove the unused 4th element of classnames. + New gdb_assert on KIND. + * symtab.h (enum search_domain): New warning in the enum comment. + Assign numbers to the elements VARIABLES_DOMAIN, FUNCTIONS_DOMAIN and + TYPES_DOMAIN. + +2011-04-09 Jan Kratochvil <jan.kratochvil@redhat.com> + Fix crash of gdb save-index on a STABS file. * dwarf2read.c (write_psymtabs_to_index): Return also on no PSYMTABS_ADDRMAP. diff --git a/gdb/symtab.c b/gdb/symtab.c index cfceef6..6ad523e 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -2970,10 +2970,10 @@ search_symbols_name_matches (const char *symname, void *user_data) returning the results in *MATCHES. Only symbols of KIND are searched: + VARIABLES_DOMAIN - search all symbols, excluding functions, type names, + and constants (enums) FUNCTIONS_DOMAIN - search all functions TYPES_DOMAIN - search all type names - VARIABLES_DOMAIN - search all symbols, excluding functions, type names, - and constants (enums) free_search_symbols should be called when *MATCHES is no longer needed. @@ -2996,13 +2996,13 @@ search_symbols (char *regexp, enum search_domain kind, char *val; int found_misc = 0; static const enum minimal_symbol_type types[] - = {mst_data, mst_text, mst_abs, mst_unknown}; + = {mst_data, mst_text, mst_abs}; static const enum minimal_symbol_type types2[] - = {mst_bss, mst_file_text, mst_abs, mst_unknown}; + = {mst_bss, mst_file_text, mst_abs}; static const enum minimal_symbol_type types3[] - = {mst_file_data, mst_solib_trampoline, mst_abs, mst_unknown}; + = {mst_file_data, mst_solib_trampoline, mst_abs}; static const enum minimal_symbol_type types4[] - = {mst_file_bss, mst_text_gnu_ifunc, mst_abs, mst_unknown}; + = {mst_file_bss, mst_text_gnu_ifunc, mst_abs}; enum minimal_symbol_type ourtype; enum minimal_symbol_type ourtype2; enum minimal_symbol_type ourtype3; @@ -3013,6 +3013,8 @@ search_symbols (char *regexp, enum search_domain kind, struct cleanup *old_chain = NULL; struct search_symbols_data datum; + gdb_assert (kind <= TYPES_DOMAIN); + ourtype = types[kind]; ourtype2 = types2[kind]; ourtype3 = types3[kind]; @@ -3311,13 +3313,15 @@ static void symtab_symbol_info (char *regexp, enum search_domain kind, int from_tty) { static const char * const classnames[] = - {"variable", "function", "type", "method"}; + {"variable", "function", "type"}; struct symbol_search *symbols; struct symbol_search *p; struct cleanup *old_chain; char *last_filename = NULL; int first = 1; + gdb_assert (kind <= TYPES_DOMAIN); + /* Must make sure that if we're interrupted, symbols gets freed. */ search_symbols (regexp, kind, 0, (char **) NULL, &symbols); old_chain = make_cleanup_free_search_symbols (symbols); diff --git a/gdb/symtab.h b/gdb/symtab.h index 4913e6c..72f9287 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -398,19 +398,20 @@ typedef enum domain_enum_tag LABEL_DOMAIN } domain_enum; -/* Searching domains, used for `search_symbols'. */ +/* Searching domains, used for `search_symbols'. Element numbers are + hardcoded in GDB, check all enum uses before changing it. */ enum search_domain { /* Everything in VAR_DOMAIN minus FUNCTIONS_DOMAIN and TYPES_DOMAIN. */ - VARIABLES_DOMAIN, + VARIABLES_DOMAIN = 0, /* All functions -- for some reason not methods, though. */ - FUNCTIONS_DOMAIN, + FUNCTIONS_DOMAIN = 1, /* All defined types */ - TYPES_DOMAIN + TYPES_DOMAIN = 2, }; /* An address-class says where to find the value of a symbol. */ |