CompUnitSP Module::GetCompileUnitAtIndex (uint32_t index) { Mutex::Locker locker (m_mutex); uint32_t num_comp_units = GetNumCompileUnits (); CompUnitSP cu_sp; if (index < num_comp_units) { SymbolVendor *symbols = GetSymbolVendor (); if (symbols) cu_sp = symbols->GetCompileUnitAtIndex(index); } return cu_sp; }
void Module::ParseAllDebugSymbols() { Mutex::Locker locker (m_mutex); uint32_t num_comp_units = GetNumCompileUnits(); if (num_comp_units == 0) return; TargetSP null_target; SymbolContext sc(null_target, GetSP()); uint32_t cu_idx; SymbolVendor *symbols = GetSymbolVendor (); for (cu_idx = 0; cu_idx < num_comp_units; cu_idx++) { sc.comp_unit = symbols->GetCompileUnitAtIndex(cu_idx).get(); if (sc.comp_unit) { sc.function = NULL; symbols->ParseVariablesForContext(sc); symbols->ParseCompileUnitFunctions(sc); uint32_t func_idx; for (func_idx = 0; (sc.function = sc.comp_unit->GetFunctionAtIndex(func_idx).get()) != NULL; ++func_idx) { symbols->ParseFunctionBlocks(sc); // Parse the variables for this function and all its blocks symbols->ParseVariablesForContext(sc); } // Parse all types for this compile unit sc.function = NULL; symbols->ParseTypes(sc); } } }