Signed-off-by: Mihail Abakumov <mikhail.abaku...@ispras.ru> Signed-off-by: Pavel Dovgalyuk <dovga...@ispras.ru> Signed-off-by: Dmitriy Koltunov <koltu...@ispras.ru> --- windbgstub.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/windbgstub.c b/windbgstub.c index 6eb9517e24..07a1815b79 100755 --- a/windbgstub.c +++ b/windbgstub.c @@ -129,7 +129,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); + g_free(buf.data); + + windbg_send_control_packet(ctx->packet.PacketType); + windbg_state->ctrl_packet_id = INITIAL_PACKET_ID; + break; + } + default: + WINDBG_ERROR("Caught 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) {