diff --git a/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp b/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp index 40bf988a9873..18026a19478a 100644 --- a/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp +++ b/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp @@ -758,9 +758,9 @@ public: if (fileType == llvm::sys::fs::file_magic::windows_resource) return convertAndParseResourceFile(mb, result); - if (fileType == llvm::sys::fs::file_magic::coff_object) - return parseCOFFFile(mb, result); - return lld::coff::parseCOFFImportLibrary(_context, mb, result); + if (isImportLibrary(magic)) + return lld::coff::parseCOFFImportLibrary(_context, mb, result); + return parseCOFFFile(mb, result); } private: @@ -929,6 +929,10 @@ private: return error_code::success(); } + static bool isImportLibrary(StringRef magic) { + return magic[2] == (char)0xff && magic[3] == (char)0xff; + } + PECOFFLinkingContext &_PECOFFLinkingContext; mutable BumpPtrStringSaver _stringSaver; };