summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-readobj/COFFDumper.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-05-29 06:18:08 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-05-29 06:18:08 +0000
commit61f179815a19f7045d5ea478eea57ce6caa08eb0 (patch)
tree0c2bd10a18b9de14b5f64f680b5b36a82b53e7aa /llvm/tools/llvm-readobj/COFFDumper.cpp
parentba1439229ac922cf3772d598db472229ed114b5f (diff)
downloadbcm5719-llvm-61f179815a19f7045d5ea478eea57ce6caa08eb0.tar.gz
bcm5719-llvm-61f179815a19f7045d5ea478eea57ce6caa08eb0.zip
Don't dereference a symbol iterator before checking for the end case
llvm-svn: 271173
Diffstat (limited to 'llvm/tools/llvm-readobj/COFFDumper.cpp')
-rw-r--r--llvm/tools/llvm-readobj/COFFDumper.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/llvm/tools/llvm-readobj/COFFDumper.cpp b/llvm/tools/llvm-readobj/COFFDumper.cpp
index 029674b8d63..bf6a7b4a2b0 100644
--- a/llvm/tools/llvm-readobj/COFFDumper.cpp
+++ b/llvm/tools/llvm-readobj/COFFDumper.cpp
@@ -208,15 +208,19 @@ std::error_code COFFDumper::resolveSymbol(const coff_section *Section,
uint64_t Offset, SymbolRef &Sym) {
cacheRelocations();
const auto &Relocations = RelocMap[Section];
+ auto SymI = Obj->symbol_end();
for (const auto &Relocation : Relocations) {
uint64_t RelocationOffset = Relocation.getOffset();
if (RelocationOffset == Offset) {
- Sym = *Relocation.getSymbol();
- return readobj_error::success;
+ SymI = Relocation.getSymbol();
+ break;
}
}
- return readobj_error::unknown_symbol;
+ if (SymI == Obj->symbol_end())
+ return readobj_error::unknown_symbol;
+ Sym = *SymI;
+ return readobj_error::success;
}
// Given a section and an offset into this section the function returns the name
OpenPOWER on IntegriCloud