From: Tom Tromey Date: Fri, 13 Dec 2013 20:33:08 +0000 (-0700) Subject: convert to_detach X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=09da0d0ae79ea019e04e5a44b5095f5addecaa24;p=binutils-gdb.git convert to_detach 2014-02-19 Tom Tromey * target-delegates.c: Rebuild. * target.c (target_detach): Unconditionally delegate. (init_dummy_target): Don't initialize to_detach. * target.h (struct target_ops) : Use TARGET_DEFAULT_IGNORE. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5842158c4e3..62c429d5f12 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2014-02-19 Tom Tromey + + * target-delegates.c: Rebuild. + * target.c (target_detach): Unconditionally delegate. + (init_dummy_target): Don't initialize to_detach. + * target.h (struct target_ops) : Use + TARGET_DEFAULT_IGNORE. + 2014-02-19 Tom Tromey * target.h (struct target_ops) : diff --git a/gdb/target-delegates.c b/gdb/target-delegates.c index 06857299fdf..f3b8b4d0766 100644 --- a/gdb/target-delegates.c +++ b/gdb/target-delegates.c @@ -3,6 +3,18 @@ /* To regenerate this file, run:*/ /* make-target-delegates target.h > target-delegates.c */ +static void +delegate_detach (struct target_ops *self, const char *arg1, int arg2) +{ + self = self->beneath; + self->to_detach (self, arg1, arg2); +} + +static void +tdefault_detach (struct target_ops *self, const char *arg1, int arg2) +{ +} + static void delegate_resume (struct target_ops *self, ptid_t arg1, int arg2, enum gdb_signal arg3) { @@ -138,6 +150,8 @@ tdefault_supports_btrace (struct target_ops *self) static void install_delegators (struct target_ops *ops) { + if (ops->to_detach == NULL) + ops->to_detach = delegate_detach; if (ops->to_resume == NULL) ops->to_resume = delegate_resume; if (ops->to_wait == NULL) @@ -167,6 +181,7 @@ install_delegators (struct target_ops *ops) static void install_dummy_methods (struct target_ops *ops) { + ops->to_detach = tdefault_detach; ops->to_resume = tdefault_resume; ops->to_wait = tdefault_wait; ops->to_store_registers = tdefault_store_registers; diff --git a/gdb/target.c b/gdb/target.c index 44ffe4762cf..5bab9cf00f7 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -2690,19 +2690,10 @@ target_detach (const char *args, int from_tty) prepare_for_detach (); - for (t = current_target.beneath; t != NULL; t = t->beneath) - { - if (t->to_detach != NULL) - { - t->to_detach (t, args, from_tty); - if (targetdebug) - fprintf_unfiltered (gdb_stdlog, "target_detach (%s, %d)\n", - args, from_tty); - return; - } - } - - internal_error (__FILE__, __LINE__, _("could not find a target to detach")); + current_target.to_detach (¤t_target, args, from_tty); + if (targetdebug) + fprintf_unfiltered (gdb_stdlog, "target_detach (%s, %d)\n", + args, from_tty); } void @@ -3816,8 +3807,6 @@ init_dummy_target (void) dummy_target.to_longname = "None"; dummy_target.to_doc = ""; dummy_target.to_attach = find_default_attach; - dummy_target.to_detach = - (void (*)(struct target_ops *, const char *, int))target_ignore; dummy_target.to_create_inferior = find_default_create_inferior; dummy_target.to_supports_non_stop = find_default_supports_non_stop; dummy_target.to_supports_disable_randomization diff --git a/gdb/target.h b/gdb/target.h index 40e7688b618..4af0c881aa8 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -405,7 +405,8 @@ struct target_ops void (*to_close) (struct target_ops *); void (*to_attach) (struct target_ops *ops, char *, int); void (*to_post_attach) (struct target_ops *, int); - void (*to_detach) (struct target_ops *ops, const char *, int); + void (*to_detach) (struct target_ops *ops, const char *, int) + TARGET_DEFAULT_IGNORE (); void (*to_disconnect) (struct target_ops *, char *, int); void (*to_resume) (struct target_ops *, ptid_t, int, enum gdb_signal) TARGET_DEFAULT_NORETURN (noprocess ());