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(+)
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 {
--
2.8.1
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 >
© 2016 - 2025 Red Hat, Inc.