From b0f12dfab6b938351d373ca26c3ee56fd91fad8b Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Thu, 13 Mar 2014 07:02:35 +0000 Subject: [PATCH] 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 --- lib/Object/COFFObjectFile.cpp | 4 ++++ lib/Support/Path.cpp | 1 + test/tools/llvm-readobj/Inputs/trivial.obj.coff-arm | Bin 0 -> 367 bytes test/tools/llvm-readobj/file-headers.test | 17 +++++++++++++++++ 4 files changed, 22 insertions(+) create mode 100755 test/tools/llvm-readobj/Inputs/trivial.obj.coff-arm diff --git a/lib/Object/COFFObjectFile.cpp b/lib/Object/COFFObjectFile.cpp index 6ef2fbfed53..461dbac1168 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-"; } @@ -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 6fdad22158d..895e81f4946 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 new file mode 100755 index 0000000000000000000000000000000000000000..e3b5df4c778476149f6baf693243ab0db2bba480 GIT binary patch literal 367 zcmY*VJx>Bb5S`_Wg%$J`t1&?eZmEsMMJp2siTnb&9gfAj-OKL6C053giqaoMDETiY z_BbmXfk|H8y!qJKyftgU*Y(Y42LP9Z5V5qF`UUP4KtzeGMa@@Dn#1utyBpP|Z%VRS z95{jI6X*Pb=Vq$oJ#}?cI{6cuNy