1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 17:57:35 +00:00

LibDebug: Make use of the newly supported data forms

With this change, our DWARF 5 support is nearly feature-complete.
This commit is contained in:
Daniel Bertalan 2021-10-09 17:45:48 +02:00 committed by Linus Groh
parent 8278039105
commit 622d408d82
2 changed files with 31 additions and 4 deletions

View file

@ -31,6 +31,12 @@ void AddressRanges::for_each_range(Function<void(Range)> callback)
current_base_address = base;
break;
}
case RangeListEntryType::BaseAddressX: {
FlatPtr index;
m_range_lists_stream.read_LEB128_unsigned(index);
current_base_address = m_compilation_unit.get_address(index);
break;
}
case RangeListEntryType::OffsetPair: {
Optional<FlatPtr> base_address = current_base_address;
if (!base_address.has_value()) {
@ -56,6 +62,21 @@ void AddressRanges::for_each_range(Function<void(Range)> callback)
callback(Range { start, start + length });
break;
}
case RangeListEntryType::StartXEndX: {
size_t start, end;
m_range_lists_stream.read_LEB128_unsigned(start);
m_range_lists_stream.read_LEB128_unsigned(end);
callback(Range { m_compilation_unit.get_address(start), m_compilation_unit.get_address(end) });
break;
}
case RangeListEntryType::StartXLength: {
size_t start, length;
m_range_lists_stream.read_LEB128_unsigned(start);
m_range_lists_stream.read_LEB128_unsigned(length);
auto start_addr = m_compilation_unit.get_address(start);
callback(Range { start_addr, start_addr + length });
break;
}
case RangeListEntryType::EndOfList:
return;
default: