aboutsummaryrefslogtreecommitdiff
path: root/gdb/inferior.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2012-08-22 15:17:21 +0000
committerTom Tromey <tromey@redhat.com>2012-08-22 15:17:21 +0000
commit8e260fc026e568894546d065e63ecec2c346f6a4 (patch)
tree0e10ae105b8564f561628ce3e91876f1f1e70fd7 /gdb/inferior.c
parented9eebafbc78ba83d01230609016411c065b499f (diff)
* auto-load.c (_initialize_auto_load): Update.
* solib-svr4.c (_initialize_svr4_solib): Update * solib-dsbt.c (_initialize_dsbt_solib): Update. * solib-darwin.c (_initialize_darwin_solib): Update. * registry.h: New file. * python/py-progspace.c (gdbpy_initialize_pspace): Update. * python/py-inferior.c (gdbpy_initialize_inferior): Update. * progspace.h: Include registry.h. Use DECLARE_REGISTRY. (register_program_space_data_with_cleanup) (register_program_space_data, program_space_alloc_data) (clear_program_space_data, set_program_space_data) (program_space_data): Don't declare. * progspace.c: Use DEFINE_REGISTRY. (struct program_space_data, struct program_space_data_registration, struct program_space_data_registry, program_space_data_registry) (register_program_space_data_with_cleanup) (register_program_space_data, program_space_alloc_data) (program_space_free_data, clear_program_space_data) (set_program_space_data, program_space_data): Remove. * objfiles.h: Include registry.h. Use DECLARE_REGISTRY. (struct objfile) <data, num_data>: Replace with REGISTRY_FIELDS. (register_objfile_data_with_cleanup, register_objfile_data) (clear_objfile_data, set_objfile_data, objfile_data): Don't declare. * objfiles.c: Use DEFINE_REGISTRY. (struct objfile_data, struct objfile_data_registration, struct objfile_data_registry, objfile_data_registry) (register_objfile_data_with_cleanup, register_objfile_data) (objfile_alloc_data, objfile_free_data, clear_objfile_data) (set_objfile_data, objfile_data): Remove. (_initialize_objfiles): Update. * jit.c (_initialize_jit): Update. * inflow.c (_initialize_inflow): Update. * inferior.h: Include registry.h. Use DECLARE_REGISTRY. (struct inferior) <data, num_data>: Replace with REGISTRY_FIELDS. (register_inferior_data_with_cleanup, register_inferior_data) (clear_inferior_data, set_inferior_data, inferior_data): Don't declare. * inferior.c: Use DEFINE_REGISTRY. (struct inferior_data, struct inferior_data_registration, struct inferior_data_registry, inferior_data_registry) (register_inferior_data_with_cleanup, register_inferior_data) (inferior_alloc_data, inferior_free_data clear_inferior_data) (set_inferior_data, inferior_data): Remove. * auxv.c (_initialize_auxv): Update. * ada-lang.c (_initialize_ada_language): Update. * breakpoint.c (_initialize_breakpoint): Update. * i386-nat.c (i386_use_watchpoints): Update.
Diffstat (limited to 'gdb/inferior.c')
-rw-r--r--gdb/inferior.c105
1 files changed, 4 insertions, 101 deletions
diff --git a/gdb/inferior.c b/gdb/inferior.c
index 805acb4e92..c812d3980f 100644
--- a/gdb/inferior.c
+++ b/gdb/inferior.c
@@ -36,8 +36,10 @@
void _initialize_inferiors (void);
-static void inferior_alloc_data (struct inferior *inf);
-static void inferior_free_data (struct inferior *inf);
+/* Keep a registry of per-inferior data-pointers required by other GDB
+ modules. */
+
+DEFINE_REGISTRY (inferior)
struct inferior *inferior_list = NULL;
static int highest_inferior_num;
@@ -955,105 +957,6 @@ show_print_inferior_events (struct ui_file *file, int from_tty,
-/* Keep a registry of per-inferior data-pointers required by other GDB
- modules. */
-
-struct inferior_data
-{
- unsigned index;
- void (*cleanup) (struct inferior *, void *);
-};
-
-struct inferior_data_registration
-{
- struct inferior_data *data;
- struct inferior_data_registration *next;
-};
-
-struct inferior_data_registry
-{
- struct inferior_data_registration *registrations;
- unsigned num_registrations;
-};
-
-static struct inferior_data_registry inferior_data_registry
- = { NULL, 0 };
-
-const struct inferior_data *
-register_inferior_data_with_cleanup
- (void (*cleanup) (struct inferior *, void *))
-{
- struct inferior_data_registration **curr;
-
- /* Append new registration. */
- for (curr = &inferior_data_registry.registrations;
- *curr != NULL; curr = &(*curr)->next);
-
- *curr = XMALLOC (struct inferior_data_registration);
- (*curr)->next = NULL;
- (*curr)->data = XMALLOC (struct inferior_data);
- (*curr)->data->index = inferior_data_registry.num_registrations++;
- (*curr)->data->cleanup = cleanup;
-
- return (*curr)->data;
-}
-
-const struct inferior_data *
-register_inferior_data (void)
-{
- return register_inferior_data_with_cleanup (NULL);
-}
-
-static void
-inferior_alloc_data (struct inferior *inf)
-{
- gdb_assert (inf->data == NULL);
- inf->num_data = inferior_data_registry.num_registrations;
- inf->data = XCALLOC (inf->num_data, void *);
-}
-
-static void
-inferior_free_data (struct inferior *inf)
-{
- gdb_assert (inf->data != NULL);
- clear_inferior_data (inf);
- xfree (inf->data);
- inf->data = NULL;
-}
-
-void
-clear_inferior_data (struct inferior *inf)
-{
- struct inferior_data_registration *registration;
- int i;
-
- gdb_assert (inf->data != NULL);
-
- for (registration = inferior_data_registry.registrations, i = 0;
- i < inf->num_data;
- registration = registration->next, i++)
- if (inf->data[i] != NULL && registration->data->cleanup)
- registration->data->cleanup (inf, inf->data[i]);
-
- memset (inf->data, 0, inf->num_data * sizeof (void *));
-}
-
-void
-set_inferior_data (struct inferior *inf,
- const struct inferior_data *data,
- void *value)
-{
- gdb_assert (data->index < inf->num_data);
- inf->data[data->index] = value;
-}
-
-void *
-inferior_data (struct inferior *inf, const struct inferior_data *data)
-{
- gdb_assert (data->index < inf->num_data);
- return inf->data[data->index];
-}
-
void
initialize_inferiors (void)
{