[Lldb-commits] [PATCH] D81589: [lldb/SymbolFile] Don't parse the whole line table for the support files (WIP)

Greg Clayton via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Wed Jun 10 21:02:14 PDT 2020

clayborg requested changes to this revision.
clayborg added a comment.
This revision now requires changes to proceed.

Yes this fixes the regression and actually speeds things up a bit. My results were a speed up of 17% to 30% versus 11.3.1 LLDB.

Just one nit in the way we are getting the DW_AT_stmt_list and not adding in the line table offset in the inline comments and this is good to go.

Comment at: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:893-896
+  const dw_offset_t cu_line_offset = dwarf_cu_die.GetAttributeValueAsUnsigned(
+      DW_AT_stmt_list, DW_INVALID_OFFSET);
+  if (cu_line_offset == DW_INVALID_OFFSET)
+    return false;
DWARFContext::getLineTableForUnit() in llvm/lib/DebugInfo/DWARF/DWARFContext.cpp grabs the DW_AT_stmt_list like this:

  auto Offset = toSectionOffset(UnitDIE.find(DW_AT_stmt_list));
  if (!Offset)
    return false; // No line table for this compile unit.

  uint64_t stmtOffset = *Offset + U->getLineTableOffset();
Modifying this a bit would be a good idea to make sure we are compatible with all DWARF. Or we can put a function into DWARFUnit that does this correctly and switch DWARFContext::getLineTableForUnit() and our code over to use it to avoid duplicated code. 



More information about the lldb-commits mailing list