summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp
diff options
context:
space:
mode:
authorGeorge Rimar <grimar@accesssoftek.com>2018-10-17 07:37:26 +0000
committerGeorge Rimar <grimar@accesssoftek.com>2018-10-17 07:37:26 +0000
commit1d478900a029e930917459f667c3f834efcd064d (patch)
tree4b9f8d1c88da1a094b7f30e133912d89e9fc0652 /lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp
parentbf6a2fc329bc05f3c08a1a62568e8933dc692bf9 (diff)
downloadbcm5719-llvm-1d478900a029e930917459f667c3f834efcd064d.tar.gz
bcm5719-llvm-1d478900a029e930917459f667c3f834efcd064d.zip
[LLDB] - Add support for DW_RLE_start_end entries (.debug_rnglists)
DWARF5 describes DW_RLE_start_end as: This is a form of bounded range entry that has two target address operands. Each operand is the same size as used in DW_FORM_addr. These indicate the starting and ending addresses, respectively, that define the address range for which the following location is valid. The patch implements the support. Differential revision: https://reviews.llvm.org/D53193 llvm-svn: 344674
Diffstat (limited to 'lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp')
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp
index e891fce4288..da97e90c672 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp
@@ -143,10 +143,17 @@ bool DWARFDebugRngLists::ExtractRangeList(const DWARFDataExtractor &data,
break;
}
+ case DW_RLE_start_end: {
+ dw_addr_t begin = data.GetMaxU64(offset_ptr, addrSize);
+ dw_addr_t end = data.GetMaxU64(offset_ptr, addrSize);
+ rangeList.Append(DWARFRangeList::Entry(begin, end - begin));
+ break;
+ }
+
default:
// Next encodings are not yet supported:
// DW_RLE_base_addressx, DW_RLE_startx_endx, DW_RLE_startx_length,
- // DW_RLE_offset_pair, DW_RLE_base_address, DW_RLE_start_end
+ // DW_RLE_offset_pair, DW_RLE_base_address.
lldbassert(0 && "unknown range list entry encoding");
error = true;
}
OpenPOWER on IntegriCloud