/* Program and address space management, for GDB, the GNU debugger.
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2009-2012 Free Software Foundation, Inc.
This file is part of GDB.
free_address_space (pspace->aspace);
resize_section_table (&pspace->target_sections,
-resize_section_table (&pspace->target_sections, 0));
+ clear_program_space_solib_cache (pspace);
/* Discard any data modules have associated with the PSPACE. */
program_space_free_data (pspace);
xfree (pspace);
struct program_space *
clone_program_space (struct program_space *dest, struct program_space *src)
{
- struct program_space *new_pspace;
struct cleanup *old_chain;
old_chain = save_current_program_space ();
restore_program_space (void *arg)
{
struct program_space *saved_pspace = arg;
+
set_current_program_space (saved_pspace);
}
{
struct cleanup *old_chain = make_cleanup (restore_program_space,
current_program_space);
+
return old_chain;
}
static int
pspace_empty_p (struct program_space *pspace)
{
- struct inferior *inf;
-
if (find_inferior_for_program_space (pspace) != NULL)
return 0;
error (_("program space ID %d not known."), requested);
}
- print_program_space (uiout, requested);
+ print_program_space (current_uiout, requested);
}
/* Simply returns the count of program spaces. */
if (shared_aspace)
{
struct address_space *aspace = new_address_space ();
+
free_address_space (current_program_space->aspace);
ALL_PSPACES (pspace)
pspace->aspace = aspace;
\f
+/* See progspace.h. */
+
+void
+clear_program_space_solib_cache (struct program_space *pspace)
+{
+ VEC_free (so_list_ptr, pspace->added_solibs);
+
+ free_char_ptr_vec (pspace->deleted_solibs);
+ pspace->deleted_solibs = NULL;
+}
+
+\f
+
/* Keep a registry of per-program_space data-pointers required by other GDB
modules. */
}
void *
-program_space_data (struct program_space *pspace, const struct program_space_data *data)
+program_space_data (struct program_space *pspace,
+ const struct program_space_data *data)
{
gdb_assert (data->index < pspace->num_data);
return pspace->data[data->index];
initialize_progspace (void)
{
add_cmd ("program-spaces", class_maintenance,
- maintenance_info_program_spaces_command, _("\
-Info about currently known program spaces."),
+ maintenance_info_program_spaces_command,
+ _("Info about currently known program spaces."),
&maintenanceinfolist);
/* There's always one program space. Note that this function isn't