diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-04-03 03:57:03 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-04-03 03:57:03 +0000 |
commit | 46aa8c8dae6693b442201c334d10503568bfdd70 (patch) | |
tree | 85354f80ff4f739a3208368eb11de580c5bb46d1 /include/llvm | |
parent | 051c948bbe3f64a7c450120963b28a5959382cb8 (diff) | |
download | llvm-46aa8c8dae6693b442201c334d10503568bfdd70.tar.gz llvm-46aa8c8dae6693b442201c334d10503568bfdd70.tar.bz2 llvm-46aa8c8dae6693b442201c334d10503568bfdd70.tar.xz |
Handle getting UnknownAddressOrSize or section_end().
These should probably be error conditions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205509 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm')
-rw-r--r-- | include/llvm/Object/ObjectFile.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/include/llvm/Object/ObjectFile.h b/include/llvm/Object/ObjectFile.h index fa21417027..8298b63420 100644 --- a/include/llvm/Object/ObjectFile.h +++ b/include/llvm/Object/ObjectFile.h @@ -354,12 +354,21 @@ inline error_code SymbolRef::getFileOffset(uint64_t &Result) const { uint64_t Address; if (error_code EC = getAddress(Address)) return EC; + if (Address == UnknownAddressOrSize) { + Result = UnknownAddressOrSize; + return object_error::success; + } const ObjectFile *Obj = getObject(); section_iterator SecI(Obj->section_begin()); if (error_code EC = getSection(SecI)) return EC; + if (SecI == Obj->section_end()) { + Result = UnknownAddressOrSize; + return object_error::success; + } + uint64_t SectionAddress; if (error_code EC = SecI->getAddress(SectionAddress)) return EC; |