From b369d822b110ec9e65381ff35e4479f25bdbc66e Mon Sep 17 00:00:00 2001 From: aldelaro5 Date: Mon, 27 Dec 2021 08:08:55 -0500 Subject: [PATCH] GDB Stub: add support for various query packets These tends to get requested from either pure GDB or Ghidra. They reduce the verbosity of the communications. The QSupported packet is also important to implemnent for future proofing too. --- Source/Core/Core/PowerPC/GDBStub.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/Source/Core/Core/PowerPC/GDBStub.cpp b/Source/Core/Core/PowerPC/GDBStub.cpp index 45896ec4ab..9e80cebbf0 100644 --- a/Source/Core/Core/PowerPC/GDBStub.cpp +++ b/Source/Core/Core/PowerPC/GDBStub.cpp @@ -307,12 +307,20 @@ static void SendReply(const char* reply) static void HandleQuery() { - DEBUG_LOG_FMT(GDB_STUB, "gdb: query '{}'", CommandBufferAsString() + 1); + DEBUG_LOG_FMT(GDB_STUB, "gdb: query '{}'", CommandBufferAsString()); - if (!strcmp((const char*)(s_cmd_bfr + 1), "TStatus")) - { - return SendReply("T0"); - } + if (!strncmp((const char*)(s_cmd_bfr), "qAttached", strlen("qAttached"))) + return SendReply("1"); + if (!strcmp((const char*)(s_cmd_bfr), "qC")) + return SendReply("QC1"); + if (!strcmp((const char*)(s_cmd_bfr), "qfThreadInfo")) + return SendReply("m1"); + else if (!strcmp((const char*)(s_cmd_bfr), "qsThreadInfo")) + return SendReply("l"); + else if (!strncmp((const char*)(s_cmd_bfr), "qThreadExtraInfo", strlen("qThreadExtraInfo"))) + return SendReply("00"); + else if (!strncmp((const char*)(s_cmd_bfr), "qSupported", strlen("qSupported"))) + return SendReply("swbreak+;hwbreak+"); SendReply(""); }