[LLDB] - Implement the support for the .debug_loclists section.
This implements the support for .debug_loclists section, which is
DWARF 5 version of .debug_loc.
Currently, clang is able to emit it with the use of D53365.
Differential revision: https://reviews.llvm.org/D53436
llvm-svn: 345016
diff --git a/lldb/source/Expression/DWARFExpression.cpp b/lldb/source/Expression/DWARFExpression.cpp
index a3f0b02..4816b88 100644
--- a/lldb/source/Expression/DWARFExpression.cpp
+++ b/lldb/source/Expression/DWARFExpression.cpp
@@ -3037,6 +3037,7 @@
high_pc = debug_loc_data.GetAddress(offset_ptr);
return true;
case SplitDwarfLocationList:
+ case LocLists:
switch (debug_loc_data.GetU8(offset_ptr)) {
case DW_LLE_end_of_list:
return false;
@@ -3054,8 +3055,19 @@
high_pc = low_pc + length;
return true;
}
+ case DW_LLE_start_length: {
+ low_pc = debug_loc_data.GetAddress(offset_ptr);
+ high_pc = low_pc + debug_loc_data.GetULEB128(offset_ptr);
+ return true;
+ }
+ case DW_LLE_start_end: {
+ low_pc = debug_loc_data.GetAddress(offset_ptr);
+ high_pc = debug_loc_data.GetAddress(offset_ptr);
+ return true;
+ }
default:
// Not supported entry type
+ lldbassert(false && "Not supported location list type");
return false;
}
}