aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/lldb/source/Symbol/SymbolContext.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm-project/lldb/source/Symbol/SymbolContext.cpp')
-rw-r--r--contrib/llvm-project/lldb/source/Symbol/SymbolContext.cpp25
1 files changed, 18 insertions, 7 deletions
diff --git a/contrib/llvm-project/lldb/source/Symbol/SymbolContext.cpp b/contrib/llvm-project/lldb/source/Symbol/SymbolContext.cpp
index 12c2077154b9..8cfea35180fa 100644
--- a/contrib/llvm-project/lldb/source/Symbol/SymbolContext.cpp
+++ b/contrib/llvm-project/lldb/source/Symbol/SymbolContext.cpp
@@ -71,7 +71,8 @@ bool SymbolContext::DumpStopContext(Stream *s, ExecutionContextScope *exe_scope,
const Address &addr, bool show_fullpaths,
bool show_module, bool show_inlined_frames,
bool show_function_arguments,
- bool show_function_name) const {
+ bool show_function_name,
+ bool show_inline_callsite_line_info) const {
bool dumped_something = false;
if (show_module && module_sp) {
if (show_fullpaths)
@@ -127,11 +128,17 @@ bool SymbolContext::DumpStopContext(Stream *s, ExecutionContextScope *exe_scope,
s->Printf(" + %" PRIu64, inlined_function_offset);
}
}
- const Declaration &call_site = inlined_block_info->GetCallSite();
- if (call_site.IsValid()) {
+ if (show_inline_callsite_line_info) {
+ const Declaration &call_site = inlined_block_info->GetCallSite();
+ if (call_site.IsValid()) {
+ s->PutCString(" at ");
+ call_site.DumpStopContext(s, show_fullpaths);
+ }
+ } else if (line_entry.IsValid()) {
s->PutCString(" at ");
- call_site.DumpStopContext(s, show_fullpaths);
+ line_entry.DumpStopContext(s, show_fullpaths);
}
+
if (show_inlined_frames) {
s->EOL();
s->Indent();
@@ -204,7 +211,7 @@ void SymbolContext::GetDescription(Stream *s, lldb::DescriptionLevel level,
Type *func_type = function->GetType();
if (func_type) {
s->Indent(" FuncType: ");
- func_type->GetDescription(s, level, false);
+ func_type->GetDescription(s, level, false, target);
s->EOL();
}
}
@@ -1010,11 +1017,15 @@ void SymbolContextSpecifier::Clear() {
m_type = eNothingSpecified;
}
-bool SymbolContextSpecifier::SymbolContextMatches(SymbolContext &sc) {
+bool SymbolContextSpecifier::SymbolContextMatches(const SymbolContext &sc) {
if (m_type == eNothingSpecified)
return true;
- if (m_target_sp.get() != sc.target_sp.get())
+ // Only compare targets if this specifier has one and it's not the Dummy
+ // target. Otherwise if a specifier gets made in the dummy target and
+ // copied over we'll artificially fail the comparision.
+ if (m_target_sp && !m_target_sp->IsDummyTarget() &&
+ m_target_sp != sc.target_sp)
return false;
if (m_type & eModuleSpecified) {