diff options
author | Jim Ingham <jingham@apple.com> | 2014-08-02 00:33:35 +0000 |
---|---|---|
committer | Jim Ingham <jingham@apple.com> | 2014-08-02 00:33:35 +0000 |
commit | bb006ce29171aef3eb7bdebf52fcd0a5c21385fe (patch) | |
tree | 5265d4909dbacd5ca17b27f2b80b1618a739fdd4 /lldb/source/Plugins/Process/gdb-remote | |
parent | ee1a1fc90043cc520e778ccde5241f451b9cc40c (diff) | |
download | bcm5719-llvm-bb006ce29171aef3eb7bdebf52fcd0a5c21385fe.tar.gz bcm5719-llvm-bb006ce29171aef3eb7bdebf52fcd0a5c21385fe.zip |
After you attach, give the process plugin a chance to report back (through
DidAttach) the architecture of the binary you attached to.
<rdar://problem/17891396>
llvm-svn: 214603
Diffstat (limited to 'lldb/source/Plugins/Process/gdb-remote')
-rw-r--r-- | lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp | 28 | ||||
-rw-r--r-- | lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h | 4 |
2 files changed, 18 insertions, 14 deletions
diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp index 69138159c31..1b04f429156 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp @@ -1011,7 +1011,7 @@ ProcessGDBRemote::ConnectToDebugserver (const char *connect_url) } void -ProcessGDBRemote::DidLaunchOrAttach () +ProcessGDBRemote::DidLaunchOrAttach (ArchSpec& process_arch) { Log *log (ProcessGDBRemoteLog::GetLogIfAllCategoriesSet (GDBR_LOG_PROCESS)); if (log) @@ -1022,16 +1022,17 @@ ProcessGDBRemote::DidLaunchOrAttach () // See if the GDB server supports the qHostInfo information - ArchSpec gdb_remote_arch = m_gdb_comm.GetHostArchitecture(); // See if the GDB server supports the qProcessInfo packet, if so // prefer that over the Host information as it will be more specific // to our process. if (m_gdb_comm.GetProcessArchitecture().IsValid()) - gdb_remote_arch = m_gdb_comm.GetProcessArchitecture(); + process_arch = m_gdb_comm.GetProcessArchitecture(); + else + process_arch = m_gdb_comm.GetHostArchitecture(); - if (gdb_remote_arch.IsValid()) + if (process_arch.IsValid()) { ArchSpec &target_arch = GetTarget().GetArchitecture(); @@ -1044,15 +1045,15 @@ ProcessGDBRemote::DidLaunchOrAttach () // it has, so we really need to take the remote host architecture as our // defacto architecture in this case. - if (gdb_remote_arch.GetMachine() == llvm::Triple::arm && - gdb_remote_arch.GetTriple().getVendor() == llvm::Triple::Apple) + if (process_arch.GetMachine() == llvm::Triple::arm && + process_arch.GetTriple().getVendor() == llvm::Triple::Apple) { - target_arch = gdb_remote_arch; + target_arch = process_arch; } else { // Fill in what is missing in the triple - const llvm::Triple &remote_triple = gdb_remote_arch.GetTriple(); + const llvm::Triple &remote_triple = process_arch.GetTriple(); llvm::Triple &target_triple = target_arch.GetTriple(); if (target_triple.getVendorName().size() == 0) { @@ -1072,7 +1073,7 @@ ProcessGDBRemote::DidLaunchOrAttach () { // The target doesn't have a valid architecture yet, set it from // the architecture we got from the remote GDB server - target_arch = gdb_remote_arch; + target_arch = process_arch; } } } @@ -1081,7 +1082,8 @@ ProcessGDBRemote::DidLaunchOrAttach () void ProcessGDBRemote::DidLaunch () { - DidLaunchOrAttach (); + ArchSpec process_arch; + DidLaunchOrAttach (process_arch); } UnixSignals& @@ -1199,9 +1201,11 @@ ProcessGDBRemote::SetExitStatus (int exit_status, const char *cstr) } void -ProcessGDBRemote::DidAttach () +ProcessGDBRemote::DidAttach (ArchSpec &process_arch) { - DidLaunchOrAttach (); + // If you can figure out what the architecture is, fill it in here. + process_arch.Clear(); + DidLaunchOrAttach (process_arch); } diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h index baee872bb73..39395af2ee5 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h @@ -117,7 +117,7 @@ public: const lldb_private::ProcessAttachInfo &attach_info); virtual void - DidAttach (); + DidAttach (lldb_private::ArchSpec &process_arch); //------------------------------------------------------------------ // PluginInterface protocol @@ -389,7 +389,7 @@ protected: UpdateThreadIDList (); void - DidLaunchOrAttach (); + DidLaunchOrAttach (lldb_private::ArchSpec& process_arch); lldb_private::Error ConnectToDebugserver (const char *host_port); |