From 9da7bd07390bc3c35caaea2b59fb74109b860889 Mon Sep 17 00:00:00 2001 From: Greg Clayton Date: Tue, 24 Aug 2010 21:05:24 +0000 Subject: Got a lot of the kinks worked out in the inline support after debugging more complex inlined examples. StackFrame classes don't have a "GetPC" anymore, they have "GetFrameCodeAddress()". This is because inlined frames will have a PC value that is the same as the concrete frame that owns the inlined frame, yet the code locations for the frame can be different. We also need to be able to get the real PC value for a given frame so that variables evaluate correctly. To get the actual PC value for a frame you can use: addr_t pc = frame->GetRegisterContext()->GetPC(); Some issues with the StackFrame stomping on its own symbol context were resolved which were causing the information to change for a frame when the stack ID was calculated. Also the StackFrame will now correctly store the symbol context resolve flags for any extra bits of information that were looked up (if you ask for a block only and you find one, you will alwasy have the compile unit and function). llvm-svn: 111964 --- lldb/source/API/SBFrame.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'lldb/source/API/SBFrame.cpp') diff --git a/lldb/source/API/SBFrame.cpp b/lldb/source/API/SBFrame.cpp index 533077181439..b2d591d85076 100644 --- a/lldb/source/API/SBFrame.cpp +++ b/lldb/source/API/SBFrame.cpp @@ -121,12 +121,11 @@ SBFrame::GetFrameID () const return UINT32_MAX; } - lldb::addr_t SBFrame::GetPC () const { if (m_opaque_sp) - return m_opaque_sp->GetPC().GetLoadAddress (&m_opaque_sp->GetThread().GetProcess()); + return m_opaque_sp->GetFrameCodeAddress().GetLoadAddress (&m_opaque_sp->GetThread().GetProcess()); return LLDB_INVALID_ADDRESS; } @@ -161,7 +160,7 @@ SBFrame::GetPCAddress () const { SBAddress sb_addr; if (m_opaque_sp) - sb_addr.SetAddress (&m_opaque_sp->GetPC()); + sb_addr.SetAddress (&m_opaque_sp->GetFrameCodeAddress()); return sb_addr; } -- cgit v1.2.3