diff options
Diffstat (limited to 'source/Symbol/SymbolContext.cpp')
| -rw-r--r-- | source/Symbol/SymbolContext.cpp | 92 |
1 files changed, 22 insertions, 70 deletions
diff --git a/source/Symbol/SymbolContext.cpp b/source/Symbol/SymbolContext.cpp index 8716f50a384d4..da00875bfa151 100644 --- a/source/Symbol/SymbolContext.cpp +++ b/source/Symbol/SymbolContext.cpp @@ -105,12 +105,12 @@ bool SymbolContext::DumpStopContext(Stream *s, ExecutionContextScope *exe_scope, if (function != nullptr) { SymbolContext inline_parent_sc; Address inline_parent_addr; - if (show_function_name == false) { + if (!show_function_name) { s->Printf("<"); dumped_something = true; } else { ConstString name; - if (show_function_arguments == false) + if (!show_function_arguments) name = function->GetNameNoArguments(); if (!name) name = function->GetName(); @@ -122,7 +122,7 @@ bool SymbolContext::DumpStopContext(Stream *s, ExecutionContextScope *exe_scope, const addr_t function_offset = addr.GetOffset() - function->GetAddressRange().GetBaseAddress().GetOffset(); - if (show_function_name == false) { + if (!show_function_name) { // Print +offset even if offset is 0 dumped_something = true; s->Printf("+%" PRIu64 ">", function_offset); @@ -171,7 +171,7 @@ bool SymbolContext::DumpStopContext(Stream *s, ExecutionContextScope *exe_scope, } } } else if (symbol != nullptr) { - if (show_function_name == false) { + if (!show_function_name) { s->Printf("<"); dumped_something = true; } else if (symbol->GetName()) { @@ -184,7 +184,7 @@ bool SymbolContext::DumpStopContext(Stream *s, ExecutionContextScope *exe_scope, if (addr.IsValid() && symbol->ValueIsAddress()) { const addr_t symbol_offset = addr.GetOffset() - symbol->GetAddressRef().GetOffset(); - if (show_function_name == false) { + if (!show_function_name) { // Print +offset even if offset is 0 dumped_something = true; s->Printf("+%" PRIu64 ">", symbol_offset); @@ -393,12 +393,7 @@ bool lldb_private::operator==(const SymbolContext &lhs, bool lldb_private::operator!=(const SymbolContext &lhs, const SymbolContext &rhs) { - return lhs.function != rhs.function || lhs.symbol != rhs.symbol || - lhs.module_sp.get() != rhs.module_sp.get() || - lhs.comp_unit != rhs.comp_unit || - lhs.target_sp.get() != rhs.target_sp.get() || - LineEntry::Compare(lhs.line_entry, rhs.line_entry) != 0 || - lhs.variable != rhs.variable; + return !(lhs == rhs); } bool SymbolContext::GetAddressRange(uint32_t scope, uint32_t range_idx, @@ -801,14 +796,14 @@ bool SymbolContext::GetAddressRangeFromHereToEndLine(uint32_t end_line, const Symbol * SymbolContext::FindBestGlobalDataSymbol(const ConstString &name, Status &error) { error.Clear(); - + if (!target_sp) { return nullptr; } - + Target &target = *target_sp; Module *module = module_sp.get(); - + auto ProcessMatches = [this, &name, &target, module] (SymbolContextList &sc_list, Status &error) -> const Symbol* { llvm::SmallVector<const Symbol *, 1> external_symbols; @@ -820,7 +815,7 @@ SymbolContext::FindBestGlobalDataSymbol(const ConstString &name, Status &error) if (sym_ctx.symbol) { const Symbol *symbol = sym_ctx.symbol; const Address sym_address = symbol->GetAddress(); - + if (sym_address.IsValid()) { switch (symbol->GetType()) { case eSymbolTypeData: @@ -865,12 +860,12 @@ SymbolContext::FindBestGlobalDataSymbol(const ConstString &name, Status &error) if (name == symbol->GetReExportedSymbolName() && module == reexport_module_sp.get()) return nullptr; - + return FindBestGlobalDataSymbol( symbol->GetReExportedSymbolName(), error); } } break; - + case eSymbolTypeCode: // We already lookup functions elsewhere case eSymbolTypeVariable: case eSymbolTypeLocal: @@ -898,7 +893,7 @@ SymbolContext::FindBestGlobalDataSymbol(const ConstString &name, Status &error) } } } - + if (external_symbols.size() > 1) { StreamString ss; ss.Printf("Multiple external symbols found for '%s'\n", name.AsCString()); @@ -925,32 +920,32 @@ SymbolContext::FindBestGlobalDataSymbol(const ConstString &name, Status &error) return nullptr; } }; - + if (module) { SymbolContextList sc_list; module->FindSymbolsWithNameAndType(name, eSymbolTypeAny, sc_list); const Symbol *const module_symbol = ProcessMatches(sc_list, error); - + if (!error.Success()) { return nullptr; } else if (module_symbol) { return module_symbol; } } - + { SymbolContextList sc_list; target.GetImages().FindSymbolsWithNameAndType(name, eSymbolTypeAny, sc_list); const Symbol *const target_symbol = ProcessMatches(sc_list, error); - + if (!error.Success()) { return nullptr; } else if (target_symbol) { return target_symbol; } } - + return nullptr; // no error; we just didn't find anything } @@ -999,7 +994,7 @@ bool SymbolContextSpecifier::AddSpecification(const char *spec_string, break; case eModuleSpecified: { // See if we can find the Module, if so stick it in the SymbolContext. - FileSpec module_file_spec(spec_string, false); + FileSpec module_file_spec(spec_string); ModuleSpec module_spec(module_file_spec); lldb::ModuleSP module_sp( m_target_sp->GetImages().FindFirstModule(module_spec)); @@ -1013,7 +1008,7 @@ bool SymbolContextSpecifier::AddSpecification(const char *spec_string, // CompUnits can't necessarily be resolved here, since an inlined function // might show up in a number of CompUnits. Instead we just convert to a // FileSpec and store it away. - m_file_spec_ap.reset(new FileSpec(spec_string, false)); + m_file_spec_ap.reset(new FileSpec(spec_string)); m_type |= eFileSpecified; break; case eLineStartSpecified: @@ -1068,7 +1063,7 @@ bool SymbolContextSpecifier::SymbolContextMatches(SymbolContext &sc) { if (m_module_sp.get() != sc.module_sp.get()) return false; } else { - FileSpec module_file_spec(m_module_spec, false); + FileSpec module_file_spec(m_module_spec); if (!FileSpec::Equal(module_file_spec, sc.module_sp->GetFileSpec(), false)) return false; @@ -1259,7 +1254,7 @@ bool SymbolContextList::AppendIfUnique(const SymbolContext &sc, } if (merge_symbol_into_function && sc.symbol != nullptr && sc.comp_unit == nullptr && sc.function == nullptr && - sc.block == nullptr && sc.line_entry.IsValid() == false) { + sc.block == nullptr && !sc.line_entry.IsValid()) { if (sc.symbol->ValueIsAddress()) { for (pos = m_symbol_contexts.begin(); pos != end; ++pos) { // Don't merge symbols into inlined function symbol contexts @@ -1285,41 +1280,6 @@ bool SymbolContextList::AppendIfUnique(const SymbolContext &sc, return true; } -bool SymbolContextList::MergeSymbolContextIntoFunctionContext( - const SymbolContext &symbol_sc, uint32_t start_idx, uint32_t stop_idx) { - if (symbol_sc.symbol != nullptr && symbol_sc.comp_unit == nullptr && - symbol_sc.function == nullptr && symbol_sc.block == nullptr && - symbol_sc.line_entry.IsValid() == false) { - if (symbol_sc.symbol->ValueIsAddress()) { - const size_t end = std::min<size_t>(m_symbol_contexts.size(), stop_idx); - for (size_t i = start_idx; i < end; ++i) { - const SymbolContext &function_sc = m_symbol_contexts[i]; - // Don't merge symbols into inlined function symbol contexts - if (function_sc.block && function_sc.block->GetContainingInlinedBlock()) - continue; - - if (function_sc.function) { - if (function_sc.function->GetAddressRange().GetBaseAddress() == - symbol_sc.symbol->GetAddressRef()) { - // Do we already have a function with this symbol? - if (function_sc.symbol == symbol_sc.symbol) - return true; // Already have a symbol context with this symbol, - // return true - - if (function_sc.symbol == nullptr) { - // We successfully merged this symbol into an existing symbol - // context - m_symbol_contexts[i].symbol = symbol_sc.symbol; - return true; - } - } - } - } - } - } - return false; -} - void SymbolContextList::Clear() { m_symbol_contexts.clear(); } void SymbolContextList::Dump(Stream *s, Target *target) const { @@ -1346,14 +1306,6 @@ bool SymbolContextList::GetContextAtIndex(size_t idx, SymbolContext &sc) const { return false; } -bool SymbolContextList::GetLastContext(SymbolContext &sc) const { - if (!m_symbol_contexts.empty()) { - sc = m_symbol_contexts.back(); - return true; - } - return false; -} - bool SymbolContextList::RemoveContextAtIndex(size_t idx) { if (idx < m_symbol_contexts.size()) { m_symbol_contexts.erase(m_symbol_contexts.begin() + idx); |
