From: Tom Tromey Date: Tue, 21 Feb 2023 22:03:38 +0000 (-0700) Subject: Merge forget_cached_source_info_for_objfile into objfile method X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=21f6be77b97e1d606881966fd4e407fde459a639;p=binutils-gdb.git 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. --- diff --git a/gdb/objfiles.c b/gdb/objfiles.c index ed29131d528..8e7be8e2e25 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 ca0e8d51fbd..faf0be6fe5a 100644 --- a/gdb/source.c +++ b/gdb/source.c @@ -420,34 +420,12 @@ 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 dd6f58c579c..d3e612ceaa1 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 efc6bcdf2bd..9db5c47a8ce 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); }