aboutsummaryrefslogtreecommitdiff
path: root/gdb/psymtab.c
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>2012-07-10 20:17:30 +0000
committerDoug Evans <dje@google.com>2012-07-10 20:17:30 +0000
commitb4c41fc7e2e297121ad3c96ad9e2f8b8738be373 (patch)
treee5d5ff5b26a4b2978ef135d07e2cc2bcd743d1e5 /gdb/psymtab.c
parent0bfa869d53ae28e6707936910a55317dfe816e14 (diff)
downloadgdb-b4c41fc7e2e297121ad3c96ad9e2f8b8738be373.zip
gdb-b4c41fc7e2e297121ad3c96ad9e2f8b8738be373.tar.gz
gdb-b4c41fc7e2e297121ad3c96ad9e2f8b8738be373.tar.bz2
* psympriv.h (struct partial_symtab): New member "anonymous".
* psymtab.c (partial_map_symtabs_matching_filename): Ignore anonymous psymtabs. (read_psymtabs_with_filename): Ditto. (map_symbol_filenames_psymtab, psymtab_to_fullname): Ditto. (expand_symtabs_matching_via_partial): Ditto. (dump_psymtab): Update.
Diffstat (limited to 'gdb/psymtab.c')
-rw-r--r--gdb/psymtab.c35
1 files changed, 31 insertions, 4 deletions
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index 5366d94..6e84094 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -174,6 +174,10 @@ partial_map_symtabs_matching_filename (struct objfile *objfile,
if (pst->user != NULL)
continue;
+ /* Anonymous psymtabs don't have a file name. */
+ if (pst->anonymous)
+ continue;
+
if (FILENAME_CMP (name, pst->filename) == 0
|| (!is_abs && compare_filenames_for_search (pst->filename,
name, name_len)))
@@ -973,8 +977,16 @@ dump_psymtab (struct objfile *objfile, struct partial_symtab *psymtab,
struct gdbarch *gdbarch = get_objfile_arch (objfile);
int i;
- fprintf_filtered (outfile, "\nPartial symtab for source file %s ",
- psymtab->filename);
+ if (psymtab->anonymous)
+ {
+ fprintf_filtered (outfile, "\nAnonymous partial symtab (%s) ",
+ psymtab->filename);
+ }
+ else
+ {
+ fprintf_filtered (outfile, "\nPartial symtab for source file %s ",
+ psymtab->filename);
+ }
fprintf_filtered (outfile, "(object ");
gdb_print_host_address (psymtab, outfile);
fprintf_filtered (outfile, ")\n\n");
@@ -1124,6 +1136,10 @@ read_psymtabs_with_filename (struct objfile *objfile, const char *filename)
ALL_OBJFILE_PSYMTABS_REQUIRED (objfile, p)
{
+ /* Anonymous psymtabs don't have a name of a source file. */
+ if (p->anonymous)
+ continue;
+
if (filename_cmp (filename, p->filename) == 0)
psymtab_to_symtab (p);
}
@@ -1143,6 +1159,10 @@ map_symbol_filenames_psymtab (struct objfile *objfile,
if (ps->readin)
continue;
+ /* Anonymous psymtabs don't have a file name. */
+ if (ps->anonymous)
+ continue;
+
QUIT;
if (need_fullname)
fullname = psymtab_to_fullname (ps);
@@ -1167,6 +1187,8 @@ psymtab_to_fullname (struct partial_symtab *ps)
if (!ps)
return NULL;
+ if (ps->anonymous)
+ return NULL;
/* Use cached copy if we have it.
We rely on forget_cached_source_info being called appropriately
@@ -1377,8 +1399,13 @@ expand_symtabs_matching_via_partial
if (ps->user != NULL)
continue;
- if (file_matcher && ! (*file_matcher) (ps->filename, data))
- continue;
+ if (file_matcher)
+ {
+ if (ps->anonymous)
+ continue;
+ if (! (*file_matcher) (ps->filename, data))
+ continue;
+ }
if (recursively_search_psymtabs (ps, objfile, kind, name_matcher, data))
psymtab_to_symtab (ps);