Index: lldb/trunk/include/lldb/Core/Address.h =================================================================== --- lldb/trunk/include/lldb/Core/Address.h +++ lldb/trunk/include/lldb/Core/Address.h @@ -326,7 +326,8 @@ /// 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 @@ 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); Index: lldb/trunk/source/API/SBFrame.cpp =================================================================== --- lldb/trunk/source/API/SBFrame.cpp +++ lldb/trunk/source/API/SBFrame.cpp @@ -484,7 +484,7 @@ frame = exe_ctx.GetFramePtr(); if (frame) { - addr = frame->GetFrameCodeAddress().GetOpcodeLoadAddress (target); + addr = frame->GetFrameCodeAddress().GetOpcodeLoadAddress (target, eAddressClassCode); } else { Index: lldb/trunk/source/Core/Address.cpp =================================================================== --- lldb/trunk/source/Core/Address.cpp +++ lldb/trunk/source/Core/Address.cpp @@ -367,21 +367,29 @@ } 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; Index: lldb/trunk/source/Target/StackFrame.cpp =================================================================== --- lldb/trunk/source/Target/StackFrame.cpp +++ lldb/trunk/source/Target/StackFrame.cpp @@ -259,7 +259,7 @@ 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) Index: lldb/trunk/source/Target/StackFrameList.cpp =================================================================== --- lldb/trunk/source/Target/StackFrameList.cpp +++ lldb/trunk/source/Target/StackFrameList.cpp @@ -362,8 +362,8 @@ // 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 {