Message ID | 4B82F59D.8050204@codesourcery.com |
---|---|
State | New |
Headers | show |
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
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");
[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(-) break;