diff options
author | Daniel Jacobowitz <drow@false.org> | 2003-06-17 20:28:14 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2003-06-17 20:28:14 +0000 |
commit | 6ad8ae5c579e2e6198870b21d10459edba9457ca (patch) | |
tree | 9d71b7266e55d4d44bf3a28736465e9f2d7132bc /gdb/remote.c | |
parent | 687595f963bb32dd89d85bdf91e7ca6aa3187502 (diff) | |
download | gdb-6ad8ae5c579e2e6198870b21d10459edba9457ca.zip gdb-6ad8ae5c579e2e6198870b21d10459edba9457ca.tar.gz gdb-6ad8ae5c579e2e6198870b21d10459edba9457ca.tar.bz2 |
gdb/
* NEWS: Mention gdbserver detach change and "disconnect" command.
* infcmd.c (disconnect_command): New function.
(_initialize_infcmd): Add ``disconnect'' command.
* remote.c (remote_async_detach): Delete.
(remote_detach): Merge remote_async_detach.
(remote_disconnect): New.
(init_remote_ops): Set to_disconnect.
(init_remote_cisco_ops): Likewise.
(init_remote_async_ops): Likewise. Use remote_detach.
* target.c (cleanup_target): Default to_disconnect.
(update_current_target): Inherit to_disconnect.
(target_disconnect, debug_to_disconnect): New functions.
(setup_target_debug): Set to_disconnect.
* target.h (struct target_ops): Add to_disconnect.
(target_disconnect): Add prototype.
gdbserver/
* linux-low.c: Move comment to linux_thread_alive where it belonged.
(linux_detach_one_process, linux_detach): New functions.
(linux_target_ops): Add linux_detach.
* server.c (main): Handle 'D' packet.
* target.h (struct target_ops): Add "detach" member.
(detach_inferior): Define.
mi/
* mi-cmds.c (mi_cmds): Add "-target-disconnect".
Diffstat (limited to 'gdb/remote.c')
-rw-r--r-- | gdb/remote.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/gdb/remote.c b/gdb/remote.c index 3de323b..492661b 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -126,7 +126,6 @@ static void remote_async_kill (void); static int tohex (int nib); static void remote_detach (char *args, int from_tty); -static void remote_async_detach (char *args, int from_tty); static void remote_interrupt (int signo); @@ -2421,15 +2420,19 @@ remote_detach (char *args, int from_tty) strcpy (buf, "D"); remote_send (buf, (rs->remote_packet_size)); + /* Unregister the file descriptor from the event loop. */ + if (target_is_async_p ()) + serial_async (remote_desc, NULL, 0); + target_mourn_inferior (); if (from_tty) puts_filtered ("Ending remote debugging.\n"); - } -/* Same as remote_detach, but with async support. */ +/* Same as remote_detach, but don't send the "D" packet; just disconnect. */ + static void -remote_async_detach (char *args, int from_tty) +remote_disconnect (char *args, int from_tty) { struct remote_state *rs = get_remote_state (); char *buf = alloca (rs->remote_packet_size); @@ -2437,10 +2440,6 @@ remote_async_detach (char *args, int from_tty) if (args) error ("Argument given to \"detach\" when remotely debugging."); - /* Tell the remote target to detach. */ - strcpy (buf, "D"); - remote_send (buf, (rs->remote_packet_size)); - /* Unregister the file descriptor from the event loop. */ if (target_is_async_p ()) serial_async (remote_desc, NULL, 0); @@ -5438,6 +5437,7 @@ Specify the serial device it is connected to\n\ remote_ops.to_open = remote_open; remote_ops.to_close = remote_close; remote_ops.to_detach = remote_detach; + remote_ops.to_disconnect = remote_disconnect; remote_ops.to_resume = remote_resume; remote_ops.to_wait = remote_wait; remote_ops.to_fetch_registers = remote_fetch_registers; @@ -5858,6 +5858,7 @@ Specify the serial device it is connected to (e.g. host:2020)."; remote_cisco_ops.to_open = remote_cisco_open; remote_cisco_ops.to_close = remote_cisco_close; remote_cisco_ops.to_detach = remote_detach; + remote_cisco_ops.to_disconnect = remote_disconnect; remote_cisco_ops.to_resume = remote_resume; remote_cisco_ops.to_wait = remote_cisco_wait; remote_cisco_ops.to_fetch_registers = remote_fetch_registers; @@ -5953,7 +5954,8 @@ init_remote_async_ops (void) Specify the serial device it is connected to (e.g. /dev/ttya)."; remote_async_ops.to_open = remote_async_open; remote_async_ops.to_close = remote_close; - remote_async_ops.to_detach = remote_async_detach; + remote_async_ops.to_detach = remote_detach; + remote_async_ops.to_disconnect = remote_disconnect; remote_async_ops.to_resume = remote_async_resume; remote_async_ops.to_wait = remote_async_wait; remote_async_ops.to_fetch_registers = remote_fetch_registers; |