aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2023-02-21 15:03:38 -0700
committerTom Tromey <tom@tromey.com>2023-03-07 14:46:58 -0700
commit21f6be77b97e1d606881966fd4e407fde459a639 (patch)
treeafb3ecd473c706fb12655b58b31028963d6fef83
parent2a32d78f8aa6ddce2642067960f90173466dcc10 (diff)
downloadbinutils-21f6be77b97e1d606881966fd4e407fde459a639.zip
binutils-21f6be77b97e1d606881966fd4e407fde459a639.tar.gz
binutils-21f6be77b97e1d606881966fd4e407fde459a639.tar.bz2
Merge forget_cached_source_info_for_objfile into objfile method
forget_cached_source_info_for_objfile does some objfile-specific work and then calls objfile::forget_cached_source_info. It seems better to me to just have the method do all the work.
-rw-r--r--gdb/objfiles.c2
-rw-r--r--gdb/source.c24
-rw-r--r--gdb/source.h4
-rw-r--r--gdb/symfile-debug.c12
4 files changed, 14 insertions, 28 deletions
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index ed29131..8e7be8e 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -534,7 +534,7 @@ objfile::~objfile ()
/* It still may reference data modules have associated with the objfile and
the symbol file data. */
- forget_cached_source_info_for_objfile (this);
+ forget_cached_source_info ();
breakpoint_free_objfile (this);
btrace_free_objfile (this);
diff --git a/gdb/source.c b/gdb/source.c
index ca0e8d5..faf0be6 100644
--- a/gdb/source.c
+++ b/gdb/source.c
@@ -421,33 +421,11 @@ show_directories_command (struct ui_file *file, int from_tty,
/* See source.h. */
void
-forget_cached_source_info_for_objfile (struct objfile *objfile)
-{
- for (compunit_symtab *cu : objfile->compunits ())
- {
- for (symtab *s : cu->filetabs ())
- {
- if (s->fullname != NULL)
- {
- xfree (s->fullname);
- s->fullname = NULL;
- }
- }
- }
-
- objfile->forget_cached_source_info ();
-}
-
-/* See source.h. */
-
-void
forget_cached_source_info (void)
{
for (struct program_space *pspace : program_spaces)
for (objfile *objfile : pspace->objfiles ())
- {
- forget_cached_source_info_for_objfile (objfile);
- }
+ objfile->forget_cached_source_info ();
g_source_cache.clear ();
last_source_visited = NULL;
diff --git a/gdb/source.h b/gdb/source.h
index dd6f58c..d3e612c 100644
--- a/gdb/source.h
+++ b/gdb/source.h
@@ -197,10 +197,6 @@ private:
extern void print_source_lines (struct symtab *s, source_lines_range r,
print_source_lines_flags flags);
-/* Forget line positions and file names for the symtabs in a
- particular objfile. */
-extern void forget_cached_source_info_for_objfile (struct objfile *);
-
/* Forget what we learned about line positions in source files, and
which directories contain them; must check again now since files
may be found in a different directory now. */
diff --git a/gdb/symfile-debug.c b/gdb/symfile-debug.c
index efc6bcd..9db5c47 100644
--- a/gdb/symfile-debug.c
+++ b/gdb/symfile-debug.c
@@ -155,6 +155,18 @@ objfile::forget_cached_source_info ()
gdb_printf (gdb_stdlog, "qf->forget_cached_source_info (%s)\n",
objfile_debug_name (this));
+ for (compunit_symtab *cu : compunits ())
+ {
+ for (symtab *s : cu->filetabs ())
+ {
+ if (s->fullname != NULL)
+ {
+ xfree (s->fullname);
+ s->fullname = NULL;
+ }
+ }
+ }
+
for (const auto &iter : qf_require_partial_symbols ())
iter->forget_cached_source_info (this);
}