diff options
author | Daniel Jacobowitz <drow@false.org> | 2006-05-05 20:08:45 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2006-05-05 20:08:45 +0000 |
commit | 597320e75bbd31d67bdd1a460577a5e8b519a048 (patch) | |
tree | 4c9623cb232b4865817e6a1290d03d0bb34e3d37 | |
parent | 1f3c39b9e611c663b15240fb09f738b5bee12c21 (diff) | |
download | gdb-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/ChangeLog | 10 | ||||
-rw-r--r-- | gdb/remote.c | 2 | ||||
-rw-r--r-- | gdb/target.c | 32 | ||||
-rw-r--r-- | gdb/target.h | 2 |
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); |