mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-01-31 14:04:12 +00:00
* 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.
This commit is contained in:
parent
0bfa869d53
commit
b4c41fc7e2
@ -1,5 +1,12 @@
|
||||
2012-07-10 Doug Evans <dje@google.com>
|
||||
|
||||
* 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.
|
||||
* dictionary.c (dict_add_pending): New function.
|
||||
* dictionary.h (dict_add_pending): Declare.
|
||||
|
||||
|
@ -82,7 +82,9 @@ struct partial_symtab
|
||||
|
||||
struct partial_symtab *next;
|
||||
|
||||
/* Name of the source file which this partial_symtab defines. */
|
||||
/* Name of the source file which this partial_symtab defines,
|
||||
or if the psymtab is anonymous then a descriptive name for
|
||||
debugging purposes, or "". It must not be NULL. */
|
||||
|
||||
const char *filename;
|
||||
|
||||
@ -182,6 +184,10 @@ struct partial_symtab
|
||||
|
||||
unsigned char psymtabs_addrmap_supported;
|
||||
|
||||
/* True if the name of this partial symtab is not a source file name. */
|
||||
|
||||
unsigned char anonymous;
|
||||
|
||||
/* A flag that is temporarily used when searching psymtabs. */
|
||||
|
||||
ENUM_BITFIELD (psymtab_search_status) searched_flag : 2;
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user