From 0d9c993401bd557b0c5953a4e6fdf4d79f5a52bc Mon Sep 17 00:00:00 2001 From: Greg Clayton Date: Mon, 4 Oct 2010 17:26:49 +0000 Subject: [PATCH] Fixed and issue where we weren't seeing inlined functions anymore. We also now show the correct pc-offset within the inlined function. llvm-svn: 115522 --- lldb/source/Core/Debugger.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/lldb/source/Core/Debugger.cpp b/lldb/source/Core/Debugger.cpp index 48e2e6f94007..d2768e72568f 100644 --- a/lldb/source/Core/Debugger.cpp +++ b/lldb/source/Core/Debugger.cpp @@ -956,6 +956,20 @@ Debugger::FormatPrompt if (cstr) { s.PutCString(cstr); + + if (sc->block) + { + Block *inline_block = sc->block->GetContainingInlinedBlock (); + if (inline_block) + { + const InlineFunctionInfo *inline_info = sc->block->GetInlinedFunctionInfo(); + if (inline_info) + { + s.PutCString(" [inlined] "); + inline_info->GetName().Dump(&s); + } + } + } var_success = true; } } @@ -1083,7 +1097,20 @@ Debugger::FormatPrompt if (sc) { if (sc->function) + { func_addr = sc->function->GetAddressRange().GetBaseAddress(); + if (sc->block) + { + // Check to make sure we aren't in an inline + // function. If we are, use the inline block + // range that contains "format_addr" since + // blocks can be discontiguous. + Block *inline_block = sc->block->GetContainingInlinedBlock (); + AddressRange inline_range; + if (inline_block && inline_block->GetRangeContainingAddress (format_addr, inline_range)) + func_addr = inline_range.GetBaseAddress(); + } + } else if (sc->symbol && sc->symbol->GetAddressRangePtr()) func_addr = sc->symbol->GetAddressRangePtr()->GetBaseAddress(); }