diff options
author | Doug Evans <dje@google.com> | 2012-07-10 20:17:30 +0000 |
---|---|---|
committer | Doug Evans <dje@google.com> | 2012-07-10 20:17:30 +0000 |
commit | b4c41fc7e2e297121ad3c96ad9e2f8b8738be373 (patch) | |
tree | e5d5ff5b26a4b2978ef135d07e2cc2bcd743d1e5 /gdb/psymtab.c | |
parent | 0bfa869d53ae28e6707936910a55317dfe816e14 (diff) | |
download | gdb-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.c | 35 |
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); |