+
+ private:
+ void parseImpl(DWARFContext &Context, const DWARFDebugAbbrev *DA,
+ StringRef Section, StringRef RS, StringRef SS, StringRef SOS,
+ StringRef AOS, const RelocAddrMap &M, bool LE) override {
+ if (Parsed)
+ return;
+ DataExtractor Data(Section, LE, 0);
+ uint32_t Offset = 0;
+ while (Data.isValidOffset(Offset)) {
+ auto U = make_unique<UnitType>(Context, DA, Section, RS, SS, SOS, AOS, &M,
+ Data.isLittleEndian(), *this);
+ if (!U->extract(Data, &Offset))
+ break;
+ this->push_back(std::move(U));
+ Offset = this->back()->getNextUnitOffset();
+ }
+ Parsed = true;
+ }