summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/include/lldb/Core/Address.h7
-rw-r--r--lldb/source/API/SBFrame.cpp2
-rw-r--r--lldb/source/Core/Address.cpp16
-rw-r--r--lldb/source/Target/StackFrame.cpp2
-rw-r--r--lldb/source/Target/StackFrameList.cpp4
5 files changed, 21 insertions, 10 deletions
diff --git a/lldb/include/lldb/Core/Address.h b/lldb/include/lldb/Core/Address.h
index cfa16c30bed..3cbb6b406e3 100644
--- a/lldb/include/lldb/Core/Address.h
+++ b/lldb/include/lldb/Core/Address.h
@@ -326,7 +326,8 @@ public:
/// not loaded.
//------------------------------------------------------------------
lldb::addr_t
- GetOpcodeLoadAddress (Target *target) const;
+ GetOpcodeLoadAddress (Target *target,
+ lldb::AddressClass addr_class = lldb::eAddressClassInvalid) const;
//------------------------------------------------------------------
/// Get the section relative offset value.
@@ -425,7 +426,9 @@ public:
SetLoadAddress (lldb::addr_t load_addr, Target *target);
bool
- SetOpcodeLoadAddress (lldb::addr_t load_addr, Target *target);
+ SetOpcodeLoadAddress (lldb::addr_t load_addr,
+ Target *target,
+ lldb::AddressClass addr_class = lldb::eAddressClassInvalid);
bool
SetCallableLoadAddress (lldb::addr_t load_addr, Target *target);
diff --git a/lldb/source/API/SBFrame.cpp b/lldb/source/API/SBFrame.cpp
index c1aecf8e1cc..df6cc51ed07 100644
--- a/lldb/source/API/SBFrame.cpp
+++ b/lldb/source/API/SBFrame.cpp
@@ -484,7 +484,7 @@ SBFrame::GetPC () const
frame = exe_ctx.GetFramePtr();
if (frame)
{
- addr = frame->GetFrameCodeAddress().GetOpcodeLoadAddress (target);
+ addr = frame->GetFrameCodeAddress().GetOpcodeLoadAddress (target, eAddressClassCode);
}
else
{
diff --git a/lldb/source/Core/Address.cpp b/lldb/source/Core/Address.cpp
index 1cd7a7447b7..f1c131dc6c4 100644
--- a/lldb/source/Core/Address.cpp
+++ b/lldb/source/Core/Address.cpp
@@ -367,21 +367,29 @@ Address::SetCallableLoadAddress (lldb::addr_t load_addr, Target *target)
}
addr_t
-Address::GetOpcodeLoadAddress (Target *target) const
+Address::GetOpcodeLoadAddress (Target *target, AddressClass addr_class) const
{
addr_t code_addr = GetLoadAddress (target);
if (code_addr != LLDB_INVALID_ADDRESS)
- code_addr = target->GetOpcodeLoadAddress (code_addr, GetAddressClass());
+ {
+ if (addr_class == eAddressClassInvalid)
+ addr_class = GetAddressClass();
+ code_addr = target->GetOpcodeLoadAddress (code_addr, addr_class);
+ }
return code_addr;
}
bool
-Address::SetOpcodeLoadAddress (lldb::addr_t load_addr, Target *target)
+Address::SetOpcodeLoadAddress (lldb::addr_t load_addr, Target *target, AddressClass addr_class)
{
if (SetLoadAddress (load_addr, target))
{
if (target)
- m_offset = target->GetOpcodeLoadAddress (m_offset, GetAddressClass());
+ {
+ if (addr_class == eAddressClassInvalid)
+ addr_class = GetAddressClass();
+ m_offset = target->GetOpcodeLoadAddress (m_offset, addr_class);
+ }
return true;
}
return false;
diff --git a/lldb/source/Target/StackFrame.cpp b/lldb/source/Target/StackFrame.cpp
index be86be31c04..f8b3eb05a65 100644
--- a/lldb/source/Target/StackFrame.cpp
+++ b/lldb/source/Target/StackFrame.cpp
@@ -259,7 +259,7 @@ StackFrame::GetFrameCodeAddress()
TargetSP target_sp (thread_sp->CalculateTarget());
if (target_sp)
{
- if (m_frame_code_addr.SetOpcodeLoadAddress (m_frame_code_addr.GetOffset(), target_sp.get()))
+ if (m_frame_code_addr.SetOpcodeLoadAddress (m_frame_code_addr.GetOffset(), target_sp.get(), eAddressClassCode))
{
ModuleSP module_sp (m_frame_code_addr.GetModule());
if (module_sp)
diff --git a/lldb/source/Target/StackFrameList.cpp b/lldb/source/Target/StackFrameList.cpp
index 05923d70ce4..b93e80806de 100644
--- a/lldb/source/Target/StackFrameList.cpp
+++ b/lldb/source/Target/StackFrameList.cpp
@@ -362,8 +362,8 @@ StackFrameList::GetFramesUpTo(uint32_t end_idx)
// adjustment it will point to an other section. In that case resolve the
// address again to the correct section plus offset form.
TargetSP target = m_thread.CalculateTarget();
- addr_t load_addr = curr_frame_address.GetOpcodeLoadAddress(target.get());
- curr_frame_address.SetOpcodeLoadAddress(load_addr - 1, target.get());
+ addr_t load_addr = curr_frame_address.GetOpcodeLoadAddress(target.get(), eAddressClassCode);
+ curr_frame_address.SetOpcodeLoadAddress(load_addr - 1, target.get(), eAddressClassCode);
}
else
{
OpenPOWER on IntegriCloud