diff mbox series

[19/43] windbg: implemented windbg_process_control_packet

Message ID 150642395256.3900.7797961982959292389.stgit@Misha-PC.lan02.inno
State New
Headers show
Series Windbg supporting | expand

Commit Message

Mikhail Abakumov Sept. 26, 2017, 11:05 a.m. UTC
Signed-off-by: Mihail Abakumov <mikhail.abakumov@ispras.ru>
Signed-off-by: Pavel Dovgalyuk <dovgaluk@ispras.ru>
Signed-off-by: Dmitriy Koltunov <koltunov@ispras.ru>
---
 windbgstub.c |   26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

Comments

Ladi Prosek Oct. 3, 2017, 12:20 p.m. UTC | #1
On Tue, Sep 26, 2017 at 1:05 PM, Mihail Abakumov
<mikhail.abakumov@ispras.ru> wrote:
> Signed-off-by: Mihail Abakumov <mikhail.abakumov@ispras.ru>
> Signed-off-by: Pavel Dovgalyuk <dovgaluk@ispras.ru>
> Signed-off-by: Dmitriy Koltunov <koltunov@ispras.ru>
> ---
>  windbgstub.c |   26 +++++++++++++++++++++++++-
>  1 file changed, 25 insertions(+), 1 deletion(-)
>
> diff --git a/windbgstub.c b/windbgstub.c
> index 3a13d22349..b8053102dd 100755
> --- a/windbgstub.c
> +++ b/windbgstub.c
> @@ -126,7 +126,31 @@ static void windbg_process_data_packet(ParsingContext *ctx)
>  {}
>
>  static void windbg_process_control_packet(ParsingContext *ctx)
> -{}
> +{
> +    switch (ctx->packet.PacketType) {
> +    case PACKET_TYPE_KD_ACKNOWLEDGE:
> +        break;
> +
> +    case PACKET_TYPE_KD_RESET:
> +    {
> +        SizedBuf buf = kd_gen_load_symbols_sc(qemu_get_cpu(0));
> +
> +        windbg_send_data_packet(buf.data, buf.size,
> +                                PACKET_TYPE_KD_STATE_CHANGE64);
> +        windbg_send_control_packet(ctx->packet.PacketType);
> +        windbg_state->ctrl_packet_id = INITIAL_PACKET_ID;
> +        SBUF_FREE(buf);
> +        break;
> +    }
> +    default:
> +        WINDBG_ERROR("Catched unsupported control packet 0x%x",

"caught" instead of "catched", same in patches 20 and 21.

> +                     ctx->packet.PacketType);
> +
> +        windbg_state->ctrl_packet_id = 0;
> +        windbg_send_control_packet(PACKET_TYPE_KD_RESEND);
> +        break;
> +    }
> +}
>
>  static void windbg_ctx_handler(ParsingContext *ctx)
>  {
>
diff mbox series

Patch

diff --git a/windbgstub.c b/windbgstub.c
index 3a13d22349..b8053102dd 100755
--- a/windbgstub.c
+++ b/windbgstub.c
@@ -126,7 +126,31 @@  static void windbg_process_data_packet(ParsingContext *ctx)
 {}
 
 static void windbg_process_control_packet(ParsingContext *ctx)
-{}
+{
+    switch (ctx->packet.PacketType) {
+    case PACKET_TYPE_KD_ACKNOWLEDGE:
+        break;
+
+    case PACKET_TYPE_KD_RESET:
+    {
+        SizedBuf buf = kd_gen_load_symbols_sc(qemu_get_cpu(0));
+
+        windbg_send_data_packet(buf.data, buf.size,
+                                PACKET_TYPE_KD_STATE_CHANGE64);
+        windbg_send_control_packet(ctx->packet.PacketType);
+        windbg_state->ctrl_packet_id = INITIAL_PACKET_ID;
+        SBUF_FREE(buf);
+        break;
+    }
+    default:
+        WINDBG_ERROR("Catched unsupported control packet 0x%x",
+                     ctx->packet.PacketType);
+
+        windbg_state->ctrl_packet_id = 0;
+        windbg_send_control_packet(PACKET_TYPE_KD_RESEND);
+        break;
+    }
+}
 
 static void windbg_ctx_handler(ParsingContext *ctx)
 {