aboutsummaryrefslogtreecommitdiff
path: root/source/Plugins/Process/elf-core/ThreadElfCore.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/Plugins/Process/elf-core/ThreadElfCore.cpp')
-rw-r--r--source/Plugins/Process/elf-core/ThreadElfCore.cpp25
1 files changed, 21 insertions, 4 deletions
diff --git a/source/Plugins/Process/elf-core/ThreadElfCore.cpp b/source/Plugins/Process/elf-core/ThreadElfCore.cpp
index a7229663dc89..3bda86dc0f73 100644
--- a/source/Plugins/Process/elf-core/ThreadElfCore.cpp
+++ b/source/Plugins/Process/elf-core/ThreadElfCore.cpp
@@ -16,8 +16,11 @@
#include "ThreadElfCore.h"
#include "ProcessElfCore.h"
-#include "RegisterContextCoreFreeBSD_x86_64.h"
-#include "RegisterContextCoreLinux_x86_64.h"
+#include "RegisterContextLinux_x86_64.h"
+#include "RegisterContextFreeBSD_mips64.h"
+#include "RegisterContextFreeBSD_x86_64.h"
+#include "RegisterContextPOSIXCore_mips64.h"
+#include "RegisterContextPOSIXCore_x86_64.h"
using namespace lldb;
using namespace lldb_private;
@@ -84,14 +87,28 @@ ThreadElfCore::CreateRegisterContextForFrame (StackFrame *frame)
ArchSpec arch = process->GetArchitecture();
switch (arch.GetMachine())
{
+ case llvm::Triple::mips64:
+ switch (arch.GetTriple().getOS())
+ {
+ case llvm::Triple::FreeBSD:
+ m_thread_reg_ctx_sp.reset(new RegisterContextCorePOSIX_mips64 (*this, new RegisterContextFreeBSD_mips64(arch), m_gpregset_data, m_fpregset_data));
+ break;
+ default:
+ if (log)
+ log->Printf ("elf-core::%s:: OS(%d) not supported",
+ __FUNCTION__, arch.GetTriple().getOS());
+ assert (false && "OS not supported");
+ break;
+ }
+ break;
case llvm::Triple::x86_64:
switch (arch.GetTriple().getOS())
{
case llvm::Triple::FreeBSD:
- m_thread_reg_ctx_sp.reset(new RegisterContextCoreFreeBSD_x86_64 (*this, m_gpregset_data, m_fpregset_data));
+ m_thread_reg_ctx_sp.reset(new RegisterContextCorePOSIX_x86_64 (*this, new RegisterContextFreeBSD_x86_64(arch), m_gpregset_data, m_fpregset_data));
break;
case llvm::Triple::Linux:
- m_thread_reg_ctx_sp.reset(new RegisterContextCoreLinux_x86_64 (*this, m_gpregset_data, m_fpregset_data));
+ m_thread_reg_ctx_sp.reset(new RegisterContextCorePOSIX_x86_64 (*this, new RegisterContextLinux_x86_64(arch), m_gpregset_data, m_fpregset_data));
break;
default:
if (log)