diff options
author | George Rimar <grimar@accesssoftek.com> | 2015-11-13 07:56:27 +0000 |
---|---|---|
committer | George Rimar <grimar@accesssoftek.com> | 2015-11-13 07:56:27 +0000 |
commit | 51e37d9997631bd5f05db5b19bf3d1a8059f1a18 (patch) | |
tree | 11a9d5242a08cdfaa1eccabbba398b53c275a18e | |
parent | e1a89c2d1cbc880c1a0dbf539acc5c4db8da6e4b (diff) | |
download | bcm5719-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.cpp | 2 | ||||
-rw-r--r-- | lld/test/elf2/section-name.s | 7 |
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 |