COFF: Don't read non-x64 object files.
Currently the new LLD supports only x86-64.
llvm-svn: 240749
diff --git a/lld/COFF/InputFiles.cpp b/lld/COFF/InputFiles.cpp
index c4b8226..f616d4c 100644
--- a/lld/COFF/InputFiles.cpp
+++ b/lld/COFF/InputFiles.cpp
@@ -23,6 +23,8 @@
using namespace llvm::support::endian;
using llvm::COFF::ImportHeader;
using llvm::COFF::IMAGE_COMDAT_SELECT_ASSOCIATIVE;
+using llvm::COFF::IMAGE_FILE_MACHINE_AMD64;
+using llvm::COFF::IMAGE_FILE_MACHINE_UNKNOWN;
using llvm::RoundUpToAlignment;
using llvm::sys::fs::identify_magic;
using llvm::sys::fs::file_magic;
@@ -98,6 +100,11 @@
llvm::errs() << getName() << " is not a COFF file.\n";
return make_error_code(LLDError::InvalidFile);
}
+ if (COFFObj->getMachine() != IMAGE_FILE_MACHINE_AMD64 &&
+ COFFObj->getMachine() != IMAGE_FILE_MACHINE_UNKNOWN) {
+ llvm::errs() << getName() << " is not an x64 object file.\n";
+ return make_error_code(LLDError::InvalidFile);
+ }
// Read section and symbol tables.
if (auto EC = initializeChunks())