summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/Linux/LinuxThread.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins/Process/Linux/LinuxThread.cpp')
-rw-r--r--lldb/source/Plugins/Process/Linux/LinuxThread.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/lldb/source/Plugins/Process/Linux/LinuxThread.cpp b/lldb/source/Plugins/Process/Linux/LinuxThread.cpp
index 397d31bf497..ebda0d8965c 100644
--- a/lldb/source/Plugins/Process/Linux/LinuxThread.cpp
+++ b/lldb/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 @@ LinuxThread::GetInfo()
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 @@ LinuxThread::GetRegisterContext()
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 @@ LinuxThread::CreateRegisterContextForFrame(lldb_private::StackFrame *frame)
if (frame)
concrete_frame_idx = frame->GetConcreteFrameIndex();
-
+
if (concrete_frame_idx == 0)
reg_ctx_sp = GetRegisterContext();
else
OpenPOWER on IntegriCloud