https://github.com/ZequanWu created https://github.com/llvm/llvm-project/pull/86568
`ParseLineTable` not only parses .debug_line but also constructs `LineTable`. This moves `m_parse_time` into the the function body of `ParseLLVMLineTable` to more accurately reflect parsing time on .debug_line. This also add missing timer when parsing `.debug_abbrev`. >From 19dd9a13c21d70b42b9d68aed6fb0b5a5e494685 Mon Sep 17 00:00:00 2001 From: Zequan Wu <zequa...@google.com> Date: Mon, 25 Mar 2024 15:49:42 -0400 Subject: [PATCH] [lldb][Dwarf] Fix dwarf parse time for line table and .debug_abbrev. --- .../Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp index 08ce7b82b0c16a..8039a35ed8941c 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp @@ -145,8 +145,10 @@ static PluginProperties &GetGlobalPluginProperties() { static const llvm::DWARFDebugLine::LineTable * ParseLLVMLineTable(DWARFContext &context, llvm::DWARFDebugLine &line, - dw_offset_t line_offset, dw_offset_t unit_offset) { + dw_offset_t line_offset, dw_offset_t unit_offset, + StatsDuration &parse_time) { Log *log = GetLog(DWARFLog::DebugInfo); + ElapsedTime elapsed(parse_time); llvm::DWARFDataExtractor data = context.getOrLoadLineData().GetAsLLVMDWARF(); llvm::DWARFContext &ctx = context.GetAsLLVM(); @@ -693,6 +695,7 @@ llvm::DWARFDebugAbbrev *SymbolFileDWARF::DebugAbbrev() { if (debug_abbrev_data.GetByteSize() == 0) return nullptr; + ElapsedTime elapsed(m_parse_time); auto abbr = std::make_unique<llvm::DWARFDebugAbbrev>(debug_abbrev_data.GetAsLLVM()); llvm::Error error = abbr->parse(); @@ -1228,10 +1231,9 @@ bool SymbolFileDWARF::ParseLineTable(CompileUnit &comp_unit) { if (offset == DW_INVALID_OFFSET) return false; - ElapsedTime elapsed(m_parse_time); llvm::DWARFDebugLine line; - const llvm::DWARFDebugLine::LineTable *line_table = - ParseLLVMLineTable(m_context, line, offset, dwarf_cu->GetOffset()); + const llvm::DWARFDebugLine::LineTable *line_table = ParseLLVMLineTable( + m_context, line, offset, dwarf_cu->GetOffset(), m_parse_time); if (!line_table) return false; _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits