mirror of
https://github.com/intel/llvm.git
synced 2026-01-23 07:58:23 +08:00
Added the ability to get a list of types from a SBModule or SBCompileUnit. Sebastien Metrot wanted this, and sent a hollowed out patch. I filled in the blanks and did the low level implementation. The new functions are:
//------------------------------------------------------------------ /// Get all types matching \a type_mask from debug info in this /// module. /// /// @param[in] type_mask /// A bitfield that consists of one or more bits logically OR'ed /// together from the lldb::TypeClass enumeration. This allows /// you to request only structure types, or only class, struct /// and union types. Passing in lldb::eTypeClassAny will return /// all types found in the debug information for this module. /// /// @return /// A list of types in this module that match \a type_mask //------------------------------------------------------------------ lldb::SBTypeList SBModule::GetTypes (uint32_t type_mask) //------------------------------------------------------------------ /// Get all types matching \a type_mask from debug info in this /// compile unit. /// /// @param[in] type_mask /// A bitfield that consists of one or more bits logically OR'ed /// together from the lldb::TypeClass enumeration. This allows /// you to request only structure types, or only class, struct /// and union types. Passing in lldb::eTypeClassAny will return /// all types found in the debug information for this compile /// unit. /// /// @return /// A list of types in this compile unit that match \a type_mask //------------------------------------------------------------------ lldb::SBTypeList SBCompileUnit::GetTypes (uint32_t type_mask = lldb::eTypeClassAny); This lets you request types by filling out a mask that contains one or more bits from the lldb::TypeClass enumerations, so you can only get the types you really want. llvm-svn: 184251
This commit is contained in:
@@ -1120,6 +1120,43 @@ SymbolFileDWARFDebugMap::FindFunctions (const RegularExpression& regex, bool inc
|
||||
return sc_list.GetSize() - initial_size;
|
||||
}
|
||||
|
||||
size_t
|
||||
SymbolFileDWARFDebugMap::GetTypes (SymbolContextScope *sc_scope,
|
||||
uint32_t type_mask,
|
||||
TypeList &type_list)
|
||||
{
|
||||
Timer scoped_timer (__PRETTY_FUNCTION__,
|
||||
"SymbolFileDWARFDebugMap::GetTypes (type_mask = 0x%8.8x)",
|
||||
type_mask);
|
||||
|
||||
|
||||
uint32_t initial_size = type_list.GetSize();
|
||||
SymbolFileDWARF *oso_dwarf = NULL;
|
||||
if (sc_scope)
|
||||
{
|
||||
SymbolContext sc;
|
||||
sc_scope->CalculateSymbolContext(&sc);
|
||||
|
||||
CompileUnitInfo *cu_info = GetCompUnitInfo (sc);
|
||||
if (cu_info)
|
||||
{
|
||||
oso_dwarf = GetSymbolFileByCompUnitInfo (cu_info);
|
||||
if (oso_dwarf)
|
||||
oso_dwarf->GetTypes (sc_scope, type_mask, type_list);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint32_t oso_idx = 0;
|
||||
while ((oso_dwarf = GetSymbolFileByOSOIndex (oso_idx++)) != NULL)
|
||||
{
|
||||
oso_dwarf->GetTypes (sc_scope, type_mask, type_list);
|
||||
}
|
||||
}
|
||||
return type_list.GetSize() - initial_size;
|
||||
}
|
||||
|
||||
|
||||
TypeSP
|
||||
SymbolFileDWARFDebugMap::FindDefinitionTypeForDWARFDeclContext (const DWARFDeclContext &die_decl_ctx)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user