diff options
Diffstat (limited to 'lldb/source/Plugins/Process/gdb-remote')
| -rw-r--r-- | lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp | 27 | ||||
| -rw-r--r-- | lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h | 2 |
2 files changed, 7 insertions, 22 deletions
diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp index e8335c6bd54..8b0c47c2501 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp @@ -391,10 +391,9 @@ ProcessGDBRemote::DoConnectRemote (const char *remote_url) // We have a valid process SetID (pid); UpdateThreadListIfNeeded (); - StringExtractorGDBRemote response; - if (m_gdb_comm.SendPacketAndWaitForResponse("?", 1, response, false)) + if (m_gdb_comm.SendPacketAndWaitForResponse("?", 1, m_last_stop_packet, false)) { - const StateType state = SetThreadStopInfo (response); + const StateType state = SetThreadStopInfo (m_last_stop_packet); if (state == eStateStopped) { SetPrivateState (state); @@ -550,10 +549,9 @@ ProcessGDBRemote::DoLaunch return error; } - StringExtractorGDBRemote response; - if (m_gdb_comm.SendPacketAndWaitForResponse("?", 1, response, false)) + if (m_gdb_comm.SendPacketAndWaitForResponse("?", 1, m_last_stop_packet, false)) { - SetPrivateState (SetThreadStopInfo (response)); + SetPrivateState (SetThreadStopInfo (m_last_stop_packet)); if (!disable_stdio) { @@ -1097,6 +1095,7 @@ ProcessGDBRemote::UpdateThreadListIfNeeded () StateType ProcessGDBRemote::SetThreadStopInfo (StringExtractor& stop_packet) { + stop_packet.SetFilePos (0); const char stop_type = stop_packet.GetChar(); switch (stop_type) { @@ -1245,22 +1244,10 @@ ProcessGDBRemote::SetThreadStopInfo (StringExtractor& stop_packet) void ProcessGDBRemote::RefreshStateAfterStop () { - // FIXME - add a variable to tell that we're in the middle of attaching if we - // need to know that. - // We must be attaching if we don't already have a valid architecture -// if (!GetTarget().GetArchitecture().IsValid()) -// { -// Module *exe_module = GetTarget().GetExecutableModule().get(); -// if (exe_module) -// m_arch_spec = exe_module->GetArchitecture(); -// } - // Let all threads recover from stopping and do any clean up based // on the previous thread state (if any). m_thread_list.RefreshStateAfterStop(); - - // Discover new threads: - UpdateThreadListIfNeeded (); + SetThreadStopInfo (m_last_stop_packet); } Error @@ -2342,13 +2329,11 @@ ProcessGDBRemote::AsyncThread (void *arg) case eStateCrashed: case eStateSuspended: process->m_last_stop_packet = response; - process->m_last_stop_packet.SetFilePos (0); process->SetPrivateState (stop_state); break; case eStateExited: process->m_last_stop_packet = response; - process->m_last_stop_packet.SetFilePos (0); response.SetFilePos(1); process->SetExitStatus(response.GetHexU8(), NULL); done = true; diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h index 21646cbf286..7351c95f0df 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h @@ -297,7 +297,7 @@ protected: GDBRemoteCommunicationClient m_gdb_comm; lldb::pid_t m_debugserver_pid; lldb::thread_t m_debugserver_thread; - StringExtractor m_last_stop_packet; + StringExtractorGDBRemote m_last_stop_packet; GDBRemoteDynamicRegisterInfo m_register_info; lldb_private::Broadcaster m_async_broadcaster; lldb::thread_t m_async_thread; |

