> Nicholas Piggin <[email protected]> wrote:
>
> diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
> index 6911b73c07..ce8b42eb15 100644
> --- a/gdbstub/gdbstub.c
> +++ b/gdbstub/gdbstub.c
> @@ -2051,8 +2051,17 @@ void gdb_read_byte(uint8_t ch)
>              return;
>      }
>      if (runstate_is_running()) {
> -        /* when the CPU is running, we cannot do anything except stop
> -           it when receiving a char */
> +        /*
> +         * When the CPU is running, we cannot do anything except stop
> +         * it when receiving a char. This is expected on a Ctrl-C in the
> +         * gdb client. Because we are in all-stop mode, gdb sends a
> +         * 0x03 byte which is not a usual packet, so we handle it specially
> +         * here, but it does expect a stop reply.
> +         */
> +        if (ch != 0x03) {
> +            warn_report("gdbstub: client sent packet while target 
> running\n");
> +        }
> +        gdbserver_state.allow_stop_reply = true;
>          vm_stop(RUN_STATE_PAUSED);
>      } else
>  #endif

Makes sense to me, but shouldn't we send the stop-reply packet only for
Ctrl+C/0x03?

Reply via email to