summaryrefslogtreecommitdiffstats
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
commite9d1102545434c4c930ac5e42f7fe379c3e4c744 (patch)
tree230d0e6dd4ed46e07beae86405bc118e4e37a54e
parent5ec150c9675efaf826d72a1a2fd8188c87b69715 (diff)
downloadbcm5719-llvm-e9d1102545434c4c930ac5e42f7fe379c3e4c744.tar.gz
bcm5719-llvm-e9d1102545434c4c930ac5e42f7fe379c3e4c744.zip
Mark the first dynamic elf symbol as SF_FormatSpecific.
llvm-svn: 200578
-rw-r--r--llvm/include/llvm/Object/ELFObjectFile.h5
-rw-r--r--llvm/test/Object/nm-shared-object.test2
2 files changed, 5 insertions, 2 deletions
diff --git a/llvm/include/llvm/Object/ELFObjectFile.h b/llvm/include/llvm/Object/ELFObjectFile.h
index 5433a7a1b3f..f4f688ae793 100644
--- a/llvm/include/llvm/Object/ELFObjectFile.h
+++ b/llvm/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/llvm/test/Object/nm-shared-object.test b/llvm/test/Object/nm-shared-object.test
index 319ed14ceed..b77b2ce41a0 100644
--- a/llvm/test/Object/nm-shared-object.test
+++ b/llvm/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
OpenPOWER on IntegriCloud