mgorny created this revision. mgorny added reviewers: labath, krytarowski, emaste. mgorny requested review of this revision.
Always send PID in the detach packet when multiprocess extensions are enabled. This is required by qemu's GDB server, as plain 'D' packet results in an error and the emulated system is not resumed. https://reviews.llvm.org/D110033 Files: lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp Index: lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp =================================================================== --- lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp +++ lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp @@ -1547,14 +1547,16 @@ } } - if (pid != LLDB_INVALID_PROCESS_ID) { - if (!m_supports_multiprocess) { - error.SetErrorString( - "Multiprocess extension not supported by the server."); - return error; - } + if (m_supports_multiprocess) { + // Some servers (e.g. qemu) require specifying the PID even if only a single + // process is running. + if (pid == LLDB_INVALID_PROCESS_ID) + pid = GetCurrentProcessID(); packet.PutChar(';'); packet.PutHex64(pid); + } else if (pid != LLDB_INVALID_PROCESS_ID) { + error.SetErrorString("Multiprocess extension not supported by the server."); + return error; } StringExtractorGDBRemote response;
Index: lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp =================================================================== --- lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp +++ lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp @@ -1547,14 +1547,16 @@ } } - if (pid != LLDB_INVALID_PROCESS_ID) { - if (!m_supports_multiprocess) { - error.SetErrorString( - "Multiprocess extension not supported by the server."); - return error; - } + if (m_supports_multiprocess) { + // Some servers (e.g. qemu) require specifying the PID even if only a single + // process is running. + if (pid == LLDB_INVALID_PROCESS_ID) + pid = GetCurrentProcessID(); packet.PutChar(';'); packet.PutHex64(pid); + } else if (pid != LLDB_INVALID_PROCESS_ID) { + error.SetErrorString("Multiprocess extension not supported by the server."); + return error; } StringExtractorGDBRemote response;
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits