diff options
| author | George Rimar <grimar@accesssoftek.com> | 2018-10-17 07:37:26 +0000 |
|---|---|---|
| committer | George Rimar <grimar@accesssoftek.com> | 2018-10-17 07:37:26 +0000 |
| commit | 1d478900a029e930917459f667c3f834efcd064d (patch) | |
| tree | 4b9f8d1c88da1a094b7f30e133912d89e9fc0652 /lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp | |
| parent | bf6a2fc329bc05f3c08a1a62568e8933dc692bf9 (diff) | |
| download | bcm5719-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.cpp | 9 |
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; } |

