Revert "Refactor rangelist handling to prepare for dwarf5 .debug_rngslist"

This reverts commit 2b936b06c1.

After getting deep into the dwarf5 range reader, I realized that this
should be done a somewhat different way. So reverting in favor or
a better design, coming in a few minutes.

Change-Id: Ie0b2846e70b3df1e637831e96ea69fe093f4e712
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2446011
Reviewed-by: Mark Mentovai <mark@chromium.org>
This commit is contained in:
Sterling Augustine 2020-10-02 07:44:24 -07:00
parent 2b936b06c1
commit f6669d6df4
6 changed files with 48 additions and 59 deletions

View file

@ -1569,11 +1569,10 @@ void LineInfo::ReadLines() {
}
RangeListReader::RangeListReader(const uint8_t* buffer, uint64_t size,
ByteReader* reader)
: buffer_(buffer), size_(size), reader_(reader) { }
ByteReader* reader, RangeListHandler* handler)
: buffer_(buffer), size_(size), reader_(reader), handler_(handler) { }
bool RangeListReader::ReadRangeList(uint64_t offset,
RangeListHandler* handler) {
bool RangeListReader::ReadRangeList(uint64_t offset) {
const uint64_t max_address =
(reader_->AddressSize() == 4) ? 0xffffffffUL
: 0xffffffffffffffffULL;
@ -1590,12 +1589,12 @@ bool RangeListReader::ReadRangeList(uint64_t offset,
reader_->ReadAddress(buffer_ + offset + reader_->AddressSize());
if (start_address == max_address) { // Base address selection
handler->SetBaseAddress(end_address);
handler_->SetBaseAddress(end_address);
} else if (start_address == 0 && end_address == 0) { // End-of-list
handler->Finish();
handler_->Finish();
list_end = true;
} else { // Add a range entry
handler->AddRange(start_address, end_address);
handler_->AddRange(start_address, end_address);
}
offset += entry_size;

View file

@ -243,14 +243,16 @@ class RangeListHandler {
class RangeListReader {
public:
RangeListReader(const uint8_t* buffer, uint64_t size, ByteReader* reader);
RangeListReader(const uint8_t* buffer, uint64_t size, ByteReader* reader,
RangeListHandler* handler);
bool ReadRangeList(uint64_t offset, RangeListHandler* handler);
bool ReadRangeList(uint64_t offset);
private:
const uint8_t* buffer_;
uint64_t size_;
ByteReader* reader_;
RangeListHandler* handler_;
};
// This class is the main interface between the reader and the