Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
llvm/lib/Object/Binary.cpp
Show First 20 Lines • Show All 87 Lines • ▼ Show 20 Lines | Expected<std::unique_ptr<Binary>> object::createBinary(MemoryBufferRef Buffer, | ||||
case file_magic::minidump: | case file_magic::minidump: | ||||
return MinidumpFile::create(Buffer); | return MinidumpFile::create(Buffer); | ||||
case file_magic::tapi_file: | case file_magic::tapi_file: | ||||
return TapiUniversal::create(Buffer); | return TapiUniversal::create(Buffer); | ||||
} | } | ||||
llvm_unreachable("Unexpected Binary File Type"); | llvm_unreachable("Unexpected Binary File Type"); | ||||
} | } | ||||
Expected<OwningBinary<Binary>> object::createBinary(StringRef Path) { | Expected<OwningBinary<Binary>> object::createBinary(StringRef Path, | ||||
LLVMContext *Context) { | |||||
ErrorOr<std::unique_ptr<MemoryBuffer>> FileOrErr = | ErrorOr<std::unique_ptr<MemoryBuffer>> FileOrErr = | ||||
MemoryBuffer::getFileOrSTDIN(Path, /*FileSize=*/-1, | MemoryBuffer::getFileOrSTDIN(Path, /*FileSize=*/-1, | ||||
/*RequiresNullTerminator=*/false); | /*RequiresNullTerminator=*/false); | ||||
if (std::error_code EC = FileOrErr.getError()) | if (std::error_code EC = FileOrErr.getError()) | ||||
return errorCodeToError(EC); | return errorCodeToError(EC); | ||||
std::unique_ptr<MemoryBuffer> &Buffer = FileOrErr.get(); | std::unique_ptr<MemoryBuffer> &Buffer = FileOrErr.get(); | ||||
Expected<std::unique_ptr<Binary>> BinOrErr = | Expected<std::unique_ptr<Binary>> BinOrErr = | ||||
createBinary(Buffer->getMemBufferRef()); | createBinary(Buffer->getMemBufferRef(), Context); | ||||
if (!BinOrErr) | if (!BinOrErr) | ||||
return BinOrErr.takeError(); | return BinOrErr.takeError(); | ||||
std::unique_ptr<Binary> &Bin = BinOrErr.get(); | std::unique_ptr<Binary> &Bin = BinOrErr.get(); | ||||
return OwningBinary<Binary>(std::move(Bin), std::move(Buffer)); | return OwningBinary<Binary>(std::move(Bin), std::move(Buffer)); | ||||
} | } |