diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-01-31 21:40:13 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-01-31 21:40:13 +0000 |
commit | b81f60fd7669d635c0c404f78623283055ab99af (patch) | |
tree | 090059dd327482c2a15cbc16c4ed939e5987e8ca | |
parent | f96f832a3ca939aba0098b3343f2f48aab49f6d0 (diff) | |
download | llvm-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
-rw-r--r-- | include/llvm/Object/ELFObjectFile.h | 5 | ||||
-rw-r--r-- | test/Object/nm-shared-object.test | 2 |
2 files changed, 5 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) diff --git a/test/Object/nm-shared-object.test b/test/Object/nm-shared-object.test index 319ed14cee..b77b2ce41a 100644 --- a/test/Object/nm-shared-object.test +++ b/test/Object/nm-shared-object.test @@ -1,6 +1,7 @@ RUN: llvm-nm -D %p/Inputs/shared-object-test.elf-i386 \ RUN: | FileCheck %s -check-prefix ELF-32 +ELF-32-NOT: U ELF-32: 0012c8 A __bss_start ELF-32: 0012c8 A _edata ELF-32: 0012cc A _end @@ -12,6 +13,7 @@ ELF-32: 000000 D tls_sym RUN: llvm-nm -D %p/Inputs/shared-object-test.elf-x86-64 \ RUN: | FileCheck %s -check-prefix ELF-64 +ELF-64-NOT: U ELF-64: 200454 A __bss_start ELF-64: 200454 A _edata ELF-64: 200458 A _end |