aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2010-04-27 20:07:01 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2010-04-27 20:07:01 +0000
commit0133421afd5a6d8633c1fbbdb77af734960d7c73 (patch)
treeccd514a96cd96965544dea692f048d90e1ebf3d3
parent1d2ca237d83678be5c4782309b1c820636c9f60a (diff)
downloadgdb-0133421afd5a6d8633c1fbbdb77af734960d7c73.zip
gdb-0133421afd5a6d8633c1fbbdb77af734960d7c73.tar.gz
gdb-0133421afd5a6d8633c1fbbdb77af734960d7c73.tar.bz2
gdb/
* objfiles.c: Include solist.h. (free_all_objfiles): New variable so. Check stale solist objfiles. * symfile.c (symbol_file_clear): Swap the order of free_all_objfiles and no_shared_libraries.
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/objfiles.c6
-rw-r--r--gdb/symfile.c9
3 files changed, 17 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index aa87a5c..0bbf6ed 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2010-04-27 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * objfiles.c: Include solist.h.
+ (free_all_objfiles): New variable so. Check stale solist objfiles.
+ * symfile.c (symbol_file_clear): Swap the order of free_all_objfiles
+ and no_shared_libraries.
+
2010-04-27 Joel Brobecker <brobecker@adacore.com>
ARI warning fix.
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index 5be5c6a..cacdaba 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -53,6 +53,7 @@
#include "observer.h"
#include "complaints.h"
#include "psymtab.h"
+#include "solist.h"
/* Prototypes for local functions */
@@ -688,6 +689,11 @@ void
free_all_objfiles (void)
{
struct objfile *objfile, *temp;
+ struct so_list *so;
+
+ /* Any objfile referencewould become stale. */
+ for (so = master_so_list (); so; so = so->next)
+ gdb_assert (so->objfile == NULL);
ALL_OBJFILES_SAFE (objfile, temp)
{
diff --git a/gdb/symfile.c b/gdb/symfile.c
index eda26cc..4f70445 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -1228,13 +1228,12 @@ symbol_file_clear (int from_tty)
: !query (_("Discard symbol table? "))))
error (_("Not confirmed."));
- free_all_objfiles ();
-
- /* solib descriptors may have handles to objfiles. Since their
- storage has just been released, we'd better wipe the solib
- descriptors as well. */
+ /* solib descriptors may have handles to objfiles. Wipe them before their
+ objfiles get stale by free_all_objfiles. */
no_shared_libraries (NULL, from_tty);
+ free_all_objfiles ();
+
gdb_assert (symfile_objfile == NULL);
if (from_tty)
printf_unfiltered (_("No symbol file now.\n"));