mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-24 23:28:41 +00:00
Convert the Archive API to use ErrorOr.
Now that we have c++11, even things like ErrorOr<std::unique_ptr<...>> are easy to use. No intended functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211033 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -305,9 +305,13 @@ uint64_t MCJIT::getSymbolAddress(const std::string &Name,
|
||||
// Look for our symbols in each Archive
|
||||
object::Archive::child_iterator ChildIt = A->findSym(Name);
|
||||
if (ChildIt != A->child_end()) {
|
||||
std::unique_ptr<object::Binary> ChildBin;
|
||||
// FIXME: Support nested archives?
|
||||
if (!ChildIt->getAsBinary(ChildBin) && ChildBin->isObject()) {
|
||||
ErrorOr<std::unique_ptr<object::Binary>> ChildBinOrErr =
|
||||
ChildIt->getAsBinary();
|
||||
if (ChildBinOrErr.getError())
|
||||
continue;
|
||||
std::unique_ptr<object::Binary> ChildBin = std::move(ChildBinOrErr.get());
|
||||
if (ChildBin->isObject()) {
|
||||
std::unique_ptr<object::ObjectFile> OF(
|
||||
static_cast<object::ObjectFile *>(ChildBin.release()));
|
||||
// This causes the object file to be loaded.
|
||||
|
Reference in New Issue
Block a user