From cb5d864f33a47d6b803c9224189f2ac0c5599f93 Mon Sep 17 00:00:00 2001 From: Fred Fish Date: Fri, 6 Jan 2006 16:23:35 +0000 Subject: [PATCH] Reviewed and approved by Jim Blandy 2006-01-06 Fred Fish * 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(). --- gdb/ChangeLog | 8 ++++++++ gdb/objfiles.c | 19 +++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d2dbf3a6b90..ce17760f93b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2006-01-06 Fred Fish + + * 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(). + 2006-01-04 Michael Snyder Checkpoint/Restart for Linux. diff --git a/gdb/objfiles.c b/gdb/objfiles.c index 459709adf44..41aab64594a 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); -- 2.30.2