Message ID | 1550008033-26540-1-git-send-email-sandra@codesourcery.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | gdbstub: Send a reply to the vKill packet. | expand |
On Tue, 12 Feb 2019 at 21:52, Sandra Loosemore <sandra@codesourcery.com> wrote: > > Per the GDB remote protocol documentation > > https://sourceware.org/gdb/current/onlinedocs/gdb/Packets.html#index-vKill-packet > > the debug stub is expected to send a reply to the 'vKill' packet. At > least some versions of GDB crash if the gdb stub simply exits without > sending a reply. This patch fixes QEMU's gdb stub to conform to the > expected behavior. > > Note that QEMU's existing handling of the legacy 'k' packet is > correct: in that case GDB does not expect a reply, and QEMU does not > send one. > > Signed-off-by: Sandra Loosemore <sandra@codesourcery.com> Thanks, applied to target-arm.next. As an aside, do you know if there is any kind of test suite for the remote protocol that implementors of a debug stub can use to check that they're conforming to it? -- PMM
On 2/14/19 10:48 AM, Peter Maydell wrote: > On Tue, 12 Feb 2019 at 21:52, Sandra Loosemore <sandra@codesourcery.com> wrote: >> >> Per the GDB remote protocol documentation >> >> https://sourceware.org/gdb/current/onlinedocs/gdb/Packets.html#index-vKill-packet >> >> the debug stub is expected to send a reply to the 'vKill' packet. At >> least some versions of GDB crash if the gdb stub simply exits without >> sending a reply. This patch fixes QEMU's gdb stub to conform to the >> expected behavior. >> >> Note that QEMU's existing handling of the legacy 'k' packet is >> correct: in that case GDB does not expect a reply, and QEMU does not >> send one. >> >> Signed-off-by: Sandra Loosemore <sandra@codesourcery.com> > > Thanks, applied to target-arm.next. > > As an aside, do you know if there is any kind of test suite for > the remote protocol that implementors of a debug stub can use to > check that they're conforming to it? Well, I discovered this problem by running the GDB testsuite (using QEMU for nios2-elf target with the other target-specific patches I recently posted). I'm not sure if it's designed to exhaustively test the entire remote protocol, but it does a pretty good job of covering user-visible GDB features that depend on the remote target doing something reasonable, even if it's just saying "Huh? I don't know how to do that." :-) -Sandra
14.02.2019. 19.27, "Sandra Loosemore" <sandra@codesourcery.com> је написао/ла: > > On 2/14/19 10:48 AM, Peter Maydell wrote: >> >> On Tue, 12 Feb 2019 at 21:52, Sandra Loosemore <sandra@codesourcery.com> wrote: >>> >>> >>> Per the GDB remote protocol documentation >>> >>> https://sourceware.org/gdb/current/onlinedocs/gdb/Packets.html#index-vKill-packet >>> >>> the debug stub is expected to send a reply to the 'vKill' packet. At >>> least some versions of GDB crash if the gdb stub simply exits without >>> sending a reply. This patch fixes QEMU's gdb stub to conform to the >>> expected behavior. >>> >>> Note that QEMU's existing handling of the legacy 'k' packet is >>> correct: in that case GDB does not expect a reply, and QEMU does not >>> send one. >>> >>> Signed-off-by: Sandra Loosemore <sandra@codesourcery.com> >> >> >> Thanks, applied to target-arm.next. >> >> As an aside, do you know if there is any kind of test suite for >> the remote protocol that implementors of a debug stub can use to >> check that they're conforming to it? > > > Well, I discovered this problem by running the GDB testsuite (using QEMU for nios2-elf target with the other target-specific patches I recently posted). I'm not sure if it's designed to exhaustively test the entire remote protocol, but it does a pretty good job of covering user-visible GDB features that depend on the remote target doing something reasonable, even if it's just saying "Huh? I don't know how to do that." :-) > Debugging using gdb/qemu setups is fairly frequent use case and perhaps we should have a test module for interoperability of gdb and qemu, and also "make check-gdb". Thanks for pinpointing and fixing bugs in this area, Sandra! Aleksandar > -Sandra >
diff --git a/gdbstub.c b/gdbstub.c index 70cf330..eb129f6 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1363,6 +1363,7 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf) break; } else if (strncmp(p, "Kill;", 5) == 0) { /* Kill the target */ + put_packet(s, "OK"); error_report("QEMU: Terminated via GDBstub"); exit(0); } else {
Per the GDB remote protocol documentation https://sourceware.org/gdb/current/onlinedocs/gdb/Packets.html#index-vKill-packet the debug stub is expected to send a reply to the 'vKill' packet. At least some versions of GDB crash if the gdb stub simply exits without sending a reply. This patch fixes QEMU's gdb stub to conform to the expected behavior. Note that QEMU's existing handling of the legacy 'k' packet is correct: in that case GDB does not expect a reply, and QEMU does not send one. Signed-off-by: Sandra Loosemore <sandra@codesourcery.com> --- gdbstub.c | 1 + 1 file changed, 1 insertion(+)