Author: Jonas Devlieghere Date: 2023-07-13T11:30:35-07:00 New Revision: e5aa4cff43239930f87ada9183720d4182daa8fa
URL: https://github.com/llvm/llvm-project/commit/e5aa4cff43239930f87ada9183720d4182daa8fa DIFF: https://github.com/llvm/llvm-project/commit/e5aa4cff43239930f87ada9183720d4182daa8fa.diff LOG: [lldb] Support Compact C Type Format (CTF) section Teach LLDB about the ctf (Compact C Type Format) section. Differential revision: https://reviews.llvm.org/D154668 Added: Modified: lldb/include/lldb/lldb-enumerations.h lldb/source/Core/Section.cpp lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp lldb/source/Symbol/ObjectFile.cpp Removed: ################################################################################ diff --git a/lldb/include/lldb/lldb-enumerations.h b/lldb/include/lldb/lldb-enumerations.h index c78608b9ff0afd..e2cda2a65eef5d 100644 --- a/lldb/include/lldb/lldb-enumerations.h +++ b/lldb/include/lldb/lldb-enumerations.h @@ -738,6 +738,7 @@ enum SectionType { eSectionTypeDWARFDebugLocDwo, eSectionTypeDWARFDebugLocListsDwo, eSectionTypeDWARFDebugTuIndex, + eSectionTypeCTF, }; FLAGS_ENUM(EmulateInstructionOptions){ diff --git a/lldb/source/Core/Section.cpp b/lldb/source/Core/Section.cpp index 808d25875cfc65..212b3119894fc9 100644 --- a/lldb/source/Core/Section.cpp +++ b/lldb/source/Core/Section.cpp @@ -145,6 +145,8 @@ const char *Section::GetTypeAsCString() const { return "absolute"; case eSectionTypeDWARFGNUDebugAltLink: return "dwarf-gnu-debugaltlink"; + case eSectionTypeCTF: + return "ctf"; case eSectionTypeOther: return "regular"; } @@ -452,6 +454,7 @@ bool Section::ContainsOnlyDebugInfo() const { case eSectionTypeDWARFAppleNamespaces: case eSectionTypeDWARFAppleObjC: case eSectionTypeDWARFGNUDebugAltLink: + case eSectionTypeCTF: return true; } return false; diff --git a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp index 727c1fa96af641..700af84a14c061 100644 --- a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp +++ b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp @@ -1673,6 +1673,7 @@ static SectionType GetSectionTypeFromName(llvm::StringRef Name) { .Case(".ARM.exidx", eSectionTypeARMexidx) .Case(".ARM.extab", eSectionTypeARMextab) .Cases(".bss", ".tbss", eSectionTypeZeroFill) + .Case(".ctf", eSectionTypeDebug) .Cases(".data", ".tdata", eSectionTypeData) .Case(".eh_frame", eSectionTypeEHFrame) .Case(".gnu_debugaltlink", eSectionTypeDWARFGNUDebugAltLink) diff --git a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp index cab93f5b471f26..d5cab1bb1a5324 100644 --- a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp +++ b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp @@ -1202,6 +1202,7 @@ AddressClass ObjectFileMachO::GetAddressClass(lldb::addr_t file_addr) { case eSectionTypeDWARFAppleNamespaces: case eSectionTypeDWARFAppleObjC: case eSectionTypeDWARFGNUDebugAltLink: + case eSectionTypeCTF: return AddressClass::eDebug; case eSectionTypeEHFrame: @@ -1475,6 +1476,7 @@ static lldb::SectionType GetSectionType(uint32_t flags, static ConstString g_sect_name_text("__text"); static ConstString g_sect_name_data("__data"); static ConstString g_sect_name_go_symtab("__gosymtab"); + static ConstString g_sect_name_ctf("__ctf"); if (section_name == g_sect_name_dwarf_debug_abbrev) return eSectionTypeDWARFDebugAbbrev; @@ -1552,6 +1554,8 @@ static lldb::SectionType GetSectionType(uint32_t flags, return eSectionTypeDataObjCCFStrings; if (section_name == g_sect_name_go_symtab) return eSectionTypeGoSymtab; + if (section_name == g_sect_name_ctf) + return eSectionTypeCTF; if (section_name == g_sect_name_objc_data || section_name == g_sect_name_objc_classrefs || section_name == g_sect_name_objc_superrefs || diff --git a/lldb/source/Symbol/ObjectFile.cpp b/lldb/source/Symbol/ObjectFile.cpp index ac737b2e93baf1..bebc9589418cbb 100644 --- a/lldb/source/Symbol/ObjectFile.cpp +++ b/lldb/source/Symbol/ObjectFile.cpp @@ -356,6 +356,7 @@ AddressClass ObjectFile::GetAddressClass(addr_t file_addr) { case eSectionTypeDWARFAppleNamespaces: case eSectionTypeDWARFAppleObjC: case eSectionTypeDWARFGNUDebugAltLink: + case eSectionTypeCTF: return AddressClass::eDebug; case eSectionTypeEHFrame: case eSectionTypeARMexidx: _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits