convert to_attach
authorTom Tromey <tromey@redhat.com>
Fri, 13 Dec 2013 21:16:57 +0000 (14:16 -0700)
committerTom Tromey <tromey@redhat.com>
Wed, 19 Feb 2014 14:47:01 +0000 (07:47 -0700)
2014-02-19  Tom Tromey  <tromey@redhat.com>

* target-delegates.c: Rebuild.
* target.c (init_dummy_target): Don't initialize to_attach.
(target_attach): Unconditionally delegate.
* target.h (struct target_ops) <to_attach>: Use
TARGET_DEFAULT_FUNC.

gdb/ChangeLog
gdb/target-delegates.c
gdb/target.c
gdb/target.h

index 62c429d5f12a42efae4de4fbbdbdbae813262caf..06e26353cae9cb75cc5536911181d9d7017b08c2 100644 (file)
@@ -1,3 +1,11 @@
+2014-02-19  Tom Tromey  <tromey@redhat.com>
+
+       * target-delegates.c: Rebuild.
+       * target.c (init_dummy_target): Don't initialize to_attach.
+       (target_attach): Unconditionally delegate.
+       * target.h (struct target_ops) <to_attach>: Use
+       TARGET_DEFAULT_FUNC.
+
 2014-02-19  Tom Tromey  <tromey@redhat.com>
 
        * target-delegates.c: Rebuild.
index f3b8b4d0766fc4deead646107c17d2e039712a48..119d3ec8f5efa8b4b0f1b3f2e0f2e75342777824 100644 (file)
@@ -3,6 +3,13 @@
 
 /* To regenerate this file, run:*/
 /*      make-target-delegates target.h > target-delegates.c */
+static void
+delegate_attach (struct target_ops *self, char *arg1, int arg2)
+{
+  self = self->beneath;
+  self->to_attach (self, arg1, arg2);
+}
+
 static void
 delegate_detach (struct target_ops *self, const char *arg1, int arg2)
 {
@@ -150,6 +157,8 @@ tdefault_supports_btrace (struct target_ops *self)
 static void
 install_delegators (struct target_ops *ops)
 {
+  if (ops->to_attach == NULL)
+    ops->to_attach = delegate_attach;
   if (ops->to_detach == NULL)
     ops->to_detach = delegate_detach;
   if (ops->to_resume == NULL)
@@ -181,6 +190,7 @@ install_delegators (struct target_ops *ops)
 static void
 install_dummy_methods (struct target_ops *ops)
 {
+  ops->to_attach = find_default_attach;
   ops->to_detach = tdefault_detach;
   ops->to_resume = tdefault_resume;
   ops->to_wait = tdefault_wait;
index 5bab9cf00f786c422e7e80605cacd1a1c8e6139e..ba8ca23dc3681938a8a2a00015ad2e04c7fa6d8d 100644 (file)
@@ -3806,7 +3806,6 @@ init_dummy_target (void)
   dummy_target.to_shortname = "None";
   dummy_target.to_longname = "None";
   dummy_target.to_doc = "";
-  dummy_target.to_attach = find_default_attach;
   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
@@ -3853,22 +3852,10 @@ target_close (struct target_ops *targ)
 void
 target_attach (char *args, int from_tty)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    {
-      if (t->to_attach != NULL)        
-       {
-         t->to_attach (t, args, from_tty);
-         if (targetdebug)
-           fprintf_unfiltered (gdb_stdlog, "target_attach (%s, %d)\n",
-                               args, from_tty);
-         return;
-       }
-    }
-
-  internal_error (__FILE__, __LINE__,
-                 _("could not find a target to attach"));
+  current_target.to_attach (&current_target, args, from_tty);
+  if (targetdebug)
+    fprintf_unfiltered (gdb_stdlog, "target_attach (%s, %d)\n",
+                       args, from_tty);
 }
 
 int
index 4af0c881aa8864c0b28cb4f37bc8323b53a94bbb..b3f8a8e6a708a71d751e108d6d0b04814fd87714 100644 (file)
@@ -403,7 +403,8 @@ struct target_ops
        to xfree everything (including the "struct target_ops").  */
     void (*to_xclose) (struct target_ops *targ);
     void (*to_close) (struct target_ops *);
-    void (*to_attach) (struct target_ops *ops, char *, int);
+    void (*to_attach) (struct target_ops *ops, char *, int)
+      TARGET_DEFAULT_FUNC (find_default_attach);
     void (*to_post_attach) (struct target_ops *, int);
     void (*to_detach) (struct target_ops *ops, const char *, int)
       TARGET_DEFAULT_IGNORE ();