jankratochvil created this revision. jankratochvil added reviewers: labath, clayborg. jankratochvil added a project: LLDB. Herald added a subscriber: JDevlieghere. jankratochvil requested review of this revision.
With DWZ it is no longer being used just for `DW_TAG_type_unit` but now it is used also for `DW_TAG_partial_unit`. Therefore the former name would be inappropriate. All DWZ patches are also applied at: `git clone -b dwz git://git.jankratochvil.net/lldb` There is a copy: `git clone -b dwz https://github.com/jankratochvil/llvm-project` Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D96238 Files: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h Index: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h =================================================================== --- lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h +++ lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h @@ -491,7 +491,7 @@ void FindDwpSymbolFile(); - const lldb_private::FileSpecList &GetTypeUnitSupportFiles(DWARFTypeUnit &tu); + const lldb_private::FileSpecList &GetSharedUnitSupportFiles(DWARFUnit &tu); lldb::ModuleWP m_debug_map_module_wp; SymbolFileDWARFDebugMap *m_debug_map_symfile; @@ -526,7 +526,7 @@ DIEToClangType m_forward_decl_die_to_clang_type; ClangTypeToDIE m_forward_decl_clang_type_to_die; llvm::DenseMap<dw_offset_t, lldb_private::FileSpecList> - m_type_unit_support_files; + m_shared_unit_support_files; std::vector<uint32_t> m_lldb_cu_to_dwarf_unit; }; Index: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp =================================================================== --- lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp +++ lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp @@ -919,15 +919,14 @@ return FileSpec(); } - auto &tu = llvm::cast<DWARFTypeUnit>(unit); - return GetTypeUnitSupportFiles(tu).GetFileSpecAtIndex(file_idx); + return GetSharedUnitSupportFiles(unit).GetFileSpecAtIndex(file_idx); } const FileSpecList & -SymbolFileDWARF::GetTypeUnitSupportFiles(DWARFTypeUnit &tu) { +SymbolFileDWARF::GetSharedUnitSupportFiles(DWARFUnit &unit) { static FileSpecList empty_list; - dw_offset_t offset = tu.GetLineTableOffset(); + dw_offset_t offset = unit.GetLineTableOffset(); if (offset == DW_INVALID_OFFSET || offset == llvm::DenseMapInfo<dw_offset_t>::getEmptyKey() || offset == llvm::DenseMapInfo<dw_offset_t>::getTombstoneKey()) @@ -935,7 +934,7 @@ // Many type units can share a line table, so parse the support file list // once, and cache it based on the offset field. - auto iter_bool = m_type_unit_support_files.try_emplace(offset); + auto iter_bool = m_shared_unit_support_files.try_emplace(offset); FileSpecList &list = iter_bool.first->second; if (iter_bool.second) { uint64_t line_table_offset = offset; @@ -944,16 +943,17 @@ llvm::DWARFDebugLine::Prologue prologue; auto report = [](llvm::Error error) { Log *log = LogChannelDWARF::GetLogIfAll(DWARF_LOG_DEBUG_INFO); - LLDB_LOG_ERROR(log, std::move(error), - "SymbolFileDWARF::GetTypeUnitSupportFiles failed to parse " - "the line table prologue"); + LLDB_LOG_ERROR( + log, std::move(error), + "SymbolFileDWARF::GetSharedUnitSupportFiles failed to parse " + "the line table prologue"); }; llvm::Error error = prologue.parse(data, &line_table_offset, report, ctx); if (error) { report(std::move(error)); } else { list = ParseSupportFilesFromPrologue(GetObjectFile()->GetModule(), - prologue, tu.GetPathStyle()); + prologue, unit.GetPathStyle()); } } return list;
Index: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h =================================================================== --- lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h +++ lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h @@ -491,7 +491,7 @@ void FindDwpSymbolFile(); - const lldb_private::FileSpecList &GetTypeUnitSupportFiles(DWARFTypeUnit &tu); + const lldb_private::FileSpecList &GetSharedUnitSupportFiles(DWARFUnit &tu); lldb::ModuleWP m_debug_map_module_wp; SymbolFileDWARFDebugMap *m_debug_map_symfile; @@ -526,7 +526,7 @@ DIEToClangType m_forward_decl_die_to_clang_type; ClangTypeToDIE m_forward_decl_clang_type_to_die; llvm::DenseMap<dw_offset_t, lldb_private::FileSpecList> - m_type_unit_support_files; + m_shared_unit_support_files; std::vector<uint32_t> m_lldb_cu_to_dwarf_unit; }; Index: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp =================================================================== --- lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp +++ lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp @@ -919,15 +919,14 @@ return FileSpec(); } - auto &tu = llvm::cast<DWARFTypeUnit>(unit); - return GetTypeUnitSupportFiles(tu).GetFileSpecAtIndex(file_idx); + return GetSharedUnitSupportFiles(unit).GetFileSpecAtIndex(file_idx); } const FileSpecList & -SymbolFileDWARF::GetTypeUnitSupportFiles(DWARFTypeUnit &tu) { +SymbolFileDWARF::GetSharedUnitSupportFiles(DWARFUnit &unit) { static FileSpecList empty_list; - dw_offset_t offset = tu.GetLineTableOffset(); + dw_offset_t offset = unit.GetLineTableOffset(); if (offset == DW_INVALID_OFFSET || offset == llvm::DenseMapInfo<dw_offset_t>::getEmptyKey() || offset == llvm::DenseMapInfo<dw_offset_t>::getTombstoneKey()) @@ -935,7 +934,7 @@ // Many type units can share a line table, so parse the support file list // once, and cache it based on the offset field. - auto iter_bool = m_type_unit_support_files.try_emplace(offset); + auto iter_bool = m_shared_unit_support_files.try_emplace(offset); FileSpecList &list = iter_bool.first->second; if (iter_bool.second) { uint64_t line_table_offset = offset; @@ -944,16 +943,17 @@ llvm::DWARFDebugLine::Prologue prologue; auto report = [](llvm::Error error) { Log *log = LogChannelDWARF::GetLogIfAll(DWARF_LOG_DEBUG_INFO); - LLDB_LOG_ERROR(log, std::move(error), - "SymbolFileDWARF::GetTypeUnitSupportFiles failed to parse " - "the line table prologue"); + LLDB_LOG_ERROR( + log, std::move(error), + "SymbolFileDWARF::GetSharedUnitSupportFiles failed to parse " + "the line table prologue"); }; llvm::Error error = prologue.parse(data, &line_table_offset, report, ctx); if (error) { report(std::move(error)); } else { list = ParseSupportFilesFromPrologue(GetObjectFile()->GetModule(), - prologue, tu.GetPathStyle()); + prologue, unit.GetPathStyle()); } } return list;
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits