gdb
* xcoffread.c: Include psymtab.h. (xcoff_sym_fns): Update. * symtab.h (struct partial_symbol): Remove. (PSYMBOL_DOMAIN, PSYMBOL_CLASS): Remove. (struct partial_symtab): Remove. (PSYMTAB_TO_SYMTAB): Remove. (lookup_partial_symbol, lookup_partial_symtab, find_pc_psymtab) (find_pc_sect_psymtab): Remove. (find_pc_sect_symtab_via_partial): Declare. (find_pc_psymtab, find_pc_sect_psymbol, psymtab_to_symtab) (find_main_psymtab): Remove. (find_main_filename): Declare. (fixup_psymbol_section): Remove. (fixup_section): Declare. * symtab.c: Include psymtab.h. (lookup_symtab): Use lookup_symtab method. (lookup_partial_symtab): Remove. (find_pc_sect_psymtab_closer): Remove. (find_pc_sect_psymtab): Remove. (find_pc_sect_symtab_via_partial): New function. (find_pc_psymtab, find_pc_sect_psymbol, find_pc_psymbol): Remove. (fixup_section): No longer static. (fixup_psymbol_section): Remove. (lookup_symbol_aux): Use lookup_symbol_aux_quick. (lookup_global_symbol_from_objfile): Likewise. (lookup_symbol_aux_psymtabs): Remove. (lookup_symbol_aux_quick): New function. (lookup_symbol_global): Use lookup_symbol_aux_quick. (lookup_partial_symbol): Remove. (basic_lookup_transparent_type_quick): New function. (basic_lookup_transparent_type): Use it. (find_main_psymtab): Remove. (find_main_filename): New function. (find_pc_sect_symtab): Use find_pc_sect_symtab method. (find_line_symtab): Use expand_symtabs_with_filename method. (output_partial_symbol_filename): New function. (sources_info): Use map_partial_symbol_filenames. (struct search_symbols_data): New type. (search_symbols_file_matches): New function. (search_symbols_name_matches): Likewise. (search_symbols): Use expand_symtabs_matching method. (struct add_name_data): Rename from add_macro_name_data. (add_macro_name): Update. (add_partial_symbol_name): New function. (default_make_symbol_completion_list): Use map_partial_symbol_names. (struct add_partial_symbol_name): New type. (maybe_add_partial_symtab_filename): New function. (make_source_files_completion_list): Use map_partial_symbol_filenames. (expand_line_sal): Use expand_symtabs_with_filename method. * symmisc.c: Include psymtab.h. (print_objfile_statistics): Use print_stats method. (dump_objfile): Use dump method. (dump_psymtab, maintenance_print_psymbols) (maintenance_info_psymtabs, maintenance_check_symtabs) (extend_psymbol_list): Remove. * symfile.h (struct quick_symbol_functions): New struct. (struct sym_fns) <qf>: New field. (sort_pst_symbols): Remove. (increment_reading_symtab): Declare. * symfile.c: Include psymtab.h. (compare_psymbols, sort_pst_symbols): Remove. (psymtab_to_symtab): Remove. (increment_reading_symtab): New function. (symbol_file_add_with_addrs_or_offsets): Use expand_all_symtabs method. (set_initial_language): Use find_main_filename. (allocate_psymtab, discard_psymtab, cashier_psymtab): Remove. (free_named_symtabs): Remove unused code. (start_psymtab_common, add_psymbol_to_bcache) (append_psymbol_to_list, add_psymbol_to_list, init_psymbol_list): Remove. * stack.c: Include psymtab.h, symfile.h. (backtrace_command_1): Use find_pc_sect_symtab_via_partial. * source.h (psymtab_to_fullname): Don't declare. * source.c: Include psymtab.h. (select_source_symtab): Use find_last_source_symtab method. (forget_cached_source_info): Use forget_cached_source_info method. (find_and_open_source): No longer static. (psymtab_to_fullname): Remove. * somread.c: Include psymtab.h. (som_sym_fns): Update. * psympriv.h: New file. * psymtab.h: New file. * psymtab.c: New file. * objfiles.h: (ALL_OBJFILE_PSYMTABS): Remove. (ALL_PSYMTABS, ALL_PSPACE_PSYMTABS): Likewise. * objfiles.c: Include psymtab.h. (objfile_relocate1): Use relocate method. (objfile_has_partial_symbols): Use has_symbols method. * mipsread.c: Include psymtab.h. (ecoff_sym_fns): Update. * mi/mi-cmd-file.c: Include psymtab.h. (print_partial_file_name): New function. (mi_cmd_file_list_exec_source_files): Use map_partial_symbol_filenames. * mdebugread.c: Include psympriv.h. * machoread.c: Include psympriv.h. (macho_sym_fns): Update. * m2-exp.y (yylex): Use lookup_symtab. * elfread.c: Include psympriv.h. (elf_sym_fns): Update. * dwarf2read.c: Include psympriv.h. * dbxread.c: Include psympriv.h. (aout_sym_fns): Update. * cp-support.c: Include psymtab.h. (read_in_psymtabs): Remove. (make_symbol_overload_list_qualified): Use expand_symtabs_for_function method. * coffread.c: Include psympriv.h. (coff_sym_fns): Update. * blockframe.c: Include psymtab.h. (find_pc_partial_function): Use find_pc_sect_symtab method. * ada-lang.h (ada_update_initial_language): Update. * ada-lang.c: Include psymtab.h. (ada_update_initial_language): Remove 'main_pst' argument. (ada_lookup_partial_symbol): Remove. (struct ada_psym_data): New type. (ada_add_psyms): New function. (ada_add_non_local_symbols): Use map_ada_symtabs method. (struct add_partial_datum): New type. (ada_add_partial_symbol_completions): New function. (ada_make_symbol_completion_list): Use map_partial_symbol_names. (ada_exception_support_info_sniffer): Update. * Makefile.in (SFILES): Add psymtab.c. (COMMON_OBS): Add psymtab.o. (HFILES_NO_SRCDIR): Add psymtab.h, psympriv.h. gdb/doc * gdbint.texinfo (Symbol Handling): Update.
This commit is contained in:
parent
a2a5469e79
commit
ccefe4c44c
32 changed files with 2773 additions and 2064 deletions
77
gdb/source.c
77
gdb/source.c
|
@ -46,6 +46,8 @@
|
|||
#include "ui-out.h"
|
||||
#include "readline/readline.h"
|
||||
|
||||
#include "psymtab.h"
|
||||
|
||||
|
||||
#define OPEN_MODE (O_RDONLY | O_BINARY)
|
||||
#define FDOPEN_MODE FOPEN_RB
|
||||
|
@ -229,8 +231,6 @@ select_source_symtab (struct symtab *s)
|
|||
{
|
||||
struct symtabs_and_lines sals;
|
||||
struct symtab_and_line sal;
|
||||
struct partial_symtab *ps;
|
||||
struct partial_symtab *cs_pst = 0;
|
||||
struct objfile *ofp;
|
||||
|
||||
if (s)
|
||||
|
@ -281,33 +281,13 @@ select_source_symtab (struct symtab *s)
|
|||
if (current_source_symtab)
|
||||
return;
|
||||
|
||||
/* How about the partial symbol tables? */
|
||||
|
||||
ALL_OBJFILES (ofp)
|
||||
{
|
||||
for (ps = ofp->psymtabs; ps != NULL; ps = ps->next)
|
||||
{
|
||||
const char *name = ps->filename;
|
||||
int len = strlen (name);
|
||||
if (!(len > 2 && (strcmp (&name[len - 2], ".h") == 0
|
||||
|| strcmp (name, "<<C++-namespaces>>") == 0)))
|
||||
cs_pst = ps;
|
||||
}
|
||||
}
|
||||
if (cs_pst)
|
||||
{
|
||||
if (cs_pst->readin)
|
||||
{
|
||||
internal_error (__FILE__, __LINE__,
|
||||
_("select_source_symtab: "
|
||||
"readin pst found and no symtabs."));
|
||||
}
|
||||
else
|
||||
{
|
||||
current_source_pspace = current_program_space;
|
||||
current_source_symtab = PSYMTAB_TO_SYMTAB (cs_pst);
|
||||
}
|
||||
}
|
||||
{
|
||||
if (ofp->sf)
|
||||
s = ofp->sf->qf->find_last_source_symtab (ofp);
|
||||
if (s)
|
||||
current_source_symtab = s;
|
||||
}
|
||||
if (current_source_symtab)
|
||||
return;
|
||||
|
||||
|
@ -332,7 +312,6 @@ forget_cached_source_info (void)
|
|||
struct program_space *pspace;
|
||||
struct symtab *s;
|
||||
struct objfile *objfile;
|
||||
struct partial_symtab *pst;
|
||||
|
||||
ALL_PSPACES (pspace)
|
||||
ALL_PSPACE_OBJFILES (pspace, objfile)
|
||||
|
@ -351,14 +330,8 @@ forget_cached_source_info (void)
|
|||
}
|
||||
}
|
||||
|
||||
ALL_OBJFILE_PSYMTABS (objfile, pst)
|
||||
{
|
||||
if (pst->fullname != NULL)
|
||||
{
|
||||
xfree (pst->fullname);
|
||||
pst->fullname = NULL;
|
||||
}
|
||||
}
|
||||
if (objfile->sf)
|
||||
objfile->sf->qf->forget_cached_source_info (objfile);
|
||||
}
|
||||
|
||||
last_source_visited = NULL;
|
||||
|
@ -964,7 +937,7 @@ rewrite_source_path (const char *path)
|
|||
An invalid file descriptor is returned. ( the return value is negative )
|
||||
FULLNAME is set to NULL. */
|
||||
|
||||
static int
|
||||
int
|
||||
find_and_open_source (const char *filename,
|
||||
const char *dirname,
|
||||
char **fullname)
|
||||
|
@ -1094,34 +1067,6 @@ symtab_to_fullname (struct symtab *s)
|
|||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Finds the fullname that a partial_symtab represents.
|
||||
|
||||
If this functions finds the fullname, it will save it in ps->fullname
|
||||
and it will also return the value.
|
||||
|
||||
If this function fails to find the file that this partial_symtab represents,
|
||||
NULL will be returned and ps->fullname will be set to NULL. */
|
||||
char *
|
||||
psymtab_to_fullname (struct partial_symtab *ps)
|
||||
{
|
||||
int r;
|
||||
|
||||
if (!ps)
|
||||
return NULL;
|
||||
|
||||
/* Don't check ps->fullname here, the file could have been
|
||||
deleted/moved/..., look for it again */
|
||||
r = find_and_open_source (ps->filename, ps->dirname, &ps->fullname);
|
||||
|
||||
if (r >= 0)
|
||||
{
|
||||
close (r);
|
||||
return ps->fullname;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Create and initialize the table S->line_charpos that records
|
||||
the positions of the lines in the source file, which is assumed
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue