diff options
author | Tom Tromey <tromey@redhat.com> | 2013-12-18 14:40:23 -0700 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2014-02-19 07:48:12 -0700 |
commit | 8d65703517069975d781d7957d90a9de3ce94e5d (patch) | |
tree | 338bab9d0dbba3c4411b4d50808418fe8d423453 /gdb | |
parent | 098dba18ee55150df53f3a6846de4dd9c7564088 (diff) | |
download | gdb-8d65703517069975d781d7957d90a9de3ce94e5d.zip gdb-8d65703517069975d781d7957d90a9de3ce94e5d.tar.gz gdb-8d65703517069975d781d7957d90a9de3ce94e5d.tar.bz2 |
convert to_mourn_inferior
2014-02-19 Tom Tromey <tromey@redhat.com>
* target-delegates.c: Rebuild.
* target.c (default_mourn_inferior): New function.
(target_mourn_inferior): Unconditionally delegate.
* target.h (struct target_ops) <to_mourn_inferior>: Use
TARGET_DEFAULT_FUNC.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/target-delegates.c | 10 | ||||
-rw-r--r-- | gdb/target.c | 36 | ||||
-rw-r--r-- | gdb/target.h | 3 |
4 files changed, 36 insertions, 21 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2e28138..38eaf10 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,6 +1,14 @@ 2014-02-19 Tom Tromey <tromey@redhat.com> * target-delegates.c: Rebuild. + * target.c (default_mourn_inferior): New function. + (target_mourn_inferior): Unconditionally delegate. + * target.h (struct target_ops) <to_mourn_inferior>: Use + TARGET_DEFAULT_FUNC. + +2014-02-19 Tom Tromey <tromey@redhat.com> + + * target-delegates.c: Rebuild. * target.c (default_follow_fork): New function. (target_follow_fork): Unconditionally delegate. * target.h (struct target_ops) <to_follow_fork>: Use diff --git a/gdb/target-delegates.c b/gdb/target-delegates.c index ebecbeb..f3000b7 100644 --- a/gdb/target-delegates.c +++ b/gdb/target-delegates.c @@ -510,6 +510,13 @@ tdefault_has_exited (struct target_ops *self, int arg1, int arg2, int *arg3) return 0; } +static void +delegate_mourn_inferior (struct target_ops *self) +{ + self = self->beneath; + self->to_mourn_inferior (self); +} + static char * delegate_extra_thread_info (struct target_ops *self, struct thread_info *arg1) { @@ -1247,6 +1254,8 @@ install_delegators (struct target_ops *ops) ops->to_set_syscall_catchpoint = delegate_set_syscall_catchpoint; if (ops->to_has_exited == NULL) ops->to_has_exited = delegate_has_exited; + if (ops->to_mourn_inferior == NULL) + ops->to_mourn_inferior = delegate_mourn_inferior; if (ops->to_extra_thread_info == NULL) ops->to_extra_thread_info = delegate_extra_thread_info; if (ops->to_thread_name == NULL) @@ -1403,6 +1412,7 @@ install_dummy_methods (struct target_ops *ops) ops->to_remove_exec_catchpoint = tdefault_remove_exec_catchpoint; ops->to_set_syscall_catchpoint = tdefault_set_syscall_catchpoint; ops->to_has_exited = tdefault_has_exited; + ops->to_mourn_inferior = default_mourn_inferior; ops->to_extra_thread_info = tdefault_extra_thread_info; ops->to_thread_name = tdefault_thread_name; ops->to_stop = tdefault_stop; diff --git a/gdb/target.c b/gdb/target.c index 9afb317..13ec67d 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -63,6 +63,8 @@ static ptid_t default_get_ada_task_ptid (struct target_ops *self, static int default_follow_fork (struct target_ops *self, int follow_child, int detach_fork); +static void default_mourn_inferior (struct target_ops *self); + static void tcomplain (void) ATTRIBUTE_NORETURN; static int nomemory (CORE_ADDR, char *, int, int, struct target_ops *); @@ -2660,30 +2662,24 @@ target_follow_fork (int follow_child, int detach_fork) return retval; } +static void +default_mourn_inferior (struct target_ops *self) +{ + internal_error (__FILE__, __LINE__, + _("could not find a target to follow mourn inferior")); +} + void target_mourn_inferior (void) { - struct target_ops *t; - - for (t = current_target.beneath; t != NULL; t = t->beneath) - { - if (t->to_mourn_inferior != NULL) - { - t->to_mourn_inferior (t); - if (targetdebug) - fprintf_unfiltered (gdb_stdlog, "target_mourn_inferior ()\n"); - - /* We no longer need to keep handles on any of the object files. - Make sure to release them to avoid unnecessarily locking any - of them while we're not actually debugging. */ - bfd_cache_close_all (); - - return; - } - } + current_target.to_mourn_inferior (¤t_target); + if (targetdebug) + fprintf_unfiltered (gdb_stdlog, "target_mourn_inferior ()\n"); - internal_error (__FILE__, __LINE__, - _("could not find a target to follow mourn inferior")); + /* We no longer need to keep handles on any of the object files. + Make sure to release them to avoid unnecessarily locking any + of them while we're not actually debugging. */ + bfd_cache_close_all (); } /* Look for a target which can describe architectural features, starting diff --git a/gdb/target.h b/gdb/target.h index a35f7e6..884abf1 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -544,7 +544,8 @@ struct target_ops TARGET_DEFAULT_RETURN (1); int (*to_has_exited) (struct target_ops *, int, int, int *) TARGET_DEFAULT_RETURN (0); - void (*to_mourn_inferior) (struct target_ops *); + void (*to_mourn_inferior) (struct target_ops *) + TARGET_DEFAULT_FUNC (default_mourn_inferior); int (*to_can_run) (struct target_ops *); /* Documentation of this routine is provided with the corresponding |