diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-03 18:19:00 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-03 18:19:00 +0000 |
commit | 5954faae4d39312566bb926c8678f13018cefdcb (patch) | |
tree | 8f2f58d70bcf271e67d1338b679f54baa3df8cc6 /tools/llvm-symbolizer | |
parent | 115b2eb8bf50a09a2999efc560baacdfb1715990 (diff) |
Return ErrorOr from getSymbolAddress.
It can fail trying to get the section on ELF and COFF. This makes sure the
error is handled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241366 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-symbolizer')
-rw-r--r-- | tools/llvm-symbolizer/LLVMSymbolize.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/tools/llvm-symbolizer/LLVMSymbolize.cpp b/tools/llvm-symbolizer/LLVMSymbolize.cpp index ec3fe4868db..76f92f42921 100644 --- a/tools/llvm-symbolizer/LLVMSymbolize.cpp +++ b/tools/llvm-symbolizer/LLVMSymbolize.cpp @@ -84,9 +84,11 @@ void ModuleInfo::addSymbol(const SymbolRef &Symbol, uint64_t SymbolSize, SymbolRef::Type SymbolType = Symbol.getType(); if (SymbolType != SymbolRef::ST_Function && SymbolType != SymbolRef::ST_Data) return; - uint64_t SymbolAddress; - if (error(Symbol.getAddress(SymbolAddress)) || - SymbolAddress == UnknownAddress) + ErrorOr<uint64_t> SymbolAddressOrErr = Symbol.getAddress(); + if (error(SymbolAddressOrErr.getError())) + return; + uint64_t SymbolAddress = *SymbolAddressOrErr; + if (SymbolAddress == UnknownAddress) return; if (OpdExtractor) { // For big-endian PowerPC64 ELF, symbols in the .opd section refer to |