diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.h --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.h @@ -22,21 +22,14 @@ DWARFDebugRanges(); void Extract(lldb_private::DWARFContext &context); - bool FindRanges(const DWARFUnit *cu, dw_offset_t debug_ranges_offset, - DWARFRangeList &range_list) const; - - static void Dump(lldb_private::Stream &s, - const lldb_private::DWARFDataExtractor &debug_ranges_data, - lldb::offset_t *offset_ptr, dw_addr_t cu_base_addr); + DWARFRangeList FindRanges(const DWARFUnit *cu, + dw_offset_t debug_ranges_offset) const; protected: bool Extract(lldb_private::DWARFContext &context, lldb::offset_t *offset_ptr, DWARFRangeList &range_list); - typedef std::map range_map; - typedef range_map::iterator range_map_iterator; - typedef range_map::const_iterator range_map_const_iterator; - range_map m_range_map; + std::map m_range_map; }; #endif // LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFDEBUGRANGES_H diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp @@ -8,7 +8,6 @@ #include "DWARFDebugRanges.h" #include "DWARFUnit.h" -#include "lldb/Utility/Stream.h" using namespace lldb_private; @@ -72,55 +71,17 @@ return range_offset != *offset_ptr; } -void DWARFDebugRanges::Dump(Stream &s, - const DWARFDataExtractor &debug_ranges_data, - lldb::offset_t *offset_ptr, - dw_addr_t cu_base_addr) { - uint32_t addr_size = s.GetAddressByteSize(); - - dw_addr_t base_addr = cu_base_addr; - 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); - // Extend 4 byte addresses that consists of 32 bits of 1's to be 64 bits of - // ones - if (begin == 0xFFFFFFFFull && addr_size == 4) - begin = LLDB_INVALID_ADDRESS; - - s.Indent(); - if (begin == 0 && end == 0) { - s.PutCString(" End"); - break; - } else if (begin == LLDB_INVALID_ADDRESS) { - // A base address selection entry - base_addr = end; - DumpAddress(s.AsRawOstream(), base_addr, sizeof(dw_addr_t), - " Base address = "); - } else { - // Convert from offset to an address - dw_addr_t begin_addr = begin + base_addr; - dw_addr_t end_addr = end + base_addr; - - DumpAddressRange(s.AsRawOstream(), begin_addr, end_addr, - sizeof(dw_addr_t), nullptr); - } - } -} - -bool DWARFDebugRanges::FindRanges(const DWARFUnit *cu, - dw_offset_t debug_ranges_offset, - DWARFRangeList &range_list) const { +DWARFRangeList +DWARFDebugRanges::FindRanges(const DWARFUnit *cu, + dw_offset_t debug_ranges_offset) const { dw_addr_t debug_ranges_address = cu->GetRangesBase() + debug_ranges_offset; - range_map_const_iterator pos = m_range_map.find(debug_ranges_address); - if (pos != m_range_map.end()) { - range_list = pos->second; - - // All DW_AT_ranges are relative to the base address of the compile - // unit. We add the compile unit base address to make sure all the - // addresses are properly fixed up. - range_list.Slide(cu->GetBaseAddress()); - return true; - } - return false; + auto pos = m_range_map.find(debug_ranges_address); + DWARFRangeList ans = + pos == m_range_map.end() ? DWARFRangeList() : pos->second; + + // All DW_AT_ranges are relative to the base address of the compile + // unit. We add the compile unit base address to make sure all the + // addresses are properly fixed up. + ans.Slide(cu->GetBaseAddress()); + return ans; } diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp @@ -1032,9 +1032,7 @@ if (!debug_ranges) return llvm::make_error( "No debug_ranges section"); - DWARFRangeList ranges; - debug_ranges->FindRanges(this, offset, ranges); - return ranges; + return debug_ranges->FindRanges(this, offset); } if (!GetRnglistTable())