summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorge Rimar <grimar@accesssoftek.com>2015-11-13 07:56:27 +0000
committerGeorge Rimar <grimar@accesssoftek.com>2015-11-13 07:56:27 +0000
commit51e37d9997631bd5f05db5b19bf3d1a8059f1a18 (patch)
tree11a9d5242a08cdfaa1eccabbba398b53c275a18e
parente1a89c2d1cbc880c1a0dbf539acc5c4db8da6e4b (diff)
downloadbcm5719-llvm-51e37d9997631bd5f05db5b19bf3d1a8059f1a18.tar.gz
bcm5719-llvm-51e37d9997631bd5f05db5b19bf3d1a8059f1a18.zip
[ELF2] - dont merge .data.rel.ro/.data.rel.ro.local into .data section.
This sections can be protected with relro after resolving relocations by dynamic linker. Differential revision: http://reviews.llvm.org/D14567 llvm-svn: 253018
-rw-r--r--lld/ELF/Writer.cpp2
-rw-r--r--lld/test/elf2/section-name.s7
2 files changed, 9 insertions, 0 deletions
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index 975a21628e2..fe744b2b053 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -491,6 +491,8 @@ StringRef Writer<ELFT>::getOutputSectionName(StringRef S) const {
return ".text";
if (S.startswith(".rodata."))
return ".rodata";
+ if (S.startswith(".data.rel.ro"))
+ return ".data.rel.ro";
if (S.startswith(".data."))
return ".data";
if (S.startswith(".bss."))
diff --git a/lld/test/elf2/section-name.s b/lld/test/elf2/section-name.s
index 783dfa99ad6..d9e3efedf75 100644
--- a/lld/test/elf2/section-name.s
+++ b/lld/test/elf2/section-name.s
@@ -17,6 +17,10 @@ _start:
.section .bss,"",@nobits
.section .foo.a,"aw"
.section .foo,"aw"
+.section .data.rel.ro,"aw",%progbits
+.section .data.rel.ro.a,"aw",%progbits
+.section .data.rel.ro.local,"aw",%progbits
+.section .data.rel.ro.local.a,"aw",%progbits
// CHECK-NOT: Name: .rodata.a
// CHECK: Name: .rodata
@@ -26,5 +30,8 @@ _start:
// CHECK: Name: .data
// CHECK: Name: .foo.a
// CHECK: Name: .foo
+// CHECK-NOT: Name: .data.rel.ro.a
+// CHECK-NOT: Name: .data.rel.ro.local.a
+// CHECK: Name: .data.rel.ro
// CHECK-NOT: Name: .bss.a
// CHECK: Name: .bss
OpenPOWER on IntegriCloud