summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-01-31 21:40:13 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-01-31 21:40:13 +0000
commitb81f60fd7669d635c0c404f78623283055ab99af (patch)
tree090059dd327482c2a15cbc16c4ed939e5987e8ca /include
parentf96f832a3ca939aba0098b3343f2f48aab49f6d0 (diff)
downloadllvm-b81f60fd7669d635c0c404f78623283055ab99af.tar.gz
llvm-b81f60fd7669d635c0c404f78623283055ab99af.tar.bz2
llvm-b81f60fd7669d635c0c404f78623283055ab99af.tar.xz
Mark the first dynamic elf symbol as SF_FormatSpecific.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200578 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/Object/ELFObjectFile.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/include/llvm/Object/ELFObjectFile.h b/include/llvm/Object/ELFObjectFile.h
index 5433a7a1b3..f4f688ae79 100644
--- a/include/llvm/Object/ELFObjectFile.h
+++ b/include/llvm/Object/ELFObjectFile.h
@@ -379,7 +379,8 @@ error_code ELFObjectFile<ELFT>::getSymbolType(DataRefImpl Symb,
template <class ELFT>
uint32_t ELFObjectFile<ELFT>::getSymbolFlags(DataRefImpl Symb) const {
- const Elf_Sym *ESym = getSymbol(Symb);
+ Elf_Sym_Iter EIter = toELFSymIter(Symb);
+ const Elf_Sym *ESym = &*EIter;
uint32_t Result = SymbolRef::SF_None;
@@ -393,7 +394,7 @@ uint32_t ELFObjectFile<ELFT>::getSymbolFlags(DataRefImpl Symb) const {
Result |= SymbolRef::SF_Absolute;
if (ESym->getType() == ELF::STT_FILE || ESym->getType() == ELF::STT_SECTION ||
- ESym == &*EF.begin_symbols())
+ EIter == EF.begin_symbols() || EIter == EF.begin_dynamic_symbols())
Result |= SymbolRef::SF_FormatSpecific;
if (EF.getSymbolTableIndex(ESym) == ELF::SHN_UNDEF)