diff --git a/lib/LibDriver/LibDriver.cpp b/lib/LibDriver/LibDriver.cpp index fa9f02c959d..bcdec4f7a93 100644 --- a/lib/LibDriver/LibDriver.cpp +++ b/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/test/LibDriver/Inputs/resource.res b/test/LibDriver/Inputs/resource.res new file mode 100644 index 00000000000..f1c799fbbb0 Binary files /dev/null and b/test/LibDriver/Inputs/resource.res differ diff --git a/test/LibDriver/invalid.test b/test/LibDriver/invalid.test index 2a8b68cc60f..2978177a431 100644 --- a/test/LibDriver/invalid.test +++ b/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/test/LibDriver/resource.test b/test/LibDriver/resource.test new file mode 100644 index 00000000000..6c3dad50b45 --- /dev/null +++ b/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