[Lldb-commits] [lldb] r119709 - /lldb/trunk/tools/debugserver/source/DNBArch.cpp

Greg Clayton gclayton at apple.com
Thu Nov 18 09:29:15 PST 2010


Author: gclayton
Date: Thu Nov 18 11:29:15 2010
New Revision: 119709

URL: http://llvm.org/viewvc/llvm-project?rev=119709&view=rev
Log:
Added missing file.


Added:
    lldb/trunk/tools/debugserver/source/DNBArch.cpp

Added: lldb/trunk/tools/debugserver/source/DNBArch.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/DNBArch.cpp?rev=119709&view=auto
==============================================================================
--- lldb/trunk/tools/debugserver/source/DNBArch.cpp (added)
+++ lldb/trunk/tools/debugserver/source/DNBArch.cpp Thu Nov 18 11:29:15 2010
@@ -0,0 +1,89 @@
+//===-- DNBArch.cpp ---------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+//  Created by Greg Clayton on 6/24/07.
+//
+//===----------------------------------------------------------------------===//
+
+#include "DNBArch.h"
+#include <assert.h>
+#include <mach/mach.h>
+
+#include <map>
+
+#include "DNBLog.h"
+
+typedef std::map<uint32_t, DNBArchPluginInfo> CPUPluginInfoMap;
+
+#if defined (__i386__)
+uint32_t g_current_cpu_type = CPU_TYPE_I386;
+#elif defined (__x86_64__)
+uint32_t g_current_cpu_type = CPU_TYPE_X86_64;
+#elif defined (__arm__) 
+uint32_t g_current_cpu_type = CPU_TYPE_ARM;
+#else
+uint32_t g_current_cpu_type = 0;
+#endif
+
+CPUPluginInfoMap g_arch_plugins;
+
+
+static const DNBArchPluginInfo *
+GetArchInfo ()
+{
+    CPUPluginInfoMap::const_iterator pos = g_arch_plugins.find(g_current_cpu_type);
+    if (pos != g_arch_plugins.end())
+        return &pos->second;
+    return NULL;
+}
+
+void
+DNBArchProtocol::SetDefaultArchitecture (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());
+}
+
+void
+DNBArchProtocol::RegisterArchPlugin (const DNBArchPluginInfo &arch_info)
+{
+    if (arch_info.cpu_type)
+        g_arch_plugins[arch_info.cpu_type] = arch_info;
+}
+
+const DNBRegisterSetInfo *
+DNBArchProtocol::GetRegisterSetInfo (nub_size_t *num_reg_sets)
+{
+    const DNBArchPluginInfo *arch_info = GetArchInfo ();
+    if (arch_info)
+        return arch_info->GetRegisterSetInfo (num_reg_sets);
+    *num_reg_sets = 0;
+    return NULL;
+}
+
+DNBArchProtocol *
+DNBArchProtocol::Create (MachThread *thread)
+{
+    const DNBArchPluginInfo *arch_info = GetArchInfo ();
+    if (arch_info)
+        return arch_info->Create (thread);
+    return NULL;
+
+}
+
+const uint8_t * const 
+DNBArchProtocol::GetBreakpointOpcode (nub_size_t byte_size)
+{
+    const DNBArchPluginInfo *arch_info = GetArchInfo ();
+    if (arch_info)
+        return arch_info->GetBreakpointOpcode (byte_size);
+    return NULL;
+}
+





More information about the lldb-commits mailing list