diff options
Diffstat (limited to 'tools/llvm-readobj/Win64EHDumper.cpp')
-rw-r--r-- | tools/llvm-readobj/Win64EHDumper.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/tools/llvm-readobj/Win64EHDumper.cpp b/tools/llvm-readobj/Win64EHDumper.cpp index 2da5ae3200fde..f7e56b3615425 100644 --- a/tools/llvm-readobj/Win64EHDumper.cpp +++ b/tools/llvm-readobj/Win64EHDumper.cpp @@ -120,13 +120,17 @@ static std::string formatSymbol(const Dumper::Context &Ctx, SymbolRef Symbol; if (!Ctx.ResolveSymbol(Section, Offset, Symbol, Ctx.UserData)) { - if (ErrorOr<StringRef> Name = Symbol.getName()) { + Expected<StringRef> Name = Symbol.getName(); + if (Name) { OS << *Name; if (Displacement > 0) OS << format(" +0x%X (0x%" PRIX64 ")", Displacement, Offset); else OS << format(" (0x%" PRIX64 ")", Offset); return OS.str(); + } else { + // TODO: Actually report errors helpfully. + consumeError(Name.takeError()); } } @@ -144,12 +148,14 @@ static std::error_code resolveRelocation(const Dumper::Context &Ctx, Ctx.ResolveSymbol(Section, Offset, Symbol, Ctx.UserData)) return EC; - ErrorOr<uint64_t> ResolvedAddressOrErr = Symbol.getAddress(); - if (std::error_code EC = ResolvedAddressOrErr.getError()) - return EC; + Expected<uint64_t> ResolvedAddressOrErr = Symbol.getAddress(); + if (!ResolvedAddressOrErr) + return errorToErrorCode(ResolvedAddressOrErr.takeError()); ResolvedAddress = *ResolvedAddressOrErr; - ErrorOr<section_iterator> SI = Symbol.getSection(); + Expected<section_iterator> SI = Symbol.getSection(); + if (!SI) + return errorToErrorCode(SI.takeError()); ResolvedSection = Ctx.COFF.getCOFFSection(**SI); return std::error_code(); } |