[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v1 5/5] gdbstub: revert to previous set_reg beha
From: |
Alex Bennée |
Subject: |
Re: [Qemu-devel] [PATCH v1 5/5] gdbstub: revert to previous set_reg behaviour |
Date: |
Wed, 10 Jul 2019 10:30:23 +0100 |
User-agent: |
mu4e 1.3.2; emacs 26.1 |
Aleksandar Markovic <address@hidden> writes:
> On Jul 5, 2019 6:08 PM, "Alex Bennée" <address@hidden> wrote:
>>
>> The refactoring of handle_set_reg missed the fact we previously had
>> responded with an empty packet when we were not using XML based
>> protocols. This broke the fallback behaviour for architectures that
>> don't have registers defined in QEMU's gdb-xml directory.
>>
>> Revert to the previous behaviour and clean up the commentary for what
>> is going on.
>>
>> Fixes: 62b3320bddd
>> Signed-off-by: Alex Bennée <address@hidden>
>> Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
>> Cc: Jon Doron <address@hidden>
>> Cc: Mark Cave-Ayland <address@hidden>
>> ---
>
> Do you plan to integrate this patch in 4.1?
>
> Thanks, Aleksandar
Yes - I'm putting together a PR today.
>
>> gdbstub.c | 18 ++++++++++++------
>> 1 file changed, 12 insertions(+), 6 deletions(-)
>>
>> diff --git a/gdbstub.c b/gdbstub.c
>> index ea3349d1aa..b6df7ee25a 100644
>> --- a/gdbstub.c
>> +++ b/gdbstub.c
>> @@ -1669,12 +1669,23 @@ static void handle_remove_bp(GdbCmdContext
> *gdb_ctx, void *user_ctx)
>> put_packet(gdb_ctx->s, "E22");
>> }
>>
>> +/*
>> + * handle_set/get_reg
>> + *
>> + * Older gdb are really dumb, and don't use 'G/g' if 'P/p' is available.
>> + * This works, but can be very slow. Anything new enough to understand
>> + * XML also knows how to use this properly. However to use this we
>> + * need to define a local XML file as well as be talking to a
>> + * reasonably modern gdb. Responding with an empty packet will cause
>> + * the remote gdb to fallback to older methods.
>> + */
>> +
>> static void handle_set_reg(GdbCmdContext *gdb_ctx, void *user_ctx)
>> {
>> int reg_size;
>>
>> if (!gdb_has_xml) {
>> - put_packet(gdb_ctx->s, "E00");
>> + put_packet(gdb_ctx->s, "");
>> return;
>> }
>>
>> @@ -1694,11 +1705,6 @@ static void handle_get_reg(GdbCmdContext *gdb_ctx,
> void *user_ctx)
>> {
>> int reg_size;
>>
>> - /*
>> - * Older gdb are really dumb, and don't use 'g' if 'p' is avaialable.
>> - * This works, but can be very slow. Anything new enough to
>> - * understand XML also knows how to use this properly.
>> - */
>> if (!gdb_has_xml) {
>> put_packet(gdb_ctx->s, "");
>> return;
>> --
>> 2.20.1
>>
>>
--
Alex Bennée