diff options
Diffstat (limited to 'lldb/source/Core/Module.cpp')
-rw-r--r-- | lldb/source/Core/Module.cpp | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/lldb/source/Core/Module.cpp b/lldb/source/Core/Module.cpp index 026950e03db..8b07a76eead 100644 --- a/lldb/source/Core/Module.cpp +++ b/lldb/source/Core/Module.cpp @@ -193,16 +193,6 @@ Module::GetCompileUnitAtIndex (uint32_t index) return cu_sp; } -//CompUnitSP -//Module::FindCompUnit(lldb::user_id_t uid) -//{ -// CompUnitSP cu_sp; -// SymbolVendor *symbols = GetSymbolVendor (); -// if (symbols) -// cu_sp = symbols->FindCompUnit(uid); -// return cu_sp; -//} - bool Module::ResolveFileAddress (lldb::addr_t vm_addr, Address& so_addr) { @@ -323,6 +313,28 @@ Module::FindGlobalVariables(const RegularExpression& regex, bool append, uint32_ } uint32_t +Module::FindCompileUnits (const FileSpec &path, + bool append, + SymbolContextList &sc_list) +{ + if (!append) + sc_list.Clear(); + + const uint32_t start_size = sc_list.GetSize(); + const uint32_t num_compile_units = GetNumCompileUnits(); + SymbolContext sc; + sc.module_sp = GetSP(); + const bool compare_directory = path.GetDirectory(); + for (uint32_t i=0; i<num_compile_units; ++i) + { + sc.comp_unit = GetCompileUnitAtIndex(i).get(); + if (FileSpec::Equal (*sc.comp_unit, path, compare_directory)) + sc_list.Append(sc); + } + return sc_list.GetSize() - start_size; +} + +uint32_t Module::FindFunctions (const ConstString &name, uint32_t name_type_mask, bool include_symbols, |