2011-11-10 Doug Evans * 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. Index: dwarf2read.c =================================================================== RCS file: /cvs/src/src/gdb/dwarf2read.c,v retrieving revision 1.579 diff -u -p -r1.579 dwarf2read.c --- dwarf2read.c 10 Nov 2011 20:21:27 -0000 1.579 +++ dwarf2read.c 11 Nov 2011 00:18:14 -0000 @@ -2811,7 +2811,7 @@ dw2_find_pc_sect_symtab (struct 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 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); } } Index: psymtab.c =================================================================== RCS file: /cvs/src/src/gdb/psymtab.c,v retrieving revision 1.32 diff -u -p -r1.32 psymtab.c --- psymtab.c 10 Nov 2011 22:14:16 -0000 1.32 +++ psymtab.c 11 Nov 2011 00:18:14 -0000 @@ -1082,7 +1082,8 @@ read_psymtabs_with_filename (struct objf 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 obj 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) } 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); } } Index: psymtab.h =================================================================== RCS file: /cvs/src/src/gdb/psymtab.h,v retrieving revision 1.8 diff -u -p -r1.8 psymtab.h --- psymtab.h 10 Jun 2011 21:48:04 -0000 1.8 +++ psymtab.h 11 Nov 2011 00:18:14 -0000 @@ -33,7 +33,8 @@ extern struct bcache *psymbol_bcache_get 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; Index: symfile.h =================================================================== RCS file: /cvs/src/src/gdb/symfile.h,v retrieving revision 1.96 diff -u -p -r1.96 symfile.h --- symfile.h 9 Oct 2011 18:37:27 -0000 1.96 +++ symfile.h 11 Nov 2011 00:18:14 -0000 @@ -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 Index: symtab.c =================================================================== RCS file: /cvs/src/src/gdb/symtab.c,v retrieving revision 1.285 diff -u -p -r1.285 symtab.c --- symtab.c 29 Oct 2011 07:26:07 -0000 1.285 +++ symtab.c 11 Nov 2011 00:18:14 -0000 @@ -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 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; Index: mi/mi-cmd-file.c =================================================================== RCS file: /cvs/src/src/gdb/mi/mi-cmd-file.c,v retrieving revision 1.16 diff -u -p -r1.16 mi-cmd-file.c --- mi/mi-cmd-file.c 4 Aug 2011 19:10:14 -0000 1.16 +++ mi/mi-cmd-file.c 11 Nov 2011 00:18:14 -0000 @@ -109,7 +109,8 @@ mi_cmd_file_list_exec_source_files (char 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); }