The code in ProcessGDBRemote::SetThreadStopInfo depends on having a byte order & architecture set, but when connecting to a remote GDB with no arch/file loaded it doesn't have one yet and fails to set the register info properly, making the callstacks and dyld code fail, with this patch it becomes possible to use an empty target, connect and then load modules.

--
Carlo Kok
RemObjects Software
 lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp 
b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
index f7b5868..dd94133 100644
--- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
@@ -564,6 +564,11 @@ ProcessGDBRemote::DoConnectRemote (Stream *strm, const 
char *remote_url)
         GetThreadList();
         if (m_gdb_comm.SendPacketAndWaitForResponse("?", 1, 
m_last_stop_packet, false))
         {
+            if (!m_target.GetArchitecture().IsValid()) { // Make sure we have 
an architecture
+               m_target.SetArchitecture(m_gdb_comm.GetProcessArchitecture());
+            }
+
+
             const StateType state = SetThreadStopInfo (m_last_stop_packet);
             if (state == eStateStopped)
             {
@@ -765,6 +770,10 @@ ProcessGDBRemote::DoLaunch (Module *exe_module, const 
ProcessLaunchInfo &launch_
 
             if (m_gdb_comm.SendPacketAndWaitForResponse("?", 1, 
m_last_stop_packet, false))
             {
+                if (!m_target.GetArchitecture().IsValid()) { // Make sure we 
have an architecture
+                   
m_target.SetArchitecture(m_gdb_comm.GetProcessArchitecture());
+                }
+
                 SetPrivateState (SetThreadStopInfo (m_last_stop_packet));
                 
                 if (!disable_stdio)
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

Reply via email to