qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] Fix to 'gdb detach' stub
@ 2010-02-22 20:50 Daniel Gutson
  2010-02-22 21:22 ` [Qemu-devel] " Daniel Gutson
  0 siblings, 1 reply; 3+ messages in thread
From: Daniel Gutson @ 2010-02-22 20:50 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 682 bytes --]

With this patch, 'gdb detach' correctly resumes the inferior execution 
after detaching the debugger.
The bug was caused by qemu asking gdb to execute a syscall (isatty) 
after the detach, and then waiting (forever) for the reply. I fixed this 
by properly setting gdb_syscall_mode appropriately in the 'detach' 
packet handling, so subsequent syscalls are solved by qemu rather than gdb.

I tested this manually.

Please commit it for me if accepted, since I don't have write privileges.

Thanks!
	Daniel.

2010-02-22  Daniel Gutson  <dgutson@codesourcery.com>

	* gdbstub.c (gdb_handle_packet): set
	gdb_syscall_mode properly.

-- 
Daniel Gutson
CodeSourcery
www.codesourcery.com

[-- Attachment #2: gdbstub.patch --]
[-- Type: text/x-diff, Size: 376 bytes --]

diff --git a/gdbstub.c b/gdbstub.c
index 91c5f68..92bb36d 100644
--- a/gdbstub.c
+++ b/gdbstub.c
@@ -1848,6 +1848,7 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf)
     case 'D':
         /* Detach packet */
         gdb_breakpoint_remove_all();
+	gdb_syscall_mode = GDB_SYS_DISABLED;
         gdb_continue(s);
         put_packet(s, "OK");
         break;

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [Qemu-devel] Re: [PATCH] Fix to 'gdb detach' stub
  2010-02-22 20:50 [Qemu-devel] [PATCH] Fix to 'gdb detach' stub Daniel Gutson
@ 2010-02-22 21:22 ` Daniel Gutson
  2010-02-23 10:30   ` Kevin Wolf
  0 siblings, 1 reply; 3+ messages in thread
From: Daniel Gutson @ 2010-02-22 21:22 UTC (permalink / raw)
  To: qemu-devel

[Re-done with git.]
With this patch, 'gdb detach' correctly resumes the inferior execution 
after detaching the debugger.
The bug was caused by qemu asking gdb to execute a syscall (isatty) 
after the detach, and then waiting (forever) for the reply. I fixed this 
by properly setting gdb_syscall_mode appropriately in the 'detach' 
packet handling, so subsequent syscalls are solved by qemu rather than gdb.

Signed-off-by: Daniel Gutson <dgutson@codesourcery.com>
---
  gdbstub.c |    1 +
  1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/gdbstub.c b/gdbstub.c
index 91c5f68..92bb36d 100644
--- a/gdbstub.c
+++ b/gdbstub.c
@@ -1848,6 +1848,7 @@ static int gdb_handle_packet(GDBState *s, const 
char *line_buf)
      case 'D':
          /* Detach packet */
          gdb_breakpoint_remove_all();
+       gdb_syscall_mode = GDB_SYS_DISABLED;
          gdb_continue(s);
          put_packet(s, "OK");
          break;
-- 
1.6.2.4

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] Re: [PATCH] Fix to 'gdb detach' stub
  2010-02-22 21:22 ` [Qemu-devel] " Daniel Gutson
@ 2010-02-23 10:30   ` Kevin Wolf
  0 siblings, 0 replies; 3+ messages in thread
From: Kevin Wolf @ 2010-02-23 10:30 UTC (permalink / raw)
  To: Daniel Gutson; +Cc: qemu-devel

Am 22.02.2010 22:22, schrieb Daniel Gutson:
> [Re-done with git.]
> With this patch, 'gdb detach' correctly resumes the inferior execution 
> after detaching the debugger.
> The bug was caused by qemu asking gdb to execute a syscall (isatty) 
> after the detach, and then waiting (forever) for the reply. I fixed this 
> by properly setting gdb_syscall_mode appropriately in the 'detach' 
> packet handling, so subsequent syscalls are solved by qemu rather than gdb.
> 
> Signed-off-by: Daniel Gutson <dgutson@codesourcery.com>
> ---
>   gdbstub.c |    1 +
>   1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/gdbstub.c b/gdbstub.c
> index 91c5f68..92bb36d 100644
> --- a/gdbstub.c
> +++ b/gdbstub.c
> @@ -1848,6 +1848,7 @@ static int gdb_handle_packet(GDBState *s, const 
> char *line_buf)

This line wrap corrupts the patch. Have you tried git send-email?

>       case 'D':
>           /* Detach packet */
>           gdb_breakpoint_remove_all();
> +       gdb_syscall_mode = GDB_SYS_DISABLED;

And indentation is off here (qemu uses four spaces, no tabs).

Kevin

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2010-02-23 10:31 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-22 20:50 [Qemu-devel] [PATCH] Fix to 'gdb detach' stub Daniel Gutson
2010-02-22 21:22 ` [Qemu-devel] " Daniel Gutson
2010-02-23 10:30   ` Kevin Wolf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).