diff options
Diffstat (limited to 'lldb/source/Core')
-rw-r--r-- | lldb/source/Core/Address.cpp | 14 | ||||
-rw-r--r-- | lldb/source/Core/SourceManager.cpp | 19 |
2 files changed, 18 insertions, 15 deletions
diff --git a/lldb/source/Core/Address.cpp b/lldb/source/Core/Address.cpp index 89131caddea..2ea3bb17312 100644 --- a/lldb/source/Core/Address.cpp +++ b/lldb/source/Core/Address.cpp @@ -729,7 +729,7 @@ Address::Dump (Stream *s, ExecutionContextScope *exe_scope, DumpStyle style, Dum } uint32_t -Address::CalculateSymbolContext (SymbolContext *sc, uint32_t resolve_scope) +Address::CalculateSymbolContext (SymbolContext *sc, uint32_t resolve_scope) const { sc->Clear(); // Absolute addresses don't have enough information to reconstruct even their target. @@ -747,7 +747,7 @@ Address::CalculateSymbolContext (SymbolContext *sc, uint32_t resolve_scope) } Module * -Address::CalculateSymbolContextModule () +Address::CalculateSymbolContextModule () const { if (m_section) return m_section->GetModule(); @@ -755,7 +755,7 @@ Address::CalculateSymbolContextModule () } CompileUnit * -Address::CalculateSymbolContextCompileUnit () +Address::CalculateSymbolContextCompileUnit () const { if (m_section) { @@ -771,7 +771,7 @@ Address::CalculateSymbolContextCompileUnit () } Function * -Address::CalculateSymbolContextFunction () +Address::CalculateSymbolContextFunction () const { if (m_section) { @@ -787,7 +787,7 @@ Address::CalculateSymbolContextFunction () } Block * -Address::CalculateSymbolContextBlock () +Address::CalculateSymbolContextBlock () const { if (m_section) { @@ -803,7 +803,7 @@ Address::CalculateSymbolContextBlock () } Symbol * -Address::CalculateSymbolContextSymbol () +Address::CalculateSymbolContextSymbol () const { if (m_section) { @@ -819,7 +819,7 @@ Address::CalculateSymbolContextSymbol () } bool -Address::CalculateSymbolContextLineEntry (LineEntry &line_entry) +Address::CalculateSymbolContextLineEntry (LineEntry &line_entry) const { if (m_section) { diff --git a/lldb/source/Core/SourceManager.cpp b/lldb/source/Core/SourceManager.cpp index 482ccbbcdb0..3e4a78ac68e 100644 --- a/lldb/source/Core/SourceManager.cpp +++ b/lldb/source/Core/SourceManager.cpp @@ -250,19 +250,22 @@ SourceManager::GetDefaultFileAndLine (FileSpec &file_spec, uint32_t &line) { SymbolContext sc; sc_list.GetContextAtIndex(idx, sc); - if (sc.line_entry.file) + if (sc.function) { - SetDefaultFileAndLine(sc.line_entry.file, sc.line_entry.line); - break; + lldb_private::LineEntry line_entry; + if (sc.function->GetAddressRange().GetBaseAddress().CalculateSymbolContextLineEntry (line_entry)) + { + SetDefaultFileAndLine (line_entry.file, + line_entry.line); + file_spec = m_last_file_sp->GetFileSpec(); + line = m_last_file_line; + return true; + } } } - return GetDefaultFileAndLine (file_spec, line); } - else - return false; } - else - return false; + return false; } void |