summaryrefslogtreecommitdiff
path: root/gdb/progspace.h
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@ericsson.com>2014-09-29 16:33:10 -0400
committerSimon Marchi <simon.marchi@ericsson.com>2015-07-08 11:26:32 -0400
commit0560c645c02eba2828a053039dcfdf676cdd1d00 (patch)
treec653662e7db277cadc193512e25d2c0341ebed12 /gdb/progspace.h
parent084641963dba63283bf2eca227f4f77c2598b172 (diff)
downloadbinutils-gdb-0560c645c02eba2828a053039dcfdf676cdd1d00.tar.gz
Delete program spaces directly when removing inferiors
When deleting an inferior, delete the associated program space as well if it becomes unused. This replaces the "pruning" approach, with which you could forget to call prune_program_spaces (as seen, with the -remove-inferior command, see [1]). This allows to remove the prune_program_spaces function. At the same time, I was able to clean up the delete_inferior* family. delete_inferior_silent and delete_inferior were unused, which allowed renaming delete_inferior_1 to delete_inferior. Also, since all calls to it were with silent=1, I removed that parameter completely. I renamed pspace_empty_p to program_space_empty_p. I prefer if the "exported" functions have a more explicit and standard name. Tested on Ubuntu 14.10. This obsoletes my previous patch "Add call to prune_program_spaces in mi_cmd_remove_inferior" [1]. [1] https://sourceware.org/ml/gdb-patches/2014-09/msg00717.html gdb/Changelog: * inferior.c (delete_inferior_1): Rename to ... (delete_inferior): ..., remove 'silent' parameter, delete program space when unused and remove call to prune_program_spaces. Remove the old, unused, delete_inferior. (delete_inferior_silent): Remove. (prune_inferiors): Change call from delete_inferior_1 to delete_inferior and remove 'silent' parameter. Remove call to prune_program_spaces. (remove_inferior_command): Idem. * inferior.h (delete_inferior_1): Rename to... (delete_inferior): ..., remove 'silent' parameter and remove the original delete_inferior. (delete_inferior_silent): Remove. * mi/mi-main.c (mi_cmd_remove_inferior): Change call from delete_inferior_1 to delete_inferior and remove 'silent' parameter. * progspace.c (prune_program_spaces): Remove. (pspace_empty_p): Rename to... (program_space_empty_p): ... and make non-static. (delete_program_space): New. * progspace.h (prune_program_spaces): Remove declaration. (program_space_empty_p): New declaration. (delete_program_space): New declaration.
Diffstat (limited to 'gdb/progspace.h')
-rw-r--r--gdb/progspace.h11
1 files changed, 7 insertions, 4 deletions
diff --git a/gdb/progspace.h b/gdb/progspace.h
index f960093f700..48f206e2e01 100644
--- a/gdb/progspace.h
+++ b/gdb/progspace.h
@@ -236,9 +236,16 @@ extern struct program_space *current_program_space;
pointer to the new object. */
extern struct program_space *add_program_space (struct address_space *aspace);
+/* Remove a program space from the program spaces list and release it. It is
+ an error to call this function while PSPACE is the current program space. */
+extern void delete_program_space (struct program_space *pspace);
+
/* Returns the number of program spaces listed. */
extern int number_of_program_spaces (void);
+/* Returns true iff there's no inferior bound to PSPACE. */
+extern int program_space_empty_p (struct program_space *pspace);
+
/* Copies program space SRC to DEST. Copies the main executable file,
and the main symbol file. Returns DEST. */
extern struct program_space *clone_program_space (struct program_space *dest,
@@ -289,10 +296,6 @@ extern int address_space_num (struct address_space *aspace);
mappings. */
extern void update_address_spaces (void);
-/* Prune away automatically added program spaces that aren't required
- anymore. */
-extern void prune_program_spaces (void);
-
/* Reset saved solib data at the start of an solib event. This lets
us properly collect the data when calling solib_add, so it can then
later be printed. */