aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Object/COFFObjectFile.cpp
diff options
context:
space:
mode:
authorEli Friedman <efriedma@quicinc.com>2022-09-05 12:25:08 -0700
committerEli Friedman <efriedma@quicinc.com>2022-09-05 12:25:08 -0700
commit488ad99ecf5121f50fa59d6e1a34d78fcb73eabe (patch)
treec89f48c6cc6937b0bbeae4a1e25ed7fd2c04bf19 /llvm/lib/Object/COFFObjectFile.cpp
parent3c6edc0b2f812503a802bdd9c5842a0a9396b8c1 (diff)
downloadllvm-488ad99ecf5121f50fa59d6e1a34d78fcb73eabe.zip
llvm-488ad99ecf5121f50fa59d6e1a34d78fcb73eabe.tar.gz
llvm-488ad99ecf5121f50fa59d6e1a34d78fcb73eabe.tar.bz2
[ARM64EC 1/?] Add parsing support to llvm-objdump/llvm-readobj.
This is the first patch of a patchset to add initial support for ARM64EC. Basic documentation is available at https://docs.microsoft.com/en-us/windows/uwp/porting/arm64ec-abi . (Discourse post: https://discourse.llvm.org/t/initial-patches-for-arm64ec-windows-11-now-posted/62449 .) The file format for ARM64EC is basically identical to normal ARM64. There are a few extra sections, but the existing code for reading ARM64 object files just works. Differential Revision: https://reviews.llvm.org/D125411
Diffstat (limited to 'llvm/lib/Object/COFFObjectFile.cpp')
-rw-r--r--llvm/lib/Object/COFFObjectFile.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Object/COFFObjectFile.cpp b/llvm/lib/Object/COFFObjectFile.cpp
index 1a4bb32..d0ca50e 100644
--- a/llvm/lib/Object/COFFObjectFile.cpp
+++ b/llvm/lib/Object/COFFObjectFile.cpp
@@ -1014,6 +1014,8 @@ StringRef COFFObjectFile::getFileFormatName() const {
return "COFF-ARM";
case COFF::IMAGE_FILE_MACHINE_ARM64:
return "COFF-ARM64";
+ case COFF::IMAGE_FILE_MACHINE_ARM64EC:
+ return "COFF-ARM64EC";
default:
return "COFF-<unknown arch>";
}
@@ -1028,6 +1030,7 @@ Triple::ArchType COFFObjectFile::getArch() const {
case COFF::IMAGE_FILE_MACHINE_ARMNT:
return Triple::thumb;
case COFF::IMAGE_FILE_MACHINE_ARM64:
+ case COFF::IMAGE_FILE_MACHINE_ARM64EC:
return Triple::aarch64;
default:
return Triple::UnknownArch;
@@ -1314,6 +1317,7 @@ StringRef COFFObjectFile::getRelocationTypeName(uint16_t Type) const {
}
break;
case COFF::IMAGE_FILE_MACHINE_ARM64:
+ case COFF::IMAGE_FILE_MACHINE_ARM64EC:
switch (Type) {
LLVM_COFF_SWITCH_RELOC_TYPE_NAME(IMAGE_REL_ARM64_ABSOLUTE);
LLVM_COFF_SWITCH_RELOC_TYPE_NAME(IMAGE_REL_ARM64_ADDR32);
@@ -1896,6 +1900,7 @@ ResourceSectionRef::getContents(const coff_resource_data_entry &Entry) {
RVAReloc = COFF::IMAGE_REL_ARM_ADDR32NB;
break;
case COFF::IMAGE_FILE_MACHINE_ARM64:
+ case COFF::IMAGE_FILE_MACHINE_ARM64EC:
RVAReloc = COFF::IMAGE_REL_ARM64_ADDR32NB;
break;
default: