summaryrefslogtreecommitdiff
path: root/lib/Object
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Object')
-rw-r--r--lib/Object/ELFObjectFile.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/Object/ELFObjectFile.cpp b/lib/Object/ELFObjectFile.cpp
index a580dd07dc..7add2d8a52 100644
--- a/lib/Object/ELFObjectFile.cpp
+++ b/lib/Object/ELFObjectFile.cpp
@@ -444,8 +444,11 @@ template<support::endianness target_endianness, bool is64Bits>
const typename ELFObjectFile<target_endianness, is64Bits>::Elf_Shdr *
ELFObjectFile<target_endianness, is64Bits>
::getSection(const Elf_Sym *symb) const {
- if (symb->st_shndx == ELF::SHN_XINDEX)
+ if (symb->st_shndx == ELF::SHN_XINDEX) {
+ if (!ExtendedSymbolTable.count(symb))
+ return 0;
return getSection(ExtendedSymbolTable.lookup(symb));
+ }
if (symb->st_shndx >= ELF::SHN_LORESERVE)
return 0;
return getSection(symb->st_shndx);