[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