diff options
Diffstat (limited to 'source/Core/SearchFilter.cpp')
-rw-r--r-- | source/Core/SearchFilter.cpp | 140 |
1 files changed, 61 insertions, 79 deletions
diff --git a/source/Core/SearchFilter.cpp b/source/Core/SearchFilter.cpp index 2dfb26910ee0..6d29e21c310e 100644 --- a/source/Core/SearchFilter.cpp +++ b/source/Core/SearchFilter.cpp @@ -7,16 +7,35 @@ // //===----------------------------------------------------------------------===// -// C Includes -// C++ Includes - -// Other libraries and framework includes -// Project includes #include "lldb/Core/SearchFilter.h" + +#include "lldb/Breakpoint/Breakpoint.h" // for Breakpoint #include "lldb/Core/Module.h" +#include "lldb/Core/ModuleList.h" // for ModuleList #include "lldb/Symbol/CompileUnit.h" +#include "lldb/Symbol/SymbolContext.h" // for SymbolContext #include "lldb/Target/Target.h" -#include "lldb/lldb-private.h" +#include "lldb/Utility/ConstString.h" // for ConstString +#include "lldb/Utility/Error.h" // for Error +#include "lldb/Utility/Stream.h" // for Stream +#include "lldb/lldb-enumerations.h" // for SymbolContextItem::eSymbolCo... + +#include "llvm/ADT/StringRef.h" // for StringRef +#include "llvm/Support/ErrorHandling.h" // for llvm_unreachable + +#include <memory> // for shared_ptr +#include <mutex> // for recursive_mutex, lock_guard +#include <string> // for string + +#include <inttypes.h> // for PRIu64 +#include <string.h> // for size_t, strcmp + +namespace lldb_private { +class Address; +} +namespace lldb_private { +class Function; +} using namespace lldb; using namespace lldb_private; @@ -153,7 +172,7 @@ SearchFilter::WrapOptionsDict(StructuredData::DictionarySP options_dict_sp) { if (!options_dict_sp || !options_dict_sp->IsValid()) return StructuredData::DictionarySP(); - StructuredData::DictionarySP type_dict_sp(new StructuredData::Dictionary()); + auto type_dict_sp = std::make_shared<StructuredData::Dictionary>(); type_dict_sp->AddStringItem(GetSerializationSubclassKey(), GetFilterName()); type_dict_sp->AddItem(GetSerializationSubclassOptionsKey(), options_dict_sp); @@ -169,10 +188,10 @@ void SearchFilter::SerializeFileSpecList( if (num_modules == 0) return; - StructuredData::ArraySP module_array_sp(new StructuredData::Array()); + auto module_array_sp = std::make_shared<StructuredData::Array>(); for (size_t i = 0; i < num_modules; i++) { - module_array_sp->AddItem(StructuredData::StringSP( - new StructuredData::String(file_list.GetFileSpecAtIndex(i).GetPath()))); + module_array_sp->AddItem(std::make_shared<StructuredData::String>( + file_list.GetFileSpecAtIndex(i).GetPath())); } options_dict_sp->AddItem(GetKey(name), module_array_sp); } @@ -321,14 +340,14 @@ Searcher::CallbackReturn SearchFilter::DoFunctionIteration( SearchFilterSP SearchFilterForUnconstrainedSearches::CreateFromStructuredData( Target &target, const StructuredData::Dictionary &data_dict, Error &error) { // No options for an unconstrained search. - return SearchFilterSP( - new SearchFilterForUnconstrainedSearches(target.shared_from_this())); + return std::make_shared<SearchFilterForUnconstrainedSearches>( + target.shared_from_this()); } StructuredData::ObjectSP SearchFilterForUnconstrainedSearches::SerializeToStructuredData() { // The options dictionary is an empty dictionary: - StructuredData::DictionarySP result_sp(new StructuredData::Dictionary()); + auto result_sp = std::make_shared<StructuredData::Dictionary>(); return WrapOptionsDict(result_sp); } @@ -352,8 +371,7 @@ bool SearchFilterForUnconstrainedSearches::ModulePasses( lldb::SearchFilterSP SearchFilterForUnconstrainedSearches::DoCopyForBreakpoint( Breakpoint &breakpoint) { - SearchFilterSP ret_sp(new SearchFilterForUnconstrainedSearches(*this)); - return ret_sp; + return std::make_shared<SearchFilterForUnconstrainedSearches>(*this); } //---------------------------------------------------------------------- @@ -433,13 +451,7 @@ void SearchFilterByModule::Search(Searcher &searcher) { void SearchFilterByModule::GetDescription(Stream *s) { s->PutCString(", module = "); - if (s->GetVerbose()) { - char buffer[2048]; - m_module_spec.GetPath(buffer, 2047); - s->PutCString(buffer); - } else { - s->PutCString(m_module_spec.GetFilename().AsCString("<Unknown>")); - } + s->PutCString(m_module_spec.GetFilename().AsCString("<Unknown>")); } uint32_t SearchFilterByModule::GetFilterRequiredItems() { @@ -450,8 +462,7 @@ void SearchFilterByModule::Dump(Stream *s) const {} lldb::SearchFilterSP SearchFilterByModule::DoCopyForBreakpoint(Breakpoint &breakpoint) { - SearchFilterSP ret_sp(new SearchFilterByModule(*this)); - return ret_sp; + return std::make_shared<SearchFilterByModule>(*this); } SearchFilterSP SearchFilterByModule::CreateFromStructuredData( @@ -479,16 +490,15 @@ SearchFilterSP SearchFilterByModule::CreateFromStructuredData( } FileSpec module_spec(module, false); - return SearchFilterSP( - new SearchFilterByModule(target.shared_from_this(), module_spec)); + return std::make_shared<SearchFilterByModule>(target.shared_from_this(), + module_spec); } StructuredData::ObjectSP SearchFilterByModule::SerializeToStructuredData() { - StructuredData::DictionarySP options_dict_sp( - new StructuredData::Dictionary()); - StructuredData::ArraySP module_array_sp(new StructuredData::Array()); - module_array_sp->AddItem(StructuredData::StringSP( - new StructuredData::String(m_module_spec.GetPath()))); + auto options_dict_sp = std::make_shared<StructuredData::Dictionary>(); + auto module_array_sp = std::make_shared<StructuredData::Array>(); + module_array_sp->AddItem( + std::make_shared<StructuredData::String>(m_module_spec.GetPath())); options_dict_sp->AddItem(GetKey(OptionNames::ModList), module_array_sp); return WrapOptionsDict(options_dict_sp); } @@ -591,27 +601,15 @@ void SearchFilterByModuleList::GetDescription(Stream *s) { size_t num_modules = m_module_spec_list.GetSize(); if (num_modules == 1) { s->Printf(", module = "); - if (s->GetVerbose()) { - char buffer[2048]; - m_module_spec_list.GetFileSpecAtIndex(0).GetPath(buffer, 2047); - s->PutCString(buffer); - } else { - s->PutCString( - m_module_spec_list.GetFileSpecAtIndex(0).GetFilename().AsCString( - "<Unknown>")); - } + s->PutCString( + m_module_spec_list.GetFileSpecAtIndex(0).GetFilename().AsCString( + "<Unknown>")); } else { s->Printf(", modules(%" PRIu64 ") = ", (uint64_t)num_modules); for (size_t i = 0; i < num_modules; i++) { - if (s->GetVerbose()) { - char buffer[2048]; - m_module_spec_list.GetFileSpecAtIndex(i).GetPath(buffer, 2047); - s->PutCString(buffer); - } else { - s->PutCString( - m_module_spec_list.GetFileSpecAtIndex(i).GetFilename().AsCString( - "<Unknown>")); - } + s->PutCString( + m_module_spec_list.GetFileSpecAtIndex(i).GetFilename().AsCString( + "<Unknown>")); if (i != num_modules - 1) s->PutCString(", "); } @@ -626,8 +624,7 @@ void SearchFilterByModuleList::Dump(Stream *s) const {} lldb::SearchFilterSP SearchFilterByModuleList::DoCopyForBreakpoint(Breakpoint &breakpoint) { - SearchFilterSP ret_sp(new SearchFilterByModuleList(*this)); - return ret_sp; + return std::make_shared<SearchFilterByModuleList>(*this); } SearchFilterSP SearchFilterByModuleList::CreateFromStructuredData( @@ -650,8 +647,8 @@ SearchFilterSP SearchFilterByModuleList::CreateFromStructuredData( } } - return SearchFilterSP( - new SearchFilterByModuleList(target.shared_from_this(), modules)); + return std::make_shared<SearchFilterByModuleList>(target.shared_from_this(), + modules); } void SearchFilterByModuleList::SerializeUnwrapped( @@ -661,8 +658,7 @@ void SearchFilterByModuleList::SerializeUnwrapped( } StructuredData::ObjectSP SearchFilterByModuleList::SerializeToStructuredData() { - StructuredData::DictionarySP options_dict_sp( - new StructuredData::Dictionary()); + auto options_dict_sp = std::make_shared<StructuredData::Dictionary>(); SerializeUnwrapped(options_dict_sp); return WrapOptionsDict(options_dict_sp); } @@ -736,14 +732,13 @@ lldb::SearchFilterSP SearchFilterByModuleListAndCU::CreateFromStructuredData( cus.Append(FileSpec(cu, false)); } - return SearchFilterSP(new SearchFilterByModuleListAndCU( - target.shared_from_this(), modules, cus)); + return std::make_shared<SearchFilterByModuleListAndCU>( + target.shared_from_this(), modules, cus); } StructuredData::ObjectSP SearchFilterByModuleListAndCU::SerializeToStructuredData() { - StructuredData::DictionarySP options_dict_sp( - new StructuredData::Dictionary()); + auto options_dict_sp = std::make_shared<StructuredData::Dictionary>(); SearchFilterByModuleList::SerializeUnwrapped(options_dict_sp); SerializeFileSpecList(options_dict_sp, OptionNames::CUList, m_cu_spec_list); return WrapOptionsDict(options_dict_sp); @@ -827,27 +822,15 @@ void SearchFilterByModuleListAndCU::GetDescription(Stream *s) { size_t num_modules = m_module_spec_list.GetSize(); if (num_modules == 1) { s->Printf(", module = "); - if (s->GetVerbose()) { - char buffer[2048]; - m_module_spec_list.GetFileSpecAtIndex(0).GetPath(buffer, 2047); - s->PutCString(buffer); - } else { - s->PutCString( - m_module_spec_list.GetFileSpecAtIndex(0).GetFilename().AsCString( - "<Unknown>")); - } + s->PutCString( + m_module_spec_list.GetFileSpecAtIndex(0).GetFilename().AsCString( + "<Unknown>")); } else if (num_modules > 0) { s->Printf(", modules(%" PRIu64 ") = ", static_cast<uint64_t>(num_modules)); for (size_t i = 0; i < num_modules; i++) { - if (s->GetVerbose()) { - char buffer[2048]; - m_module_spec_list.GetFileSpecAtIndex(i).GetPath(buffer, 2047); - s->PutCString(buffer); - } else { - s->PutCString( - m_module_spec_list.GetFileSpecAtIndex(i).GetFilename().AsCString( - "<Unknown>")); - } + s->PutCString( + m_module_spec_list.GetFileSpecAtIndex(i).GetFilename().AsCString( + "<Unknown>")); if (i != num_modules - 1) s->PutCString(", "); } @@ -862,6 +845,5 @@ void SearchFilterByModuleListAndCU::Dump(Stream *s) const {} lldb::SearchFilterSP SearchFilterByModuleListAndCU::DoCopyForBreakpoint(Breakpoint &breakpoint) { - SearchFilterSP ret_sp(new SearchFilterByModuleListAndCU(*this)); - return ret_sp; + return std::make_shared<SearchFilterByModuleListAndCU>(*this); } |