aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2006-05-05 20:08:45 +0000
committerDaniel Jacobowitz <drow@false.org>2006-05-05 20:08:45 +0000
commit597320e75bbd31d67bdd1a460577a5e8b519a048 (patch)
tree4c9623cb232b4865817e6a1290d03d0bb34e3d37
parent1f3c39b9e611c663b15240fb09f738b5bee12c21 (diff)
downloadgdb-597320e75bbd31d67bdd1a460577a5e8b519a048.zip
gdb-597320e75bbd31d67bdd1a460577a5e8b519a048.tar.gz
gdb-597320e75bbd31d67bdd1a460577a5e8b519a048.tar.bz2
* remote.c (remote_disconnect): Add TARGET argument.
* target.c (debug_to_disconnect): Delete. (update_current_target): Do not inherit to_disconnect. (target_disconnect): Search for a target to implement to_disconnect. (setup_target_debug): Do not reference to_disconnect. * target.h (struct target_ops): Add target argument to to_disconnect.
-rw-r--r--gdb/ChangeLog10
-rw-r--r--gdb/remote.c2
-rw-r--r--gdb/target.c32
-rw-r--r--gdb/target.h2
4 files changed, 26 insertions, 20 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 7b146df..f3b1b23 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,13 @@
+2006-05-05 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * remote.c (remote_disconnect): Add TARGET argument.
+ * target.c (debug_to_disconnect): Delete.
+ (update_current_target): Do not inherit to_disconnect.
+ (target_disconnect): Search for a target to implement to_disconnect.
+ (setup_target_debug): Do not reference to_disconnect.
+ * target.h (struct target_ops): Add target argument to
+ to_disconnect.
+
2006-05-06 Fred Fish <fnf@specifix.com>
* mips-tdep.c (mips_o64_push_dummy_call): Left shift big endian
diff --git a/gdb/remote.c b/gdb/remote.c
index d1ffdb5..c6ed900 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -2187,7 +2187,7 @@ remote_detach (char *args, int from_tty)
/* Same as remote_detach, but don't send the "D" packet; just disconnect. */
static void
-remote_disconnect (char *args, int from_tty)
+remote_disconnect (struct target_ops *target, char *args, int from_tty)
{
if (args)
error (_("Argument given to \"detach\" when remotely debugging."));
diff --git a/gdb/target.c b/gdb/target.c
index 52e4527..bcb47de 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -97,8 +97,6 @@ static void debug_to_attach (char *, int);
static void debug_to_detach (char *, int);
-static void debug_to_disconnect (char *, int);
-
static void debug_to_resume (ptid_t, int, enum target_signal);
static ptid_t debug_to_wait (ptid_t, struct target_waitstatus *);
@@ -388,7 +386,7 @@ update_current_target (void)
INHERIT (to_attach, t);
INHERIT (to_post_attach, t);
INHERIT (to_detach, t);
- INHERIT (to_disconnect, t);
+ /* Do not inherit to_disconnect. */
INHERIT (to_resume, t);
INHERIT (to_wait, t);
INHERIT (to_fetch_registers, t);
@@ -483,9 +481,6 @@ update_current_target (void)
de_fault (to_detach,
(void (*) (char *, int))
target_ignore);
- de_fault (to_disconnect,
- (void (*) (char *, int))
- tcomplain);
de_fault (to_resume,
(void (*) (ptid_t, int, enum target_signal))
noprocess);
@@ -1490,7 +1485,19 @@ target_detach (char *args, int from_tty)
void
target_disconnect (char *args, int from_tty)
{
- (current_target.to_disconnect) (args, from_tty);
+ struct target_ops *t;
+
+ 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 ();
}
int
@@ -1907,15 +1914,6 @@ debug_to_detach (char *args, int from_tty)
}
static void
-debug_to_disconnect (char *args, int from_tty)
-{
- debug_target.to_disconnect (args, from_tty);
-
- fprintf_unfiltered (gdb_stdlog, "target_disconnect (%s, %d)\n",
- args, from_tty);
-}
-
-static void
debug_to_resume (ptid_t ptid, int step, enum target_signal siggnal)
{
debug_target.to_resume (ptid, step, siggnal);
@@ -2521,7 +2519,6 @@ setup_target_debug (void)
current_target.to_attach = debug_to_attach;
current_target.to_post_attach = debug_to_post_attach;
current_target.to_detach = debug_to_detach;
- current_target.to_disconnect = debug_to_disconnect;
current_target.to_resume = debug_to_resume;
current_target.to_wait = debug_to_wait;
current_target.to_fetch_registers = debug_to_fetch_registers;
@@ -2569,7 +2566,6 @@ setup_target_debug (void)
current_target.to_enable_exception_callback = debug_to_enable_exception_callback;
current_target.to_get_current_exception_event = debug_to_get_current_exception_event;
current_target.to_pid_to_exec_file = debug_to_pid_to_exec_file;
-
}
diff --git a/gdb/target.h b/gdb/target.h
index 7decfd7..bf4917f 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -303,7 +303,7 @@ struct target_ops
void (*to_attach) (char *, int);
void (*to_post_attach) (int);
void (*to_detach) (char *, int);
- void (*to_disconnect) (char *, int);
+ void (*to_disconnect) (struct target_ops *, char *, int);
void (*to_resume) (ptid_t, int, enum target_signal);
ptid_t (*to_wait) (ptid_t, struct target_waitstatus *);
void (*to_fetch_registers) (int);