fdeazeve created this revision. fdeazeve added a reviewer: aprantl. Herald added a project: All. fdeazeve requested review of this revision. Herald added a project: LLDB. Herald added a subscriber: lldb-commits.
When LLDB needs to access a debug section, it generally calls SectionList::FindSectionByType with the corresponding type (we have one type for each DWARF section). However, the missing entries made some sections be classified as "eSectionTypeOther", which makes all calls to `FindSectionByType` fail. With this patch, a check-lldb build with `-DLLDB_TEST_USER_ARGS=--dwarf-version=5` reports a much lower number of failures: Unsupported : 327 Passed : 2423 Expectedly Failed: 16 Unresolved : 2 Failed : 52 This is down from previously 400~ failures. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D153433 Files: lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp Index: lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp =================================================================== --- lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp +++ lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp @@ -1439,6 +1439,7 @@ static ConstString g_sect_name_cfstring("__cfstring"); static ConstString g_sect_name_dwarf_debug_abbrev("__debug_abbrev"); + static ConstString g_sect_name_dwarf_debug_addr("__debug_addr"); static ConstString g_sect_name_dwarf_debug_aranges("__debug_aranges"); static ConstString g_sect_name_dwarf_debug_frame("__debug_frame"); static ConstString g_sect_name_dwarf_debug_info("__debug_info"); @@ -1451,7 +1452,9 @@ static ConstString g_sect_name_dwarf_debug_pubnames("__debug_pubnames"); static ConstString g_sect_name_dwarf_debug_pubtypes("__debug_pubtypes"); static ConstString g_sect_name_dwarf_debug_ranges("__debug_ranges"); + static ConstString g_sect_name_dwarf_debug_rnglists("__debug_rnglists"); static ConstString g_sect_name_dwarf_debug_str("__debug_str"); + static ConstString g_sect_name_dwarf_debug_str_offs("__debug_str_offs"); static ConstString g_sect_name_dwarf_debug_types("__debug_types"); static ConstString g_sect_name_dwarf_apple_names("__apple_names"); static ConstString g_sect_name_dwarf_apple_types("__apple_types"); @@ -1465,6 +1468,8 @@ if (section_name == g_sect_name_dwarf_debug_abbrev) return eSectionTypeDWARFDebugAbbrev; + if (section_name == g_sect_name_dwarf_debug_addr) + return eSectionTypeDWARFDebugAddr; if (section_name == g_sect_name_dwarf_debug_aranges) return eSectionTypeDWARFDebugAranges; if (section_name == g_sect_name_dwarf_debug_frame) @@ -1489,8 +1494,12 @@ return eSectionTypeDWARFDebugPubTypes; if (section_name == g_sect_name_dwarf_debug_ranges) return eSectionTypeDWARFDebugRanges; + if (section_name == g_sect_name_dwarf_debug_rnglists) + return eSectionTypeDWARFDebugRngLists; if (section_name == g_sect_name_dwarf_debug_str) return eSectionTypeDWARFDebugStr; + if (section_name == g_sect_name_dwarf_debug_str_offs) + return eSectionTypeDWARFDebugStrOffsets; if (section_name == g_sect_name_dwarf_debug_types) return eSectionTypeDWARFDebugTypes; if (section_name == g_sect_name_dwarf_apple_names)
Index: lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp =================================================================== --- lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp +++ lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp @@ -1439,6 +1439,7 @@ static ConstString g_sect_name_cfstring("__cfstring"); static ConstString g_sect_name_dwarf_debug_abbrev("__debug_abbrev"); + static ConstString g_sect_name_dwarf_debug_addr("__debug_addr"); static ConstString g_sect_name_dwarf_debug_aranges("__debug_aranges"); static ConstString g_sect_name_dwarf_debug_frame("__debug_frame"); static ConstString g_sect_name_dwarf_debug_info("__debug_info"); @@ -1451,7 +1452,9 @@ static ConstString g_sect_name_dwarf_debug_pubnames("__debug_pubnames"); static ConstString g_sect_name_dwarf_debug_pubtypes("__debug_pubtypes"); static ConstString g_sect_name_dwarf_debug_ranges("__debug_ranges"); + static ConstString g_sect_name_dwarf_debug_rnglists("__debug_rnglists"); static ConstString g_sect_name_dwarf_debug_str("__debug_str"); + static ConstString g_sect_name_dwarf_debug_str_offs("__debug_str_offs"); static ConstString g_sect_name_dwarf_debug_types("__debug_types"); static ConstString g_sect_name_dwarf_apple_names("__apple_names"); static ConstString g_sect_name_dwarf_apple_types("__apple_types"); @@ -1465,6 +1468,8 @@ if (section_name == g_sect_name_dwarf_debug_abbrev) return eSectionTypeDWARFDebugAbbrev; + if (section_name == g_sect_name_dwarf_debug_addr) + return eSectionTypeDWARFDebugAddr; if (section_name == g_sect_name_dwarf_debug_aranges) return eSectionTypeDWARFDebugAranges; if (section_name == g_sect_name_dwarf_debug_frame) @@ -1489,8 +1494,12 @@ return eSectionTypeDWARFDebugPubTypes; if (section_name == g_sect_name_dwarf_debug_ranges) return eSectionTypeDWARFDebugRanges; + if (section_name == g_sect_name_dwarf_debug_rnglists) + return eSectionTypeDWARFDebugRngLists; if (section_name == g_sect_name_dwarf_debug_str) return eSectionTypeDWARFDebugStr; + if (section_name == g_sect_name_dwarf_debug_str_offs) + return eSectionTypeDWARFDebugStrOffsets; if (section_name == g_sect_name_dwarf_debug_types) return eSectionTypeDWARFDebugTypes; if (section_name == g_sect_name_dwarf_apple_names)
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits