[Qemu-devel] [PATCH] gdbstub: Send a reply to the vKill packet.

Sandra Loosemore posted 1 patch 6 years, 8 months ago
Test docker-mingw@fedora passed
Test asan passed
Test checkpatch passed
Test docker-clang@ubuntu passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/1550008033-26540-1-git-send-email-sandra@codesourcery.com
gdbstub.c | 1 +
1 file changed, 1 insertion(+)
[Qemu-devel] [PATCH] gdbstub: Send a reply to the vKill packet.
Posted by Sandra Loosemore 6 years, 8 months ago
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


Re: [Qemu-devel] [PATCH] gdbstub: Send a reply to the vKill packet.
Posted by Peter Maydell 6 years, 8 months ago
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

Re: [Qemu-devel] [PATCH] gdbstub: Send a reply to the vKill packet.
Posted by Sandra Loosemore 6 years, 8 months ago
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

Re: [Qemu-devel] [PATCH] gdbstub: Send a reply to the vKill packet.
Posted by Aleksandar Markovic 6 years, 2 months ago
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
>