diff options
author | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-03-13 07:02:35 +0000 |
---|---|---|
committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-03-13 07:02:35 +0000 |
commit | b0f12dfab6b938351d373ca26c3ee56fd91fad8b (patch) | |
tree | 929f3a4ee6c178130c117b222e996c292e04dc46 | |
parent | ec7eedc5db065b407cfb9945e2970a791a25705f (diff) | |
download | llvm-b0f12dfab6b938351d373ca26c3ee56fd91fad8b.tar.gz llvm-b0f12dfab6b938351d373ca26c3ee56fd91fad8b.tar.bz2 llvm-b0f12dfab6b938351d373ca26c3ee56fd91fad8b.tar.xz |
Support: add support to identify WinCOFF/ARM objects
Add the Windows COFF ARM object file magic. This enables the LLVM tools to
interact with COFF object files for Windows on ARM.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203761 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Object/COFFObjectFile.cpp | 4 | ||||
-rw-r--r-- | lib/Support/Path.cpp | 1 | ||||
-rwxr-xr-x | test/tools/llvm-readobj/Inputs/trivial.obj.coff-arm | bin | 0 -> 367 bytes | |||
-rw-r--r-- | test/tools/llvm-readobj/file-headers.test | 17 |
4 files changed, 22 insertions, 0 deletions
diff --git a/lib/Object/COFFObjectFile.cpp b/lib/Object/COFFObjectFile.cpp index 6ef2fbfed5..461dbac116 100644 --- a/lib/Object/COFFObjectFile.cpp +++ b/lib/Object/COFFObjectFile.cpp @@ -663,6 +663,8 @@ StringRef COFFObjectFile::getFileFormatName() const { return "COFF-i386"; case COFF::IMAGE_FILE_MACHINE_AMD64: return "COFF-x86-64"; + case COFF::IMAGE_FILE_MACHINE_ARMNT: + return "COFF-ARM"; default: return "COFF-<unknown arch>"; } @@ -674,6 +676,8 @@ unsigned COFFObjectFile::getArch() const { return Triple::x86; case COFF::IMAGE_FILE_MACHINE_AMD64: return Triple::x86_64; + case COFF::IMAGE_FILE_MACHINE_ARMNT: + return Triple::thumb; default: return Triple::UnknownArch; } diff --git a/lib/Support/Path.cpp b/lib/Support/Path.cpp index 6fdad22158..895e81f494 100644 --- a/lib/Support/Path.cpp +++ b/lib/Support/Path.cpp @@ -1016,6 +1016,7 @@ error_code has_magic(const Twine &path, const Twine &magic, bool &result) { case 0x66: // MPS R4000 Windows case 0x50: // mc68K case 0x4c: // 80386 Windows + case 0xc4: // ARMNT Windows if (Magic[1] == 0x01) return file_magic::coff_object; diff --git a/test/tools/llvm-readobj/Inputs/trivial.obj.coff-arm b/test/tools/llvm-readobj/Inputs/trivial.obj.coff-arm Binary files differnew file mode 100755 index 0000000000..e3b5df4c77 --- /dev/null +++ b/test/tools/llvm-readobj/Inputs/trivial.obj.coff-arm diff --git a/test/tools/llvm-readobj/file-headers.test b/test/tools/llvm-readobj/file-headers.test index b2b454772d..845bad8793 100644 --- a/test/tools/llvm-readobj/file-headers.test +++ b/test/tools/llvm-readobj/file-headers.test @@ -1,3 +1,5 @@ +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-i386 \ RUN: | FileCheck %s -check-prefix COFF32 RUN: llvm-readobj -h %p/Inputs/trivial.obj.coff-x86-64 \ @@ -13,6 +15,21 @@ RUN: | FileCheck %s -check-prefix COFF-UNKNOWN RUN: llvm-readobj -h %p/Inputs/magic.coff-importlib \ RUN: | FileCheck %s -check-prefix COFF-IMPORTLIB +COFF-ARM: File: {{(.*[/\\])?}}trivial.obj.coff-arm +COFF-ARM-NEXT: Format: COFF-ARM +COFF-ARM-NEXT: Arch: thumb +COFF-ARM-NEXT: AddressSize: 32bit +COFF-ARM-NEXT: ImageFileHeader { +COFF-ARM-NEXT: Machine: IMAGE_FILE_MACHINE_ARMNT (0x1C4) +COFF-ARM-NEXT: SectionCount: 2 +COFF-ARM-NEXT: TimeDateStamp: 2014-03-13 02:48:34 (0x53211C82) +COFF-ARM-NEXT: PointerToSymbolTable: 0xFF +COFF-ARM-NEXT: SymbolCount: 6 +COFF-ARM-NEXT: OptionalHeaderSize: 0 +COFF-ARM-NEXT: Characteristics [ (0x0) +COFF-ARM-NEXT: ] +COFF-ARM-NEXT: } + COFF32: File: {{(.*[/\\])?}}trivial.obj.coff-i386 COFF32-NEXT: Format: COFF-i386 COFF32-NEXT: Arch: i386 |