//---------------------------------------------------------------------- // Extract //---------------------------------------------------------------------- bool DWARFDebugAranges::Extract(const DataExtractor &debug_aranges_data) { if (debug_aranges_data.ValidOffset(0)) { uint32_t offset = 0; DWARFDebugArangeSet set; Range range; while (set.Extract(debug_aranges_data, &offset)) { const uint32_t num_descriptors = set.NumDescriptors(); if (num_descriptors > 0) { const dw_offset_t cu_offset = set.GetCompileUnitDIEOffset(); for (uint32_t i=0; i<num_descriptors; ++i) { const DWARFDebugArangeSet::Descriptor &descriptor = set.GetDescriptorRef(i); m_aranges.Append(RangeToDIE::Entry (descriptor.address, descriptor.length, cu_offset)); } } set.Clear(); } } return false; }
void operator() (const DWARFDebugArangeSet& set) { count += set.NumDescriptors(); }