From 09da0d0ae79ea019e04e5a44b5095f5addecaa24 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Fri, 13 Dec 2013 13:33:08 -0700 Subject: [PATCH] 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. --- gdb/ChangeLog | 8 ++++++++ gdb/target-delegates.c | 15 +++++++++++++++ gdb/target.c | 19 ++++--------------- gdb/target.h | 3 ++- 4 files changed, 29 insertions(+), 16 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5842158..62c429d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,13 @@ 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) : Add argument. (target_augmented_libraries_svr4_read): Add argument. diff --git a/gdb/target-delegates.c b/gdb/target-delegates.c index 0685729..f3b8b4d 100644 --- a/gdb/target-delegates.c +++ b/gdb/target-delegates.c @@ -4,6 +4,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) { self = self->beneath; @@ -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 44ffe47..5bab9cf 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 40e7688..4af0c88 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 ()); -- 2.7.4