diff options
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index 3beb01ad6eb..3c536af5713 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -649,9 +649,14 @@ static void printRelocationTargetName(const MachOObjectFile *O, for (const SymbolRef &Symbol : O->symbols()) { std::error_code ec; - ErrorOr<uint64_t> Addr = Symbol.getAddress(); - if ((ec = Addr.getError())) - report_fatal_error(ec.message()); + Expected<uint64_t> Addr = Symbol.getAddress(); + if (!Addr) { + std::string Buf; + raw_string_ostream OS(Buf); + logAllUnhandledErrors(Addr.takeError(), OS, ""); + OS.flush(); + report_fatal_error(Buf); + } if (*Addr != Val) continue; Expected<StringRef> Name = Symbol.getName(); @@ -992,8 +997,8 @@ static void DisassembleObject(const ObjectFile *Obj, bool InlineRelocs) { typedef std::vector<std::pair<uint64_t, StringRef>> SectionSymbolsTy; std::map<SectionRef, SectionSymbolsTy> AllSymbols; for (const SymbolRef &Symbol : Obj->symbols()) { - ErrorOr<uint64_t> AddressOrErr = Symbol.getAddress(); - error(AddressOrErr.getError()); + Expected<uint64_t> AddressOrErr = Symbol.getAddress(); + error(errorToErrorCode(AddressOrErr.takeError())); uint64_t Address = *AddressOrErr; Expected<StringRef> Name = Symbol.getName(); @@ -1389,8 +1394,9 @@ void llvm::PrintSymbolTable(const ObjectFile *o, StringRef ArchiveName, return; } for (const SymbolRef &Symbol : o->symbols()) { - ErrorOr<uint64_t> AddressOrError = Symbol.getAddress(); - error(AddressOrError.getError()); + Expected<uint64_t> AddressOrError = Symbol.getAddress(); + if (!AddressOrError) + report_error(ArchiveName, o->getFileName(), AddressOrError.takeError()); uint64_t Address = *AddressOrError; Expected<SymbolRef::Type> TypeOrError = Symbol.getType(); if (!TypeOrError) |