[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;
     }
   }