Make sure we don't lose our stop reply packet in the case where the other
GDB server doesn't support the LLDB specific qThreadStopInfo packet.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@132499 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
index e8335c6..8b0c47c 100644
--- a/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+++ b/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
@@ -391,10 +391,9 @@
         // 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 @@
                 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 @@
 StateType
 ProcessGDBRemote::SetThreadStopInfo (StringExtractor& stop_packet)
 {
+    stop_packet.SetFilePos (0);
     const char stop_type = stop_packet.GetChar();
     switch (stop_type)
     {
@@ -1245,22 +1244,10 @@
 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 @@
                                     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;