* dwarf2read.c (dw2_map_symbol_filenames): New parameter

`need_fullname'.
	* psymtab.c (map_symbol_filenames_psymtab): Ditto.
	(map_partial_symbol_filenames): Ditto.  All callers updated.
	* psymtab.h (map_partial_symbol_filenames): Update prototype.
	* symfile.h (struct quick_symbol_functions, map_symbol_filenames): New
	parameter need_fullname.
This commit is contained in:
Doug Evans 2011-11-11 00:43:04 +00:00
parent 3d88bd9200
commit 74e2f25548
7 changed files with 37 additions and 13 deletions

View File

@ -10,6 +10,14 @@
2011-11-10 Doug Evans <dje@google.com>
* dwarf2read.c (dw2_map_symbol_filenames): New parameter
`need_fullname'.
* psymtab.c (map_symbol_filenames_psymtab): Ditto.
(map_partial_symbol_filenames): Ditto. All callers updated.
* psymtab.h (map_partial_symbol_filenames): Update prototype.
* symfile.h (struct quick_symbol_functions, map_symbol_filenames): New
parameter need_fullname.
* psymtab.c (psymtab_to_fullname): Use cached copy if it exists.
* source.c (symtab_to_fullname): Ditto.

View File

@ -2811,7 +2811,7 @@ dw2_find_pc_sect_symtab (struct objfile *objfile,
static void
dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
void *data)
void *data, int need_fullname)
{
int i;
@ -2833,8 +2833,12 @@ dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
for (j = 0; j < file_data->num_file_names; ++j)
{
const char *this_real_name = dw2_get_real_path (objfile, file_data,
j);
const char *this_real_name;
if (need_fullname)
this_real_name = dw2_get_real_path (objfile, file_data, j);
else
this_real_name = NULL;
(*fun) (file_data->file_names[j], this_real_name, data);
}
}

View File

@ -109,7 +109,8 @@ mi_cmd_file_list_exec_source_files (char *command, char **argv, int argc)
ui_out_end (uiout, ui_out_type_tuple);
}
map_partial_symbol_filenames (print_partial_file_name, NULL);
map_partial_symbol_filenames (print_partial_file_name, NULL,
1 /*need_fullname*/);
ui_out_end (uiout, ui_out_type_list);
}

View File

@ -1082,7 +1082,8 @@ read_psymtabs_with_filename (struct objfile *objfile, const char *filename)
static void
map_symbol_filenames_psymtab (struct objfile *objfile,
symbol_filename_ftype *fun, void *data)
symbol_filename_ftype *fun, void *data,
int need_fullname)
{
struct partial_symtab *ps;
@ -1094,7 +1095,10 @@ map_symbol_filenames_psymtab (struct objfile *objfile,
continue;
QUIT;
fullname = psymtab_to_fullname (ps);
if (need_fullname)
fullname = psymtab_to_fullname (ps);
else
fullname = NULL;
(*fun) (ps->filename, fullname, data);
}
}
@ -1921,13 +1925,15 @@ expand_partial_symbol_names (int (*fun) (const char *, void *), void *data)
}
void
map_partial_symbol_filenames (symbol_filename_ftype *fun, void *data)
map_partial_symbol_filenames (symbol_filename_ftype *fun, void *data,
int need_fullname)
{
struct objfile *objfile;
ALL_OBJFILES (objfile)
{
if (objfile->sf)
objfile->sf->qf->map_symbol_filenames (objfile, fun, data);
objfile->sf->qf->map_symbol_filenames (objfile, fun, data,
need_fullname);
}
}

View File

@ -33,7 +33,8 @@ extern struct bcache *psymbol_bcache_get_bcache (struct psymbol_bcache *);
void expand_partial_symbol_names (int (*fun) (const char *, void *),
void *data);
void map_partial_symbol_filenames (symbol_filename_ftype *fun, void *data);
void map_partial_symbol_filenames (symbol_filename_ftype *fun, void *data,
int need_fullname);
extern const struct quick_symbol_functions psym_functions;

View File

@ -289,9 +289,11 @@ struct quick_symbol_functions
/* Call a callback for every file defined in OBJFILE whose symtab is
not already read in. FUN is the callback. It is passed the file's
FILENAME, the file's FULLNAME, and the DATA passed to this function. */
FILENAME, the file's FULLNAME (if need_fullname is non-zero), and
the DATA passed to this function. */
void (*map_symbol_filenames) (struct objfile *objfile,
symbol_filename_ftype *fun, void *data);
symbol_filename_ftype *fun, void *data,
int need_fullname);
};
/* Structure to keep track of symbol reading functions for various

View File

@ -2881,7 +2881,8 @@ sources_info (char *ignore, int from_tty)
"will be read in on demand:\n\n");
first = 1;
map_partial_symbol_filenames (output_partial_symbol_filename, &first);
map_partial_symbol_filenames (output_partial_symbol_filename, &first,
1 /*need_fullname*/);
printf_filtered ("\n");
}
@ -4314,7 +4315,8 @@ make_source_files_completion_list (char *text, char *word)
datum.list = &list;
datum.list_used = &list_used;
datum.list_alloced = &list_alloced;
map_partial_symbol_filenames (maybe_add_partial_symtab_filename, &datum);
map_partial_symbol_filenames (maybe_add_partial_symtab_filename, &datum,
0 /*need_fullname*/);
discard_cleanups (back_to);
return list;