Browse Source

Summary:
Object: add IMAGE_FILE_MACHINE_ARM64

The official specifications state that the value of IMAGE_FILE_MACHINE_ARM64
is 0xAA64 (as per the Microsoft Portable Executable and Common Object Format
Specification v8.3).

Reviewers: rnk

Subscribers: llvm-commits, compnerd, ruiu

Differential Revision: http://reviews.llvm.org/D11511

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243434 91177308-0d34-0410-b5e6-96231b3b80d8

Martell Malone 10 years ago
parent
commit
751664fd1b
4 changed files with 7 additions and 0 deletions
  1. 1 0
      docs/yaml2obj.rst
  2. 1 0
      include/llvm/Support/COFF.h
  3. 4 0
      lib/Object/COFFObjectFile.cpp
  4. 1 0
      lib/Object/COFFYAML.cpp

+ 1 - 0
docs/yaml2obj.rst

@@ -65,6 +65,7 @@ Here's a simplified Kwalify_ schema with an extension to allow alternate types.
                                  , IMAGE_FILE_MACHINE_AMD64
                                  , IMAGE_FILE_MACHINE_AMD64
                                  , IMAGE_FILE_MACHINE_ARM
                                  , IMAGE_FILE_MACHINE_ARM
                                  , IMAGE_FILE_MACHINE_ARMNT
                                  , IMAGE_FILE_MACHINE_ARMNT
+                                 , IMAGE_FILE_MACHINE_ARM64
                                  , IMAGE_FILE_MACHINE_EBC
                                  , IMAGE_FILE_MACHINE_EBC
                                  , IMAGE_FILE_MACHINE_I386
                                  , IMAGE_FILE_MACHINE_I386
                                  , IMAGE_FILE_MACHINE_IA64
                                  , IMAGE_FILE_MACHINE_IA64

+ 1 - 0
include/llvm/Support/COFF.h

@@ -88,6 +88,7 @@ namespace COFF {
     IMAGE_FILE_MACHINE_AMD64     = 0x8664,
     IMAGE_FILE_MACHINE_AMD64     = 0x8664,
     IMAGE_FILE_MACHINE_ARM       = 0x1C0,
     IMAGE_FILE_MACHINE_ARM       = 0x1C0,
     IMAGE_FILE_MACHINE_ARMNT     = 0x1C4,
     IMAGE_FILE_MACHINE_ARMNT     = 0x1C4,
+    IMAGE_FILE_MACHINE_ARM64     = 0xAA64,
     IMAGE_FILE_MACHINE_EBC       = 0xEBC,
     IMAGE_FILE_MACHINE_EBC       = 0xEBC,
     IMAGE_FILE_MACHINE_I386      = 0x14C,
     IMAGE_FILE_MACHINE_I386      = 0x14C,
     IMAGE_FILE_MACHINE_IA64      = 0x200,
     IMAGE_FILE_MACHINE_IA64      = 0x200,

+ 4 - 0
lib/Object/COFFObjectFile.cpp

@@ -744,6 +744,8 @@ StringRef COFFObjectFile::getFileFormatName() const {
     return "COFF-x86-64";
     return "COFF-x86-64";
   case COFF::IMAGE_FILE_MACHINE_ARMNT:
   case COFF::IMAGE_FILE_MACHINE_ARMNT:
     return "COFF-ARM";
     return "COFF-ARM";
+  case COFF::IMAGE_FILE_MACHINE_ARM64:
+    return "COFF-ARM64";
   default:
   default:
     return "COFF-<unknown arch>";
     return "COFF-<unknown arch>";
   }
   }
@@ -757,6 +759,8 @@ unsigned COFFObjectFile::getArch() const {
     return Triple::x86_64;
     return Triple::x86_64;
   case COFF::IMAGE_FILE_MACHINE_ARMNT:
   case COFF::IMAGE_FILE_MACHINE_ARMNT:
     return Triple::thumb;
     return Triple::thumb;
+  case COFF::IMAGE_FILE_MACHINE_ARM64:
+    return Triple::aarch64;
   default:
   default:
     return Triple::UnknownArch;
     return Triple::UnknownArch;
   }
   }

+ 1 - 0
lib/Object/COFFYAML.cpp

@@ -56,6 +56,7 @@ void ScalarEnumerationTraits<COFF::MachineTypes>::enumeration(
   ECase(IMAGE_FILE_MACHINE_AMD64);
   ECase(IMAGE_FILE_MACHINE_AMD64);
   ECase(IMAGE_FILE_MACHINE_ARM);
   ECase(IMAGE_FILE_MACHINE_ARM);
   ECase(IMAGE_FILE_MACHINE_ARMNT);
   ECase(IMAGE_FILE_MACHINE_ARMNT);
+  ECase(IMAGE_FILE_MACHINE_ARM64);
   ECase(IMAGE_FILE_MACHINE_EBC);
   ECase(IMAGE_FILE_MACHINE_EBC);
   ECase(IMAGE_FILE_MACHINE_I386);
   ECase(IMAGE_FILE_MACHINE_I386);
   ECase(IMAGE_FILE_MACHINE_IA64);
   ECase(IMAGE_FILE_MACHINE_IA64);