summaryrefslogtreecommitdiffstats
path: root/lldb/source/Target/ThreadPlanRunToAddress.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Target/ThreadPlanRunToAddress.cpp')
-rw-r--r--lldb/source/Target/ThreadPlanRunToAddress.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/lldb/source/Target/ThreadPlanRunToAddress.cpp b/lldb/source/Target/ThreadPlanRunToAddress.cpp
index 23945453f00..0779a1fd322 100644
--- a/lldb/source/Target/ThreadPlanRunToAddress.cpp
+++ b/lldb/source/Target/ThreadPlanRunToAddress.cpp
@@ -39,7 +39,7 @@ ThreadPlanRunToAddress::ThreadPlanRunToAddress
m_addresses (),
m_break_ids ()
{
- m_addresses.push_back (address.GetLoadAddress(&m_thread.GetProcess().GetTarget()));
+ m_addresses.push_back (address.GetOpcodeLoadAddress (&m_thread.GetProcess().GetTarget()));
SetInitialBreakpoints();
}
@@ -54,14 +54,14 @@ ThreadPlanRunToAddress::ThreadPlanRunToAddress
m_addresses (),
m_break_ids ()
{
- m_addresses.push_back(address);
+ m_addresses.push_back(m_thread.GetProcess().GetTarget().GetOpcodeLoadAddress(address));
SetInitialBreakpoints();
}
ThreadPlanRunToAddress::ThreadPlanRunToAddress
(
Thread &thread,
- std::vector<lldb::addr_t> &addresses,
+ const std::vector<lldb::addr_t> &addresses,
bool stop_others
) :
ThreadPlan (ThreadPlan::eKindRunToAddress, "Run to address plan", thread, eVoteNoOpinion, eVoteNoOpinion),
@@ -69,6 +69,13 @@ ThreadPlanRunToAddress::ThreadPlanRunToAddress
m_addresses (addresses),
m_break_ids ()
{
+ // Convert all addressses into opcode addresses to make sure we set
+ // breakpoints at the correct address.
+ Target &target = thread.GetProcess().GetTarget();
+ std::vector<lldb::addr_t>::iterator pos, end = m_addresses.end();
+ for (pos = m_addresses.begin(); pos != end; ++pos)
+ *pos = target.GetOpcodeLoadAddress (*pos);
+
SetInitialBreakpoints();
}
OpenPOWER on IntegriCloud