diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:41:05 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:41:05 +0000 |
commit | 01095a5d43bbfde13731688ddcf6048ebb8b7721 (patch) | |
tree | 4def12e759965de927d963ac65840d663ef9d1ea /tools/llvm-readobj/Win64EHDumper.cpp | |
parent | f0f4822ed4b66e3579e92a89f368f8fb860e218e (diff) |
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(); } |