[lld] r327983 - [ELF] - Make __start_/__stop_<section_name> symbols STV_PROTECTED
George Rimar via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 20 07:22:11 PDT 2018
Author: grimar
Date: Tue Mar 20 07:22:10 2018
New Revision: 327983
URL: http://llvm.org/viewvc/llvm-project?rev=327983&view=rev
Log:
[ELF] - Make __start_/__stop_<section_name> symbols STV_PROTECTED
There are no reasons for them to be STV_DEFAULT,
recently bfd did the same change.
Differential revision: https://reviews.llvm.org/D44566
Modified:
lld/trunk/ELF/Writer.cpp
lld/trunk/test/ELF/startstop-shared.s
lld/trunk/test/ELF/startstop.s
Modified: lld/trunk/ELF/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=327983&r1=327982&r2=327983&view=diff
==============================================================================
--- lld/trunk/ELF/Writer.cpp (original)
+++ lld/trunk/ELF/Writer.cpp Tue Mar 20 07:22:10 2018
@@ -1629,8 +1629,8 @@ void Writer<ELFT>::addStartStopSymbols(O
StringRef S = Sec->Name;
if (!isValidCIdentifier(S))
return;
- addOptionalRegular(Saver.save("__start_" + S), Sec, 0, STV_DEFAULT);
- addOptionalRegular(Saver.save("__stop_" + S), Sec, -1, STV_DEFAULT);
+ addOptionalRegular(Saver.save("__start_" + S), Sec, 0, STV_PROTECTED);
+ addOptionalRegular(Saver.save("__stop_" + S), Sec, -1, STV_PROTECTED);
}
static bool needsPtLoad(OutputSection *Sec) {
Modified: lld/trunk/test/ELF/startstop-shared.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/startstop-shared.s?rev=327983&r1=327982&r2=327983&view=diff
==============================================================================
--- lld/trunk/test/ELF/startstop-shared.s (original)
+++ lld/trunk/test/ELF/startstop-shared.s Tue Mar 20 07:22:10 2018
@@ -11,18 +11,30 @@
.quad __start_bar
.section bar,"a"
-// Test that we are able to hide the symbol.
-// CHECK: R_X86_64_RELATIVE - 0x[[ADDR:.*]]
+// CHECK: Relocations [
+// CHECK-NEXT: Section {{.*}} .rela.dyn {
+// CHECK-NEXT: R_X86_64_RELATIVE
+// CHECK-NEXT: R_X86_64_RELATIVE
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
-// By default the symbol is visible and we need a dynamic reloc.
-// CHECK: R_X86_64_64 __start_foo 0x0
+// Test that we are able to hide the symbol.
+// By default the symbol is protected.
// CHECK: Name: __start_bar
-// CHECK-NEXT: Value: 0x[[ADDR]]
+// CHECK-NEXT: Value:
// CHECK-NEXT: Size:
// CHECK-NEXT: Binding: Local
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other [
+// CHECK-NEXT: STV_HIDDEN
+// CHECK-NEXT: ]
// CHECK: Name: __start_foo
// CHECK-NEXT: Value:
// CHECK-NEXT: Size:
// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: None
+// CHECK-NEXT: Other [
+// CHECK-NEXT: STV_PROTECTED
+// CHECK-NEXT: ]
Modified: lld/trunk/test/ELF/startstop.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/startstop.s?rev=327983&r1=327982&r2=327983&view=diff
==============================================================================
--- lld/trunk/test/ELF/startstop.s (original)
+++ lld/trunk/test/ELF/startstop.s Tue Mar 20 07:22:10 2018
@@ -19,13 +19,12 @@
// DISASM: 1013: 90 nop
// DISASM: 1014: 90 nop
-
// SYMBOL: Relocations [
// SYMBOL-NEXT: Section ({{.*}}) .rela.dyn {
-// SYMBOL-NEXT: 0x2010 R_X86_64_64 __stop_zed1 0x0
-// SYMBOL-NEXT: 0x2018 R_X86_64_64 __stop_zed1 0x1
-// SYMBOL-NEXT: 0x2000 R_X86_64_64 __stop_zed2 0x0
-// SYMBOL-NEXT: 0x2008 R_X86_64_64 __stop_zed2 0x1
+// SYMBOL-NEXT: R_X86_64_RELATIVE
+// SYMBOL-NEXT: R_X86_64_RELATIVE
+// SYMBOL-NEXT: R_X86_64_RELATIVE
+// SYMBOL-NEXT: R_X86_64_RELATIVE
// SYMBOL-NEXT: }
// SYMBOL-NEXT: ]
@@ -45,20 +44,20 @@
// SYMBOL: Symbol {
// SYMBOL: Name: __stop_foo
// SYMBOL: Value: 0x1012
-// STMBOL: STV_HIDDEN
+// SYMBOL: STV_HIDDEN
// SYMBOL: Section: foo
// SYMBOL: }
// SYMBOL: Symbol {
// SYMBOL: Name: __stop_zed1
// SYMBOL: Value: 0x2010
-// STMBOL: Other: 0
+// SYMBOL: STV_PROTECTED
// SYMBOL: Section: zed1
// SYMBOL: }
// SYMBOL: Symbol {
// SYMBOL: Name: __stop_zed2
// SYMBOL: Value: 0x2020
-// STMBOL: Other: 0
+// SYMBOL: STV_PROTECTED
// SYMBOL: Section: zed2
// SYMBOL: }
More information about the llvm-commits
mailing list