Exemplo n.º 1
0
//----------------------------------------------------------------------
// Extract
//----------------------------------------------------------------------
bool
DWARFDebugAranges::Extract(const DataExtractor &debug_aranges_data)
{
    if (debug_aranges_data.ValidOffset(0))
    {
        uint32_t offset = 0;

        typedef std::vector<DWARFDebugArangeSet>    SetCollection;
        typedef SetCollection::const_iterator       SetCollectionIter;
        SetCollection sets;

        DWARFDebugArangeSet set;
        Range range;
        while (set.Extract(debug_aranges_data, &offset))
            sets.push_back(set);

        uint32_t count = 0;

        for_each(sets.begin(), sets.end(), CountArangeDescriptors(count));

        if (count > 0)
        {
            m_aranges.reserve(count);
            AddArangeDescriptors range_adder(m_aranges);
            for_each(sets.begin(), sets.end(), range_adder);
        }

    //  puts("\n\nDWARFDebugAranges list is:\n");
    //  for_each(m_aranges.begin(), m_aranges.end(), PrintRange);
    }
    return false;
}
Exemplo n.º 2
0
bool DWARFDebugAranges::extract(DataExtractor debug_aranges_data) {
  if (debug_aranges_data.isValidOffset(0)) {
    uint32_t offset = 0;

    typedef std::vector<DWARFDebugArangeSet> SetCollection;
    typedef SetCollection::const_iterator SetCollectionIter;
    SetCollection sets;

    DWARFDebugArangeSet set;
    Range range;
    while (set.extract(debug_aranges_data, &offset))
      sets.push_back(set);

    uint32_t count = 0;

    std::for_each(sets.begin(), sets.end(), CountArangeDescriptors(count));

    if (count > 0) {
      Aranges.reserve(count);
      AddArangeDescriptors range_adder(Aranges);
      std::for_each(sets.begin(), sets.end(), range_adder);
    }
  }
  return false;
}