diff options
-rw-r--r-- | gdb/ChangeLog | 12 | ||||
-rw-r--r-- | gdb/coffread.c | 2 | ||||
-rw-r--r-- | gdb/dwarf2/read.c | 2 | ||||
-rw-r--r-- | gdb/elfread.c | 6 | ||||
-rw-r--r-- | gdb/objfiles.c | 16 | ||||
-rw-r--r-- | gdb/objfiles.h | 5 | ||||
-rw-r--r-- | gdb/symfile.c | 2 |
7 files changed, 29 insertions, 16 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b06b6d2..20f7b56 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,17 @@ 2021-03-20 Tom Tromey <tom@tromey.com> + * symfile.c (read_symbols): Update. + * objfiles.h (struct objfile) <has_partial_symbols>: New method. + (objfile_has_partial_symbols): Don't declare. + * objfiles.c (objfile::has_partial_symbols): Rename from + objfile_has_partial_symbols. + (objfile_has_symbols, have_partial_symbols): Update. + * elfread.c (elf_symfile_read): Update. + * dwarf2/read.c (dwarf2_has_info): Update. + * coffread.c (coff_symfile_read): Update. + +2021-03-20 Tom Tromey <tom@tromey.com> + * coffread.c: Include dwarf2/public.h. * dwarf2/frame.c: Include dwarf2/public.h. * dwarf2/index-write.h: Include dwarf2/public.h, not symfile.h. diff --git a/gdb/coffread.c b/gdb/coffread.c index d15ba65..badcb5a 100644 --- a/gdb/coffread.c +++ b/gdb/coffread.c @@ -708,7 +708,7 @@ coff_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags) dwarf2_build_frame_info (objfile); /* Try to add separate debug file if no symbols table found. */ - if (!objfile_has_partial_symbols (objfile)) + if (!objfile->has_partial_symbols ()) { std::string debugfile = find_separate_debug_file_by_buildid (objfile); diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 4d6d87b..dd2abd3 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -1954,7 +1954,7 @@ dwarf2_has_info (struct objfile *objfile, /* We can share a "dwarf2_per_bfd" with other objfiles if the BFD doesn't require relocations and if there aren't partial symbols from some other reader. */ - if (!objfile_has_partial_symbols (objfile) + if (!objfile->has_partial_symbols () && !gdb_bfd_requires_relocations (objfile->obfd)) { /* See if one has been created for this BFD yet. */ diff --git a/gdb/elfread.c b/gdb/elfread.c index 8f06c8e..439f5cc 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -1266,7 +1266,7 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags) /* elf_sym_fns_gdb_index cannot handle simultaneous non-DWARF debug information present in OBJFILE. If there is such debug info present never use an index. */ - if (!objfile_has_partial_symbols (objfile) + if (!objfile->has_partial_symbols () && dwarf2_initialize_objfile (objfile, &index_kind)) { switch (index_kind) @@ -1293,14 +1293,14 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags) SYMTABS/PSYMTABS. `.gnu_debuglink' may no longer be present with `.note.gnu.build-id'. - .gnu_debugdata is !objfile_has_partial_symbols because it contains only + .gnu_debugdata is !objfile::has_partial_symbols because it contains only .symtab, not .debug_* section. But if we already added .gnu_debugdata as an objfile via find_separate_debug_file_in_section there was no separate debug info available. Therefore do not attempt to search for another one, objfile->separate_debug_objfile->separate_debug_objfile GDB guarantees to be NULL and we would possibly violate it. */ - else if (!objfile_has_partial_symbols (objfile) + else if (!objfile->has_partial_symbols () && objfile->separate_debug_objfile == NULL && objfile->separate_debug_objfile_backlink == NULL) { diff --git a/gdb/objfiles.c b/gdb/objfiles.c index 2a513d8..53ca66d 100644 --- a/gdb/objfiles.c +++ b/gdb/objfiles.c @@ -810,23 +810,23 @@ objfile_rebase (struct objfile *objfile, CORE_ADDR slide) breakpoint_re_set (); } -/* Return non-zero if OBJFILE has partial symbols. */ +/* See objfiles.h. */ int -objfile_has_partial_symbols (struct objfile *objfile) +objfile::has_partial_symbols () { - if (!objfile->sf) + if (!sf) return 0; /* If we have not read psymbols, but we have a function capable of reading them, then that is an indication that they are in fact available. Without this function the symbols may have been already read in but they also may not be present in this objfile. */ - if ((objfile->flags & OBJF_PSYMTABS_READ) == 0 - && objfile->sf->sym_read_psymbols != NULL) + if ((flags & OBJF_PSYMTABS_READ) == 0 + && sf->sym_read_psymbols != NULL) return 1; - return objfile->sf->qf->has_symbols (objfile); + return sf->qf->has_symbols (this); } /* Return non-zero if OBJFILE has full symbols. */ @@ -844,7 +844,7 @@ int objfile_has_symbols (struct objfile *objfile) { for (::objfile *o : objfile->separate_debug_objfiles ()) - if (objfile_has_partial_symbols (o) || objfile_has_full_symbols (o)) + if (o->has_partial_symbols () || objfile_has_full_symbols (o)) return 1; return 0; } @@ -859,7 +859,7 @@ have_partial_symbols (void) { for (objfile *ofp : current_program_space->objfiles ()) { - if (objfile_has_partial_symbols (ofp)) + if (ofp->has_partial_symbols ()) return 1; } return 0; diff --git a/gdb/objfiles.h b/gdb/objfiles.h index 052f109..0568e16 100644 --- a/gdb/objfiles.h +++ b/gdb/objfiles.h @@ -548,6 +548,9 @@ public: return per_bfd->gdbarch; } + /* Return true if OBJFILE has partial symbols. */ + + int has_partial_symbols (); /* The object file's original name as specified by the user, made absolute, and tilde-expanded. However, it is not canonicalized @@ -738,8 +741,6 @@ extern void free_objfile_separate_debug (struct objfile *); extern void objfile_relocate (struct objfile *, const section_offsets &); extern void objfile_rebase (struct objfile *, CORE_ADDR); -extern int objfile_has_partial_symbols (struct objfile *objfile); - extern int objfile_has_full_symbols (struct objfile *objfile); extern int objfile_has_symbols (struct objfile *objfile); diff --git a/gdb/symfile.c b/gdb/symfile.c index ec5d34a..34d6363 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -775,7 +775,7 @@ read_symbols (struct objfile *objfile, symfile_add_flags add_flags) /* find_separate_debug_file_in_section should be called only if there is single binary with no existing separate debug info file. */ - if (!objfile_has_partial_symbols (objfile) + if (!objfile->has_partial_symbols () && objfile->separate_debug_objfile == NULL && objfile->separate_debug_objfile_backlink == NULL) { |