Add register context for i386 on Linux.
Patch by Marco Minutoli!
git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@126696 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Plugins/Process/Linux/LinuxThread.cpp b/source/Plugins/Process/Linux/LinuxThread.cpp
index 397d31b..ebda0d8 100644
--- a/source/Plugins/Process/Linux/LinuxThread.cpp
+++ b/source/Plugins/Process/Linux/LinuxThread.cpp
@@ -12,6 +12,7 @@
// C++ Includes
// Other libraries and framework includes
+#include "lldb/Host/Host.h"
#include "lldb/Target/Process.h"
#include "lldb/Target/StopInfo.h"
#include "lldb/Target/Target.h"
@@ -19,6 +20,7 @@
#include "LinuxThread.h"
#include "ProcessLinux.h"
#include "ProcessMonitor.h"
+#include "RegisterContextLinux_i386.h"
#include "RegisterContextLinux_x86_64.h"
#include "UnwindLLDB.h"
@@ -59,11 +61,9 @@
lldb::RegisterContextSP
LinuxThread::GetRegisterContext()
{
- ProcessLinux &process = static_cast<ProcessLinux&>(GetProcess());
-
if (!m_reg_context_sp)
{
- ArchSpec arch = process.GetTarget().GetArchitecture();
+ ArchSpec arch = Host::GetArchitecture();
switch (arch.GetCore())
{
@@ -71,6 +71,12 @@
assert(false && "CPU type not supported!");
break;
+ case ArchSpec::eCore_x86_32_i386:
+ case ArchSpec::eCore_x86_32_i486:
+ case ArchSpec::eCore_x86_32_i486sx:
+ m_reg_context_sp.reset(new RegisterContextLinux_i386(*this, 0));
+ break;
+
case ArchSpec::eCore_x86_64_x86_64:
m_reg_context_sp.reset(new RegisterContextLinux_x86_64(*this, 0));
break;
@@ -99,7 +105,7 @@
if (frame)
concrete_frame_idx = frame->GetConcreteFrameIndex();
-
+
if (concrete_frame_idx == 0)
reg_ctx_sp = GetRegisterContext();
else