diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2016-04-05 22:08:39 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2016-04-05 22:08:39 +0000 |
commit | f7085871fdb1e670d57d57756566ddea55974894 (patch) | |
tree | 2089a36b84020fb32471d280eadd3c55a4f70b4c | |
parent | 24f5a3eb039a9feb84a9b02737b6c2172d2187e8 (diff) | |
download | bcm5719-llvm-f7085871fdb1e670d57d57756566ddea55974894.tar.gz bcm5719-llvm-f7085871fdb1e670d57d57756566ddea55974894.zip |
Delete broken code.
A synthetic symbol can be global or local, and with the current
infrastructure we don't need any special code for it.
Fixes PR27228.
llvm-svn: 265478
-rw-r--r-- | lld/ELF/OutputSections.cpp | 2 | ||||
-rw-r--r-- | lld/ELF/Writer.cpp | 4 | ||||
-rw-r--r-- | lld/test/ELF/pre_init_fini_array.s | 24 | ||||
-rw-r--r-- | lld/test/ELF/startstop-shared.s | 7 |
4 files changed, 27 insertions, 10 deletions
diff --git a/lld/ELF/OutputSections.cpp b/lld/ELF/OutputSections.cpp index 7e96c82eae6..6a2e4933de2 100644 --- a/lld/ELF/OutputSections.cpp +++ b/lld/ELF/OutputSections.cpp @@ -1515,8 +1515,6 @@ uint8_t SymbolTableSection<ELFT>::getSymbolBinding(SymbolBody *Body) { uint8_t Visibility = Body->getVisibility(); if (Visibility != STV_DEFAULT && Visibility != STV_PROTECTED) return STB_LOCAL; - if (isa<DefinedSynthetic<ELFT>>(Body)) - return STB_LOCAL; return Body->Binding; } diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index f0ad5f6b115..9ab3f78bae3 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -1196,9 +1196,9 @@ template <class ELFT> void Writer<ELFT>::addStartEndSymbols() { auto Define = [&](StringRef Start, StringRef End, OutputSectionBase<ELFT> *OS) { if (OS) { - Symtab.addSynthetic(Start, *OS, 0, STV_DEFAULT); + Symtab.addSynthetic(Start, *OS, 0, STV_HIDDEN); Symtab.addSynthetic(End, *OS, DefinedSynthetic<ELFT>::SectionEnd, - STV_DEFAULT); + STV_HIDDEN); } else { Symtab.addIgnored(Start); Symtab.addIgnored(End); diff --git a/lld/test/ELF/pre_init_fini_array.s b/lld/test/ELF/pre_init_fini_array.s index bf32283d257..4ddcb6947e5 100644 --- a/lld/test/ELF/pre_init_fini_array.s +++ b/lld/test/ELF/pre_init_fini_array.s @@ -67,7 +67,9 @@ _start: // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 +// CHECK-NEXT: Other [ +// CHECK-NEXT: STV_HIDDEN +// CHECK-NEXT: ] // CHECK-NEXT: Section: .fini_array // CHECK-NEXT: } // CHECK-NEXT: Symbol { @@ -76,7 +78,9 @@ _start: // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 +// CHECK-NEXT: Other [ +// CHECK-NEXT: STV_HIDDEN +// CHECK-NEXT: ] // CHECK-NEXT: Section: .fini_array // CHECK-NEXT: } // CHECK-NEXT: Symbol { @@ -85,7 +89,9 @@ _start: // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 +// CHECK-NEXT: Other [ +// CHECK-NEXT: STV_HIDDEN +// CHECK-NEXT: ] // CHECK-NEXT: Section: .init_array // CHECK-NEXT: } // CHECK-NEXT: Symbol { @@ -94,7 +100,9 @@ _start: // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 +// CHECK-NEXT: Other [ +// CHECK-NEXT: STV_HIDDEN +// CHECK-NEXT: ] // CHECK-NEXT: Section: .init_array // CHECK-NEXT: } // CHECK-NEXT: Symbol { @@ -103,7 +111,9 @@ _start: // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 +// CHECK-NEXT: Other [ +// CHECK-NEXT: STV_HIDDEN +// CHECK-NEXT: ] // CHECK-NEXT: Section: .preinit_array // CHECK-NEXT: } // CHECK-NEXT: Symbol { @@ -112,7 +122,9 @@ _start: // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 +// CHECK-NEXT: Other [ +// CHECK-NEXT: STV_HIDDEN +// CHECK-NEXT: ] // CHECK-NEXT: Section: .preinit_array // CHECK-NEXT: } diff --git a/lld/test/ELF/startstop-shared.s b/lld/test/ELF/startstop-shared.s index 108184648f9..9c18d36b02b 100644 --- a/lld/test/ELF/startstop-shared.s +++ b/lld/test/ELF/startstop-shared.s @@ -16,3 +16,10 @@ // CHECK: Name: __start_bar // CHECK-NEXT: Value: 0x[[ADDR]] +// CHECK-NEXT: Size: +// CHECK-NEXT: Binding: Local + +// CHECK: Name: __start_foo +// CHECK-NEXT: Value: +// CHECK-NEXT: Size: +// CHECK-NEXT: Binding: Global |