[lldb] Add support for recognizing swift ast sections in object files
In Apple's downstream fork, there is support for understanding the swift AST sections in various binaries. Even though the lldb on llvm.org does not have support for debugging swift, I think it makes sense to move support for recognizing swift ast sections upstream. Differential Revision: https://reviews.llvm.org/D159142
This commit is contained in:
parent
dfc0ede1f8
commit
764287f1ad
@ -739,6 +739,7 @@ enum SectionType {
|
||||
eSectionTypeDWARFDebugLocListsDwo,
|
||||
eSectionTypeDWARFDebugTuIndex,
|
||||
eSectionTypeCTF,
|
||||
eSectionTypeSwiftModules,
|
||||
};
|
||||
|
||||
FLAGS_ENUM(EmulateInstructionOptions){
|
||||
|
||||
@ -149,6 +149,8 @@ const char *Section::GetTypeAsCString() const {
|
||||
return "ctf";
|
||||
case eSectionTypeOther:
|
||||
return "regular";
|
||||
case eSectionTypeSwiftModules:
|
||||
return "swift-modules";
|
||||
}
|
||||
return "unknown";
|
||||
}
|
||||
@ -455,6 +457,7 @@ bool Section::ContainsOnlyDebugInfo() const {
|
||||
case eSectionTypeDWARFAppleObjC:
|
||||
case eSectionTypeDWARFGNUDebugAltLink:
|
||||
case eSectionTypeCTF:
|
||||
case eSectionTypeSwiftModules:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
@ -1679,6 +1679,7 @@ static SectionType GetSectionTypeFromName(llvm::StringRef Name) {
|
||||
.Case(".gnu_debugaltlink", eSectionTypeDWARFGNUDebugAltLink)
|
||||
.Case(".gosymtab", eSectionTypeGoSymtab)
|
||||
.Case(".text", eSectionTypeCode)
|
||||
.Case(".swift_ast", eSectionTypeSwiftModules)
|
||||
.Default(eSectionTypeOther);
|
||||
}
|
||||
|
||||
|
||||
@ -1202,6 +1202,7 @@ AddressClass ObjectFileMachO::GetAddressClass(lldb::addr_t file_addr) {
|
||||
case eSectionTypeDWARFAppleObjC:
|
||||
case eSectionTypeDWARFGNUDebugAltLink:
|
||||
case eSectionTypeCTF:
|
||||
case eSectionTypeSwiftModules:
|
||||
return AddressClass::eDebug;
|
||||
|
||||
case eSectionTypeEHFrame:
|
||||
@ -1476,6 +1477,7 @@ static lldb::SectionType GetSectionType(uint32_t flags,
|
||||
static ConstString g_sect_name_data("__data");
|
||||
static ConstString g_sect_name_go_symtab("__gosymtab");
|
||||
static ConstString g_sect_name_ctf("__ctf");
|
||||
static ConstString g_sect_name_swift_ast("__swift_ast");
|
||||
|
||||
if (section_name == g_sect_name_dwarf_debug_abbrev)
|
||||
return eSectionTypeDWARFDebugAbbrev;
|
||||
@ -1555,6 +1557,8 @@ static lldb::SectionType GetSectionType(uint32_t flags,
|
||||
return eSectionTypeGoSymtab;
|
||||
if (section_name == g_sect_name_ctf)
|
||||
return eSectionTypeCTF;
|
||||
if (section_name == g_sect_name_swift_ast)
|
||||
return eSectionTypeSwiftModules;
|
||||
if (section_name == g_sect_name_objc_data ||
|
||||
section_name == g_sect_name_objc_classrefs ||
|
||||
section_name == g_sect_name_objc_superrefs ||
|
||||
|
||||
@ -1009,6 +1009,7 @@ SectionType ObjectFilePECOFF::GetSectionType(llvm::StringRef sect_name,
|
||||
// .eh_frame can be truncated to 8 chars.
|
||||
.Cases(".eh_frame", ".eh_fram", eSectionTypeEHFrame)
|
||||
.Case(".gosymtab", eSectionTypeGoSymtab)
|
||||
.Case("swiftast", eSectionTypeSwiftModules)
|
||||
.Default(eSectionTypeInvalid);
|
||||
if (section_type != eSectionTypeInvalid)
|
||||
return section_type;
|
||||
|
||||
@ -357,6 +357,7 @@ AddressClass ObjectFile::GetAddressClass(addr_t file_addr) {
|
||||
case eSectionTypeDWARFAppleObjC:
|
||||
case eSectionTypeDWARFGNUDebugAltLink:
|
||||
case eSectionTypeCTF:
|
||||
case eSectionTypeSwiftModules:
|
||||
return AddressClass::eDebug;
|
||||
case eSectionTypeEHFrame:
|
||||
case eSectionTypeARMexidx:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user