diff --git a/llvm/lib/Object/COFFObjectFile.cpp b/llvm/lib/Object/COFFObjectFile.cpp index bba2e3dc08b8..1e9b0c5b0454 100644 --- a/llvm/lib/Object/COFFObjectFile.cpp +++ b/llvm/lib/Object/COFFObjectFile.cpp @@ -883,7 +883,7 @@ base_reloc_iterator COFFObjectFile::base_reloc_end() const { } uint8_t COFFObjectFile::getBytesInAddress() const { - return getArch() == Triple::x86_64 ? 8 : 4; + return getArch() == Triple::x86_64 || getArch() == Triple::aarch64 ? 8 : 4; } StringRef COFFObjectFile::getFileFormatName() const { diff --git a/llvm/test/tools/llvm-readobj/Inputs/trivial.obj.coff-arm64 b/llvm/test/tools/llvm-readobj/Inputs/trivial.obj.coff-arm64 new file mode 100644 index 000000000000..b494f6ade24c Binary files /dev/null and b/llvm/test/tools/llvm-readobj/Inputs/trivial.obj.coff-arm64 differ diff --git a/llvm/test/tools/llvm-readobj/file-headers.test b/llvm/test/tools/llvm-readobj/file-headers.test index 5bfebf746bf1..6bc9714f2037 100644 --- a/llvm/test/tools/llvm-readobj/file-headers.test +++ b/llvm/test/tools/llvm-readobj/file-headers.test @@ -1,5 +1,7 @@ RUN: llvm-readobj -h %p/Inputs/trivial.obj.coff-arm \ RUN: | FileCheck %s -check-prefix COFF-ARM +RUN: llvm-readobj -h %p/Inputs/trivial.obj.coff-arm64 \ +RUN: | FileCheck %s -check-prefix COFF-ARM64 RUN: llvm-readobj -h %p/Inputs/trivial.obj.coff-i386 \ RUN: | FileCheck %s -check-prefix COFF32 RUN: llvm-readobj -h %p/Inputs/trivial.obj.coff-x86-64 \ @@ -47,6 +49,21 @@ COFF-ARM-NEXT: Characteristics [ (0x0) COFF-ARM-NEXT: ] COFF-ARM-NEXT: } +COFF-ARM64: File: {{(.*[/\\])?}}trivial.obj.coff-arm64 +COFF-ARM64-NEXT: Format: COFF-ARM64 +COFF-ARM64-NEXT: Arch: aarch64 +COFF-ARM64-NEXT: AddressSize: 64bit +COFF-ARM64-NEXT: ImageFileHeader { +COFF-ARM64-NEXT: Machine: IMAGE_FILE_MACHINE_ARM64 (0xAA64) +COFF-ARM64-NEXT: SectionCount: 1 +COFF-ARM64-NEXT: TimeDateStamp: 1970-01-01 00:00:00 (0x0) +COFF-ARM64-NEXT: PointerToSymbolTable: 0x44 +COFF-ARM64-NEXT: SymbolCount: 3 +COFF-ARM64-NEXT: OptionalHeaderSize: 0 +COFF-ARM64-NEXT: Characteristics [ (0x0) +COFF-ARM64-NEXT: ] +COFF-ARM64-NEXT: } + COFF32: File: {{(.*[/\\])?}}trivial.obj.coff-i386 COFF32-NEXT: Format: COFF-i386 COFF32-NEXT: Arch: i386 diff --git a/llvm/tools/llvm-readobj/COFFDumper.cpp b/llvm/tools/llvm-readobj/COFFDumper.cpp index 96a1f62bf64a..e5ff3e4186de 100644 --- a/llvm/tools/llvm-readobj/COFFDumper.cpp +++ b/llvm/tools/llvm-readobj/COFFDumper.cpp @@ -335,6 +335,7 @@ static const EnumEntry ImageFileMachineType[] = { LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_AM33 ), LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_AMD64 ), LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_ARM ), + LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_ARM64 ), LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_ARMNT ), LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_EBC ), LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_I386 ),