Return an ErrorOr<Binary *> from createBinary.

I did write a version returning ErrorOr<OwningPtr<Binary> >, but it is too
cumbersome to use without std::move. I will keep the patch locally and submit
when we switch to c++11.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199326 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola
2014-01-15 19:37:43 +00:00
parent 0893113a05
commit 1fca78a9b1
9 changed files with 69 additions and 66 deletions

View File

@@ -580,9 +580,10 @@ static void DumpSymbolNamesFromFile(std::string &Filename) {
delete Result;
}
} else if (magic == sys::fs::file_magic::archive) {
OwningPtr<Binary> arch;
if (error(object::createBinary(Buffer.take(), arch), Filename))
ErrorOr<Binary *> BinaryOrErr = object::createBinary(Buffer.take());
if (error(BinaryOrErr.getError(), Filename))
return;
OwningPtr<Binary> arch(BinaryOrErr.get());
if (object::Archive *a = dyn_cast<object::Archive>(arch.get())) {
if (ArchiveMap) {
@@ -630,9 +631,10 @@ static void DumpSymbolNamesFromFile(std::string &Filename) {
}
}
} else if (magic == sys::fs::file_magic::macho_universal_binary) {
OwningPtr<Binary> Bin;
if (error(object::createBinary(Buffer.take(), Bin), Filename))
ErrorOr<Binary *> BinaryOrErr = object::createBinary(Buffer.take());
if (error(BinaryOrErr.getError(), Filename))
return;
OwningPtr<Binary> Bin(BinaryOrErr.get());
object::MachOUniversalBinary *UB =
cast<object::MachOUniversalBinary>(Bin.get());
@@ -647,9 +649,10 @@ static void DumpSymbolNamesFromFile(std::string &Filename) {
}
}
} else if (magic.is_object()) {
OwningPtr<Binary> obj;
if (error(object::createBinary(Buffer.take(), obj), Filename))
ErrorOr<Binary *> BinaryOrErr = object::createBinary(Buffer.take());
if (error(BinaryOrErr.getError(), Filename))
return;
OwningPtr<Binary> obj(BinaryOrErr.get());
if (object::ObjectFile *o = dyn_cast<ObjectFile>(obj.get()))
DumpSymbolNamesFromObject(o);
} else {