summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp')
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp45
1 files changed, 18 insertions, 27 deletions
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp
index e380a8e081b..89f6562b047 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp
@@ -29,12 +29,11 @@ static dw_addr_t GetBaseAddressMarker(uint32_t addr_size) {
DWARFDebugRanges::DWARFDebugRanges() : m_range_map() {}
-void DWARFDebugRanges::Extract(SymbolFileDWARF *dwarf2Data,
- lldb_private::DWARFContext &dwarf_context) {
+void DWARFDebugRanges::Extract(SymbolFileDWARF *dwarf2Data) {
DWARFRangeList range_list;
lldb::offset_t offset = 0;
dw_offset_t debug_ranges_offset = offset;
- while (Extract(dwarf2Data, dwarf_context, &offset, range_list)) {
+ while (Extract(dwarf2Data, &offset, range_list)) {
range_list.Sort();
m_range_map[debug_ranges_offset] = range_list;
debug_ranges_offset = offset;
@@ -42,24 +41,21 @@ void DWARFDebugRanges::Extract(SymbolFileDWARF *dwarf2Data,
}
bool DWARFDebugRanges::Extract(SymbolFileDWARF *dwarf2Data,
- DWARFContext &dwarf_context,
lldb::offset_t *offset_ptr,
DWARFRangeList &range_list) {
range_list.Clear();
lldb::offset_t range_offset = *offset_ptr;
- const DWARFDataExtractor *debug_ranges =
- dwarf_context.getOrLoadDebugRangesData();
- if (!debug_ranges)
- return false;
-
- uint32_t addr_size = debug_ranges->GetAddressByteSize();
+ const DWARFDataExtractor &debug_ranges_data =
+ dwarf2Data->get_debug_ranges_data();
+ uint32_t addr_size = debug_ranges_data.GetAddressByteSize();
dw_addr_t base_addr = 0;
dw_addr_t base_addr_marker = GetBaseAddressMarker(addr_size);
- while (debug_ranges->ValidOffsetForDataOfSize(*offset_ptr, 2 * addr_size)) {
- dw_addr_t begin = debug_ranges->GetMaxU64(offset_ptr, addr_size);
- dw_addr_t end = debug_ranges->GetMaxU64(offset_ptr, addr_size);
+ while (
+ debug_ranges_data.ValidOffsetForDataOfSize(*offset_ptr, 2 * addr_size)) {
+ dw_addr_t begin = debug_ranges_data.GetMaxU64(offset_ptr, addr_size);
+ dw_addr_t end = debug_ranges_data.GetMaxU64(offset_ptr, addr_size);
if (!begin && !end) {
// End of range list
@@ -259,38 +255,33 @@ bool DWARFDebugRngLists::FindRanges(const DWARFUnit *cu,
return false;
}
-void DWARFDebugRngLists::Extract(SymbolFileDWARF *dwarf2Data,
- lldb_private::DWARFContext &dwarf_context) {
- const DWARFDataExtractor *data = dwarf_context.getOrLoadDebugRnglistsData();
- if (!data)
- return;
-
+void DWARFDebugRngLists::Extract(SymbolFileDWARF *dwarf2Data) {
+ const DWARFDataExtractor &data = dwarf2Data->get_debug_rnglists_data();
lldb::offset_t offset = 0;
- uint64_t length = data->GetU32(&offset);
+ uint64_t length = data.GetU32(&offset);
// FIXME: Handle DWARF64.
lldb::offset_t end = offset + length;
// Check version.
- if (data->GetU16(&offset) < 5)
+ if (data.GetU16(&offset) < 5)
return;
- uint8_t addrSize = data->GetU8(&offset);
+ uint8_t addrSize = data.GetU8(&offset);
// We do not support non-zero segment selector size.
- if (data->GetU8(&offset) != 0) {
+ if (data.GetU8(&offset) != 0) {
lldbassert(0 && "not implemented");
return;
}
- uint32_t offsetsAmount = data->GetU32(&offset);
+ uint32_t offsetsAmount = data.GetU32(&offset);
for (uint32_t i = 0; i < offsetsAmount; ++i)
- Offsets.push_back(data->GetMaxU64(&offset, 4));
+ Offsets.push_back(data.GetMaxU64(&offset, 4));
lldb::offset_t listOffset = offset;
std::vector<RngListEntry> rangeList;
- while (offset < end &&
- ExtractRangeList(*data, addrSize, &offset, rangeList)) {
+ while (offset < end && ExtractRangeList(data, addrSize, &offset, rangeList)) {
m_range_map[listOffset] = rangeList;
listOffset = offset;
}
OpenPOWER on IntegriCloud