mirror of
https://git.suyu.dev/suyu/breakpad.git
synced 2026-01-05 22:18:21 +01:00
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:
parent
2b936b06c1
commit
f6669d6df4
6 changed files with 48 additions and 59 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue