This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [commit] remote: make the whole connection setup exception safe
- From: Pedro Alves <pedro at codesourcery dot com>
- To: gdb-patches at sourceware dot org
- Date: Fri, 10 Oct 2008 15:53:57 +0100
- Subject: Re: [commit] remote: make the whole connection setup exception safe
- References: <200810090429.45346.pedro@codesourcery.com>
Sorry, this broke `target extended-remote' if the stub reports that
it isn't controlling any process yet (gdbserver --multi). I missed
that there's a return statement in the middle of remote_start_remote,
which makes us not send '!' in that case.
remote_start_remote:
if (rs->buf[0] == 'W' || rs->buf[0] == 'X')
{
if (args->extended_p)
{
/* We're connected, but not running. Drop out before we
call start_remote. */
target_mark_exited (args->target);
return;
}
Fixed by just sending '!' earlier, like below. Checked in.
We should have a test for extended/persistent connections. Let me
cook something up.
--
Pedro Alves
2008-10-10 Pedro Alves <pedro@codesourcery.com>
gdb/
* remote.c (remote_start_remote): Always tell the stub if we're in
extended-remote.
---
gdb/remote.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
Index: src/gdb/remote.c
===================================================================
--- src.orig/gdb/remote.c 2008-10-09 15:57:48.000000000 +0100
+++ src/gdb/remote.c 2008-10-10 14:58:30.000000000 +0100
@@ -2419,6 +2419,13 @@ remote_start_remote (struct ui_out *uiou
rs->noack_mode = 1;
}
+ if (args->extended_p)
+ {
+ /* Tell the remote that we are using the extended protocol. */
+ putpkt ("!");
+ getpkt (&rs->buf, &rs->buf_size, 0);
+ }
+
/* Next, if the target can specify a description, read it. We do
this before anything involving memory or registers. */
target_find_description ();
@@ -2482,13 +2489,6 @@ remote_start_remote (struct ui_out *uiou
immediate_quit--;
start_remote (args->from_tty); /* Initialize gdb process mechanisms. */
- if (args->extended_p)
- {
- /* Tell the remote that we are using the extended protocol. */
- putpkt ("!");
- getpkt (&rs->buf, &rs->buf_size, 0);
- }
-
/* If we connected to a live target, do some additional setup. */
if (target_has_execution)
{