From 8d65703517069975d781d7957d90a9de3ce94e5d Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 18 Dec 2013 14:40:23 -0700 Subject: [PATCH] convert to_mourn_inferior 2014-02-19 Tom Tromey * target-delegates.c: Rebuild. * target.c (default_mourn_inferior): New function. (target_mourn_inferior): Unconditionally delegate. * target.h (struct target_ops) : Use TARGET_DEFAULT_FUNC. --- gdb/ChangeLog | 8 ++++++++ gdb/target-delegates.c | 10 ++++++++++ gdb/target.c | 36 ++++++++++++++++-------------------- gdb/target.h | 3 ++- 4 files changed, 36 insertions(+), 21 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2e28138f4c0..38eaf10c61b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2014-02-19 Tom Tromey + + * target-delegates.c: Rebuild. + * target.c (default_mourn_inferior): New function. + (target_mourn_inferior): Unconditionally delegate. + * target.h (struct target_ops) : Use + TARGET_DEFAULT_FUNC. + 2014-02-19 Tom Tromey * target-delegates.c: Rebuild. diff --git a/gdb/target-delegates.c b/gdb/target-delegates.c index ebecbeb0c7b..f3000b72c6c 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 9afb317a7e3..13ec67d071a 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 a35f7e6341f..884abf1ecac 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 -- 2.30.2