diff options
Diffstat (limited to 'contrib/llvm/lib/Object/Binary.cpp')
| -rw-r--r-- | contrib/llvm/lib/Object/Binary.cpp | 11 | 
1 files changed, 9 insertions, 2 deletions
| diff --git a/contrib/llvm/lib/Object/Binary.cpp b/contrib/llvm/lib/Object/Binary.cpp index 4b31c7557dd3..4e528d8ea565 100644 --- a/contrib/llvm/lib/Object/Binary.cpp +++ b/contrib/llvm/lib/Object/Binary.cpp @@ -17,8 +17,9 @@  #include "llvm/Support/Path.h"  // Include headers for createBinary. -#include "llvm/Object/ObjectFile.h" +#include "llvm/Object/Archive.h"  #include "llvm/Object/COFF.h" +#include "llvm/Object/ObjectFile.h"  using namespace llvm;  using namespace object; @@ -50,6 +51,12 @@ error_code object::createBinary(MemoryBuffer *Source,                                  static_cast<unsigned>(Source->getBufferSize()));    error_code ec;    switch (type) { +    case sys::Archive_FileType: { +      OwningPtr<Binary> ret(new Archive(scopedSource.take(), ec)); +      if (ec) return ec; +      Result.swap(ret); +      return object_error::success; +    }      case sys::ELF_Relocatable_FileType:      case sys::ELF_Executable_FileType:      case sys::ELF_SharedObject_FileType: @@ -90,7 +97,7 @@ error_code object::createBinary(MemoryBuffer *Source,  error_code object::createBinary(StringRef Path, OwningPtr<Binary> &Result) {    OwningPtr<MemoryBuffer> File; -  if (error_code ec = MemoryBuffer::getFile(Path, File)) +  if (error_code ec = MemoryBuffer::getFileOrSTDIN(Path, File))      return ec;    return createBinary(File.take(), Result);  } | 
