diff --git a/llvm/lib/LibDriver/LibDriver.cpp b/llvm/lib/LibDriver/LibDriver.cpp index fa9f02c959d7..bcdec4f7a933 100644 --- a/llvm/lib/LibDriver/LibDriver.cpp +++ b/llvm/lib/LibDriver/LibDriver.cpp @@ -146,8 +146,10 @@ int llvm::libDriverMain(llvm::ArrayRef ArgsArr) { sys::fs::file_magic Magic = sys::fs::identify_magic(MOrErr->Buf->getBuffer()); if (Magic != sys::fs::file_magic::coff_object && - Magic != sys::fs::file_magic::bitcode) { - llvm::errs() << Arg->getValue() << ": not a COFF object or bitcode file\n"; + Magic != sys::fs::file_magic::bitcode && + Magic != sys::fs::file_magic::windows_resource) { + llvm::errs() << Arg->getValue() + << ": not a COFF object, bitcode or resource file\n"; return 1; } Members.emplace_back(std::move(*MOrErr)); diff --git a/llvm/test/LibDriver/Inputs/resource.res b/llvm/test/LibDriver/Inputs/resource.res new file mode 100644 index 000000000000..f1c799fbbb08 Binary files /dev/null and b/llvm/test/LibDriver/Inputs/resource.res differ diff --git a/llvm/test/LibDriver/invalid.test b/llvm/test/LibDriver/invalid.test index 2a8b68cc60fe..2978177a431e 100644 --- a/llvm/test/LibDriver/invalid.test +++ b/llvm/test/LibDriver/invalid.test @@ -1,2 +1,2 @@ RUN: not llvm-lib %S/Inputs/cl-gl.obj 2>&1 | FileCheck %s -CHECK: not a COFF object or bitcode file +CHECK: not a COFF object, bitcode or resource file diff --git a/llvm/test/LibDriver/resource.test b/llvm/test/LibDriver/resource.test new file mode 100644 index 000000000000..6c3dad50b450 --- /dev/null +++ b/llvm/test/LibDriver/resource.test @@ -0,0 +1,3 @@ +RUN: llvm-lib /out:%t %S/Inputs/resource.res +RUN: llvm-ar t %t | FileCheck %s +CHECK: resource.res