From 38036eb1c8633d151c721992e085e1aca5658f9d Mon Sep 17 00:00:00 2001 From: "Gauvain \"GovanifY\" Roussel-Tarbouriech" Date: Sun, 23 Feb 2020 21:33:49 +0100 Subject: gdbstub: Ensure gdbstub doesn't drop packets crucial to initialization --- src/core/gdbstub/gdbstub.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/core/gdbstub/gdbstub.cpp') diff --git a/src/core/gdbstub/gdbstub.cpp b/src/core/gdbstub/gdbstub.cpp index e8d8871a7..6ee4df6b5 100644 --- a/src/core/gdbstub/gdbstub.cpp +++ b/src/core/gdbstub/gdbstub.cpp @@ -141,6 +141,7 @@ constexpr char target_xml[] = )"; int gdbserver_socket = -1; +bool defer_start = false; u8 command_buffer[GDB_BUFFER_SIZE]; u32 command_length; @@ -1165,7 +1166,8 @@ static void RemoveBreakpoint() { } void HandlePacket() { - if (!IsConnected()) { + if (!IsConnected() && defer_start) { + ToggleServer(true); return; } @@ -1256,6 +1258,10 @@ void ToggleServer(bool status) { } } +void DeferStart() { + defer_start = true; +} + static void Init(u16 port) { if (!server_enabled) { // Set the halt loop to false in case the user enabled the gdbstub mid-execution. @@ -1341,6 +1347,7 @@ void Shutdown() { if (!server_enabled) { return; } + defer_start = false; LOG_INFO(Debug_GDBStub, "Stopping GDB ..."); if (gdbserver_socket != -1) { -- cgit v1.2.3