comparison lib/Object/Binary.cpp @ 120:1172e4bd9c6f

update 4.0.0
author mir3636
date Fri, 25 Nov 2016 19:14:25 +0900
parents afa8332a0e37
children 803732b1fca8
comparison
equal deleted inserted replaced
101:34baf5011add 120:1172e4bd9c6f
34 34
35 StringRef Binary::getFileName() const { return Data.getBufferIdentifier(); } 35 StringRef Binary::getFileName() const { return Data.getBufferIdentifier(); }
36 36
37 MemoryBufferRef Binary::getMemoryBufferRef() const { return Data; } 37 MemoryBufferRef Binary::getMemoryBufferRef() const { return Data; }
38 38
39 ErrorOr<std::unique_ptr<Binary>> object::createBinary(MemoryBufferRef Buffer, 39 Expected<std::unique_ptr<Binary>> object::createBinary(MemoryBufferRef Buffer,
40 LLVMContext *Context) { 40 LLVMContext *Context) {
41 sys::fs::file_magic Type = sys::fs::identify_magic(Buffer.getBuffer()); 41 sys::fs::file_magic Type = sys::fs::identify_magic(Buffer.getBuffer());
42 42
43 switch (Type) { 43 switch (Type) {
44 case sys::fs::file_magic::archive: 44 case sys::fs::file_magic::archive:
65 case sys::fs::file_magic::bitcode: 65 case sys::fs::file_magic::bitcode:
66 return ObjectFile::createSymbolicFile(Buffer, Type, Context); 66 return ObjectFile::createSymbolicFile(Buffer, Type, Context);
67 case sys::fs::file_magic::macho_universal_binary: 67 case sys::fs::file_magic::macho_universal_binary:
68 return MachOUniversalBinary::create(Buffer); 68 return MachOUniversalBinary::create(Buffer);
69 case sys::fs::file_magic::unknown: 69 case sys::fs::file_magic::unknown:
70 case sys::fs::file_magic::coff_cl_gl_object:
70 case sys::fs::file_magic::windows_resource: 71 case sys::fs::file_magic::windows_resource:
71 // Unrecognized object file format. 72 // Unrecognized object file format.
72 return object_error::invalid_file_type; 73 return errorCodeToError(object_error::invalid_file_type);
73 } 74 }
74 llvm_unreachable("Unexpected Binary File Type"); 75 llvm_unreachable("Unexpected Binary File Type");
75 } 76 }
76 77
77 ErrorOr<OwningBinary<Binary>> object::createBinary(StringRef Path) { 78 Expected<OwningBinary<Binary>> object::createBinary(StringRef Path) {
78 ErrorOr<std::unique_ptr<MemoryBuffer>> FileOrErr = 79 ErrorOr<std::unique_ptr<MemoryBuffer>> FileOrErr =
79 MemoryBuffer::getFileOrSTDIN(Path); 80 MemoryBuffer::getFileOrSTDIN(Path);
80 if (std::error_code EC = FileOrErr.getError()) 81 if (std::error_code EC = FileOrErr.getError())
81 return EC; 82 return errorCodeToError(EC);
82 std::unique_ptr<MemoryBuffer> &Buffer = FileOrErr.get(); 83 std::unique_ptr<MemoryBuffer> &Buffer = FileOrErr.get();
83 84
84 ErrorOr<std::unique_ptr<Binary>> BinOrErr = 85 Expected<std::unique_ptr<Binary>> BinOrErr =
85 createBinary(Buffer->getMemBufferRef()); 86 createBinary(Buffer->getMemBufferRef());
86 if (std::error_code EC = BinOrErr.getError()) 87 if (!BinOrErr)
87 return EC; 88 return BinOrErr.takeError();
88 std::unique_ptr<Binary> &Bin = BinOrErr.get(); 89 std::unique_ptr<Binary> &Bin = BinOrErr.get();
89 90
90 return OwningBinary<Binary>(std::move(Bin), std::move(Buffer)); 91 return OwningBinary<Binary>(std::move(Bin), std::move(Buffer));
91 } 92 }