convert to_disconnect
authorTom Tromey <tromey@redhat.com>
Fri, 20 Dec 2013 17:30:13 +0000 (10:30 -0700)
committerTom Tromey <tromey@redhat.com>
Wed, 19 Feb 2014 14:48:40 +0000 (07:48 -0700)
2014-02-19  Tom Tromey  <tromey@redhat.com>

* target-delegates.c: Rebuild.
* target.c (target_disconnect): Unconditionally delegate.
* target.h (struct target_ops) <to_disconnect>: Use
TARGET_DEFAULT_NORETURN.

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

index aa699ba..18792c6 100644 (file)
@@ -1,5 +1,12 @@
 2014-02-19  Tom Tromey  <tromey@redhat.com>
 
+       * target-delegates.c: Rebuild.
+       * target.c (target_disconnect): Unconditionally delegate.
+       * target.h (struct target_ops) <to_disconnect>: Use
+       TARGET_DEFAULT_NORETURN.
+
+2014-02-19  Tom Tromey  <tromey@redhat.com>
+
        * record.c (record_stop): Unconditionally delegate.
        * target-delegates.c: Rebuild.
        * target.c (target_stop_recording): Unconditionally delegate.
index 4b90a2f..1565c78 100644 (file)
@@ -35,6 +35,19 @@ tdefault_detach (struct target_ops *self, const char *arg1, int arg2)
 }
 
 static void
+delegate_disconnect (struct target_ops *self, char *arg1, int arg2)
+{
+  self = self->beneath;
+  self->to_disconnect (self, arg1, arg2);
+}
+
+static void
+tdefault_disconnect (struct target_ops *self, char *arg1, int arg2)
+{
+  tcomplain ();
+}
+
+static void
 delegate_resume (struct target_ops *self, ptid_t arg1, int arg2, enum gdb_signal arg3)
 {
   self = self->beneath;
@@ -1542,6 +1555,8 @@ install_delegators (struct target_ops *ops)
     ops->to_post_attach = delegate_post_attach;
   if (ops->to_detach == NULL)
     ops->to_detach = delegate_detach;
+  if (ops->to_disconnect == NULL)
+    ops->to_disconnect = delegate_disconnect;
   if (ops->to_resume == NULL)
     ops->to_resume = delegate_resume;
   if (ops->to_wait == NULL)
@@ -1800,6 +1815,7 @@ install_dummy_methods (struct target_ops *ops)
   ops->to_attach = find_default_attach;
   ops->to_post_attach = tdefault_post_attach;
   ops->to_detach = tdefault_detach;
+  ops->to_disconnect = tdefault_disconnect;
   ops->to_resume = tdefault_resume;
   ops->to_wait = tdefault_wait;
   ops->to_fetch_registers = tdefault_fetch_registers;
index ef7374e..bf93220 100644 (file)
@@ -2470,24 +2470,15 @@ target_detach (const char *args, int from_tty)
 void
 target_disconnect (char *args, int from_tty)
 {
-  struct target_ops *t;
-
   /* If we're in breakpoints-always-inserted mode or if breakpoints
      are global across processes, we have to remove them before
      disconnecting.  */
   remove_breakpoints ();
 
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    if (t->to_disconnect != NULL)
-       {
-         if (targetdebug)
-           fprintf_unfiltered (gdb_stdlog, "target_disconnect (%s, %d)\n",
-                               args, from_tty);
-         t->to_disconnect (t, args, from_tty);
-         return;
-       }
-
-  tcomplain ();
+  if (targetdebug)
+    fprintf_unfiltered (gdb_stdlog, "target_disconnect (%s, %d)\n",
+                       args, from_tty);
+  current_target.to_disconnect (&current_target, args, from_tty);
 }
 
 ptid_t
index 1437cc4..1ceb74d 100644 (file)
@@ -409,7 +409,8 @@ struct target_ops
       TARGET_DEFAULT_IGNORE ();
     void (*to_detach) (struct target_ops *ops, const char *, int)
       TARGET_DEFAULT_IGNORE ();
-    void (*to_disconnect) (struct target_ops *, char *, int);
+    void (*to_disconnect) (struct target_ops *, char *, int)
+      TARGET_DEFAULT_NORETURN (tcomplain ());
     void (*to_resume) (struct target_ops *, ptid_t, int, enum gdb_signal)
       TARGET_DEFAULT_NORETURN (noprocess ());
     ptid_t (*to_wait) (struct target_ops *,