summaryrefslogtreecommitdiff
path: root/gdb/progspace.c
diff options
context:
space:
mode:
authorDaniel Jacobowitz <dan@debian.org>2010-03-02 17:55:39 +0000
committerDaniel Jacobowitz <dan@debian.org>2010-03-02 17:55:39 +0000
commit86bda87a81664487ff216230c8acf9148bfb116c (patch)
tree7c9f3861a0af1b0af1dc1ed9b2681ea9dd4e912b /gdb/progspace.c
parent5009187f09e4dcbbffc78d4f1417602d5dfb82e1 (diff)
downloadgdb-86bda87a81664487ff216230c8acf9148bfb116c.tar.gz
* progspace.c (update_address_spaces): Update inferior address spaces
also.
Diffstat (limited to 'gdb/progspace.c')
-rw-r--r--gdb/progspace.c30
1 files changed, 18 insertions, 12 deletions
diff --git a/gdb/progspace.c b/gdb/progspace.c
index 259e641d0b2..42139fd4599 100644
--- a/gdb/progspace.c
+++ b/gdb/progspace.c
@@ -430,24 +430,30 @@ void
update_address_spaces (void)
{
int shared_aspace = gdbarch_has_shared_address_space (target_gdbarch);
- struct address_space *aspace = NULL;
struct program_space *pspace;
+ struct inferior *inf;
init_address_spaces ();
- ALL_PSPACES (pspace)
+ if (shared_aspace)
{
- free_address_space (pspace->aspace);
-
- if (shared_aspace)
- {
- if (aspace == NULL)
- aspace = new_address_space ();
- pspace->aspace = aspace;
- }
- else
- pspace->aspace = new_address_space ();
+ struct address_space *aspace = new_address_space ();
+ free_address_space (current_program_space->aspace);
+ ALL_PSPACES (pspace)
+ pspace->aspace = aspace;
}
+ else
+ ALL_PSPACES (pspace)
+ {
+ free_address_space (pspace->aspace);
+ pspace->aspace = new_address_space ();
+ }
+
+ for (inf = inferior_list; inf; inf = inf->next)
+ if (gdbarch_has_global_solist (target_gdbarch))
+ inf->aspace = maybe_new_address_space ();
+ else
+ inf->aspace = inf->pspace->aspace;
}
/* Save the current program space so that it may be restored by a later