[Lldb-commits] [lldb] e5aa4cf - [lldb] Support Compact C Type Format (CTF) section
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Thu Jul 13 11:30:57 PDT 2023
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:
More information about the lldb-commits
mailing list