summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2016-04-05 22:08:39 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2016-04-05 22:08:39 +0000
commitf7085871fdb1e670d57d57756566ddea55974894 (patch)
tree2089a36b84020fb32471d280eadd3c55a4f70b4c
parent24f5a3eb039a9feb84a9b02737b6c2172d2187e8 (diff)
downloadbcm5719-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.cpp2
-rw-r--r--lld/ELF/Writer.cpp4
-rw-r--r--lld/test/ELF/pre_init_fini_array.s24
-rw-r--r--lld/test/ELF/startstop-shared.s7
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
OpenPOWER on IntegriCloud