Mark the first dynamic elf symbol as SF_FormatSpecific.
[oota-llvm.git] / include / llvm / Object / ELFObjectFile.h
index 5433a7a1b3ffb80fc1a838255efa64963c168fd4..f4f688ae7937ffbf11a90f1f90db44334c9a4135 100644 (file)
@@ -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)