diff options
author | Jacek Caban <jacek@codeweavers.com> | 2023-04-21 15:32:07 +0300 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2023-04-21 15:46:20 +0300 |
commit | cea5d2870f379e7f93ba9da01747a279e4225998 (patch) | |
tree | cb7aef44a3ed7066ddba72a4ffd653fce1ea80ec /llvm/lib/Object/COFFImportFile.cpp | |
parent | 85a2c50ec4979b87267e4f2068f2921beb0b98f2 (diff) | |
download | llvm-cea5d2870f379e7f93ba9da01747a279e4225998.zip llvm-cea5d2870f379e7f93ba9da01747a279e4225998.tar.gz llvm-cea5d2870f379e7f93ba9da01747a279e4225998.tar.bz2 |
[llvm-lib] [llvm-readobj] [llvm-cvtres] Add Support for ARM64X object files.
Similar to D125411, but for ARM64X.
ARM64X PE binaries are hybrids containing both ARM64EC and pure ARM64
variants in one file. They are usually linked by passing separate
ARM64EC and ARM64 object files to linker. Linked binaries use ARM64
machine and contain additional CHPE metadata in their load config.
CHPE metadata support is not part of this patch, I plan to send that later.
Using ARM64X as a machine type of object files themselves is somewhat
ambiguous, but such files are allowed by MSVC. It treats them as ARM64
or ARM64EC object, depending on the context. Such objects can be
produced with cvtres.exe -machine:arm64x.
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D148517
Diffstat (limited to 'llvm/lib/Object/COFFImportFile.cpp')
-rw-r--r-- | llvm/lib/Object/COFFImportFile.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Object/COFFImportFile.cpp b/llvm/lib/Object/COFFImportFile.cpp index ce6d84d..765c12c 100644 --- a/llvm/lib/Object/COFFImportFile.cpp +++ b/llvm/lib/Object/COFFImportFile.cpp @@ -39,6 +39,7 @@ static bool is32bit(MachineTypes Machine) { llvm_unreachable("unsupported machine"); case IMAGE_FILE_MACHINE_ARM64: case IMAGE_FILE_MACHINE_ARM64EC: + case IMAGE_FILE_MACHINE_ARM64X: case IMAGE_FILE_MACHINE_AMD64: return false; case IMAGE_FILE_MACHINE_ARMNT: @@ -57,6 +58,7 @@ static uint16_t getImgRelRelocation(MachineTypes Machine) { return IMAGE_REL_ARM_ADDR32NB; case IMAGE_FILE_MACHINE_ARM64: case IMAGE_FILE_MACHINE_ARM64EC: + case IMAGE_FILE_MACHINE_ARM64X: return IMAGE_REL_ARM64_ADDR32NB; case IMAGE_FILE_MACHINE_I386: return IMAGE_REL_I386_DIR32NB; |