diff options
| author | Greg Clayton <gclayton@apple.com> | 2010-12-01 22:45:40 +0000 |
|---|---|---|
| committer | Greg Clayton <gclayton@apple.com> | 2010-12-01 22:45:40 +0000 |
| commit | 3c14438fe87660578c39533e388f7938fb2b8625 (patch) | |
| tree | ca5f7688456d0590539f094e933af4e2e3ae8acb /lldb/tools/debugserver | |
| parent | 7cfe7679aa9741900a56cd84ef4453067d3a0560 (diff) | |
| download | bcm5719-llvm-3c14438fe87660578c39533e388f7938fb2b8625.tar.gz bcm5719-llvm-3c14438fe87660578c39533e388f7938fb2b8625.zip | |
Fixed 32 bit debugging after recent architecture changes to debugserver.
llvm-svn: 120618
Diffstat (limited to 'lldb/tools/debugserver')
| -rw-r--r-- | lldb/tools/debugserver/source/DNB.cpp | 15 | ||||
| -rw-r--r-- | lldb/tools/debugserver/source/DNB.h | 2 | ||||
| -rw-r--r-- | lldb/tools/debugserver/source/DNBArch.cpp | 24 | ||||
| -rw-r--r-- | lldb/tools/debugserver/source/DNBArch.h | 7 | ||||
| -rw-r--r-- | lldb/tools/debugserver/source/MacOSX/MachProcess.cpp | 3 | ||||
| -rw-r--r-- | lldb/tools/debugserver/source/MacOSX/MachProcess.h | 1 | ||||
| -rw-r--r-- | lldb/tools/debugserver/source/MacOSX/MachThreadList.cpp | 4 | ||||
| -rw-r--r-- | lldb/tools/debugserver/source/debugserver.cpp | 6 |
8 files changed, 47 insertions, 15 deletions
diff --git a/lldb/tools/debugserver/source/DNB.cpp b/lldb/tools/debugserver/source/DNB.cpp index 17a17d32f0d..516e0cd8c8e 100644 --- a/lldb/tools/debugserver/source/DNB.cpp +++ b/lldb/tools/debugserver/source/DNB.cpp @@ -2019,3 +2019,18 @@ void DNBTerminate() { } + +nub_bool_t +DNBSetArchitecture (const char *arch) +{ + if (arch && arch[0]) + { + if (strcasecmp (arch, "i386") == 0) + return DNBArchProtocol::SetArchitecture (CPU_TYPE_I386); + else if (strcasecmp (arch, "x86_64") == 0) + return DNBArchProtocol::SetArchitecture (CPU_TYPE_X86_64); + else if (strstr (arch, "arm") == arch) + return DNBArchProtocol::SetArchitecture (CPU_TYPE_ARM); + } + return false; +} diff --git a/lldb/tools/debugserver/source/DNB.h b/lldb/tools/debugserver/source/DNB.h index 921bbbfc23d..38a8a07131a 100644 --- a/lldb/tools/debugserver/source/DNB.h +++ b/lldb/tools/debugserver/source/DNB.h @@ -28,6 +28,8 @@ typedef bool (*DNBShouldCancelCallback) (void *); void DNBInitialize (); void DNBTerminate (); +nub_bool_t DNBSetArchitecture (const char *arch); + //---------------------------------------------------------------------- // Process control //---------------------------------------------------------------------- diff --git a/lldb/tools/debugserver/source/DNBArch.cpp b/lldb/tools/debugserver/source/DNBArch.cpp index 0a6495018a4..11743916b13 100644 --- a/lldb/tools/debugserver/source/DNBArch.cpp +++ b/lldb/tools/debugserver/source/DNBArch.cpp @@ -22,13 +22,13 @@ typedef std::map<uint32_t, DNBArchPluginInfo> CPUPluginInfoMap; #if defined (__i386__) -uint32_t g_current_cpu_type = CPU_TYPE_I386; +static uint32_t g_current_cpu_type = CPU_TYPE_I386; #elif defined (__x86_64__) -uint32_t g_current_cpu_type = CPU_TYPE_X86_64; +static uint32_t g_current_cpu_type = CPU_TYPE_X86_64; #elif defined (__arm__) -uint32_t g_current_cpu_type = CPU_TYPE_ARM; +static uint32_t g_current_cpu_type = CPU_TYPE_ARM; #else -uint32_t g_current_cpu_type = 0; +static uint32_t g_current_cpu_type = 0; #endif CPUPluginInfoMap g_arch_plugins; @@ -43,12 +43,20 @@ GetArchInfo () return NULL; } -void -DNBArchProtocol::SetDefaultArchitecture (uint32_t cpu_type) + +uint32_t +DNBArchProtocol::GetArchitecture () +{ + return g_current_cpu_type; +} + +bool +DNBArchProtocol::SetArchitecture (uint32_t cpu_type) { - DNBLogThreadedIf (LOG_PROCESS, "DNBArchProtocol::SetDefaultArchitecture (cpu_type=0x%8.8x)", cpu_type); g_current_cpu_type = cpu_type; - assert (g_arch_plugins.find(g_current_cpu_type) != g_arch_plugins.end()); + bool result = g_arch_plugins.find(g_current_cpu_type) != g_arch_plugins.end(); + DNBLogThreadedIf (LOG_PROCESS, "DNBArchProtocol::SetDefaultArchitecture (cpu_type=0x%8.8x) => %i", cpu_type, result); + return result; } void diff --git a/lldb/tools/debugserver/source/DNBArch.h b/lldb/tools/debugserver/source/DNBArch.h index a0f18cd39c8..b27877120b8 100644 --- a/lldb/tools/debugserver/source/DNBArch.h +++ b/lldb/tools/debugserver/source/DNBArch.h @@ -52,9 +52,12 @@ public: static void RegisterArchPlugin (const DNBArchPluginInfo &arch_info); - static void - SetDefaultArchitecture (uint32_t cpu_type); + static uint32_t + GetArchitecture (); + static bool + SetArchitecture (uint32_t cpu_type); + virtual bool GetRegisterValue (int set, int reg, DNBRegisterValue *value) = 0; virtual bool SetRegisterValue (int set, int reg, const DNBRegisterValue *value) = 0; virtual nub_size_t GetRegisterContext (void *buf, nub_size_t buf_len) = 0; diff --git a/lldb/tools/debugserver/source/MacOSX/MachProcess.cpp b/lldb/tools/debugserver/source/MacOSX/MachProcess.cpp index 3ca7fe8abeb..de3ee45c24f 100644 --- a/lldb/tools/debugserver/source/MacOSX/MachProcess.cpp +++ b/lldb/tools/debugserver/source/MacOSX/MachProcess.cpp @@ -115,7 +115,6 @@ MachProcess::MachProcess() : m_image_infos_baton(NULL) { DNBLogThreadedIf(LOG_PROCESS | LOG_VERBOSE, "%s", __PRETTY_FUNCTION__); - bzero(&m_arch_plugin_info, sizeof(m_arch_plugin_info)); } MachProcess::~MachProcess() @@ -1517,7 +1516,7 @@ MachProcess::LaunchForDebug case eLaunchFlavorPosixSpawn: m_pid = MachProcess::PosixSpawnChildForPTraceDebugging (path, - m_arch_plugin_info.cpu_type, + DNBArchProtocol::GetArchitecture (), argv, envp, stdio_path, diff --git a/lldb/tools/debugserver/source/MacOSX/MachProcess.h b/lldb/tools/debugserver/source/MacOSX/MachProcess.h index cff08bb4d68..9b6d51fc542 100644 --- a/lldb/tools/debugserver/source/MacOSX/MachProcess.h +++ b/lldb/tools/debugserver/source/MacOSX/MachProcess.h @@ -254,7 +254,6 @@ private: DNBCallbackCopyExecutableImageInfos m_image_infos_callback; void * m_image_infos_baton; - DNBArchPluginInfo m_arch_plugin_info; }; diff --git a/lldb/tools/debugserver/source/MacOSX/MachThreadList.cpp b/lldb/tools/debugserver/source/MacOSX/MachThreadList.cpp index 7a5e9bb8588..7aaf64258ba 100644 --- a/lldb/tools/debugserver/source/MacOSX/MachThreadList.cpp +++ b/lldb/tools/debugserver/source/MacOSX/MachThreadList.cpp @@ -230,9 +230,9 @@ MachThreadList::UpdateThreadList(MachProcess *process, bool update) is_64_bit = true; } if (is_64_bit) - DNBArchProtocol::SetDefaultArchitecture(CPU_TYPE_X86_64); + DNBArchProtocol::SetArchitecture(CPU_TYPE_X86_64); else - DNBArchProtocol::SetDefaultArchitecture(CPU_TYPE_I386); + DNBArchProtocol::SetArchitecture(CPU_TYPE_I386); } #endif diff --git a/lldb/tools/debugserver/source/debugserver.cpp b/lldb/tools/debugserver/source/debugserver.cpp index e8c28cc5eae..f7696acfb99 100644 --- a/lldb/tools/debugserver/source/debugserver.cpp +++ b/lldb/tools/debugserver/source/debugserver.cpp @@ -886,6 +886,10 @@ main (int argc, char *argv[]) arch_name.assign ("arm"); #endif } + else + { + DNBSetArchitecture (arch_name.c_str()); + } if (arch_name.empty()) { @@ -897,6 +901,8 @@ main (int argc, char *argv[]) argv += optind; g_remoteSP.reset (new RNBRemote (use_native_registers, arch_name.c_str())); + + RNBRemote *remote = g_remoteSP.get(); if (remote == NULL) |

