aboutsummaryrefslogtreecommitdiff
path: root/gdb/objfiles.c
diff options
context:
space:
mode:
authorFred Fish <fnf@specifix.com>2006-01-06 16:23:35 +0000
committerFred Fish <fnf@specifix.com>2006-01-06 16:23:35 +0000
commitcb5d864f33a47d6b803c9224189f2ac0c5599f93 (patch)
tree2e2b5691e73a49fdba5895e0474b328289ba2076 /gdb/objfiles.c
parent7983a4a1b33144aae1331045336da217dee4d47e (diff)
downloadgdb-cb5d864f33a47d6b803c9224189f2ac0c5599f93.zip
gdb-cb5d864f33a47d6b803c9224189f2ac0c5599f93.tar.gz
gdb-cb5d864f33a47d6b803c9224189f2ac0c5599f93.tar.bz2
Reviewed and approved by Jim Blandy
2006-01-06 Fred Fish <fnf@specifix.com> * objfiles.c (source.h): Include. (free_objfile): Update comment about clear_symtab_users(). (free_objfile): Check all symtabs of objfile being freed and if one of them is the current source symtab, call clear_current_source_symtab_and_line().
Diffstat (limited to 'gdb/objfiles.c')
-rw-r--r--gdb/objfiles.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index 459709a..41aab64 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -45,6 +45,7 @@
#include "breakpoint.h"
#include "block.h"
#include "dictionary.h"
+#include "source.h"
/* Prototypes for local functions */
@@ -432,10 +433,24 @@ free_objfile (struct objfile *objfile)
is unknown, but we play it safe for now and keep each action until
it is shown to be no longer needed. */
- /* I *think* all our callers call clear_symtab_users. If so, no need
- to call this here. */
+ /* Not all our callers call clear_symtab_users (objfile_purge_solibs,
+ for example), so we need to call this here. */
clear_pc_function_cache ();
+ /* Check to see if the current_source_symtab belongs to this objfile,
+ and if so, call clear_current_source_symtab_and_line. */
+
+ {
+ struct symtab_and_line cursal = get_current_source_symtab_and_line ();
+ struct symtab *s;
+
+ ALL_OBJFILE_SYMTABS (objfile, s)
+ {
+ if (s == cursal.symtab)
+ clear_current_source_symtab_and_line ();
+ }
+ }
+
/* The last thing we do is free the objfile struct itself. */
objfile_free_data (objfile);