Message ID | 150642395256.3900.7797961982959292389.stgit@Misha-PC.lan02.inno |
---|---|
State | New |
Headers | show |
Series | Windbg supporting | expand |
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 --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) {