[PATCH] D39242: [ELF] - Stop naming relocation sections with first input section name.

George Rimar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 26 03:49:10 PDT 2017


grimar updated this revision to Diff 120389.
grimar added a comment.

- Used code suggested.


https://reviews.llvm.org/D39242

Files:
  ELF/Writer.cpp
  test/ELF/emit-relocs-merge.s
  test/ELF/emit-relocs.s


Index: test/ELF/emit-relocs.s
===================================================================
--- test/ELF/emit-relocs.s
+++ test/ELF/emit-relocs.s
@@ -83,7 +83,7 @@
 # CHECK-NEXT:   }
 # CHECK-NEXT: ]
 
-.section .text,"ax", at progbits,unique,0
+.section .text.fn,"ax", at progbits,unique,0
 .globl fn
 .type fn, at function
 fn:
@@ -94,7 +94,7 @@
   callq fn at PLT
   nop
 
-.section .text,"ax", at progbits,unique,1
+.section .text.fn2,"ax", at progbits,unique,1
 .globl fn2
 .type fn2, at function
 fn2:
Index: test/ELF/emit-relocs-merge.s
===================================================================
--- test/ELF/emit-relocs-merge.s
+++ test/ELF/emit-relocs-merge.s
@@ -8,7 +8,7 @@
 # CHECK-NEXT:     0x1000 R_X86_64_64 zed 0x0
 # CHECK-NEXT:     0x1008 R_X86_64_64 zed 0x0
 # CHECK-NEXT:   }
-# CHECK-NEXT:   Section ({{.*}}) .rela.data.foo {
+# CHECK-NEXT:   Section ({{.*}}) .rela.data {
 # CHECK-NEXT:     0x1000 R_X86_64_64 zed 0x0
 # CHECK-NEXT:     0x1008 R_X86_64_64 zed 0x0
 # CHECK-NEXT:   }
Index: ELF/Writer.cpp
===================================================================
--- ELF/Writer.cpp
+++ ELF/Writer.cpp
@@ -98,6 +98,14 @@
   if (Config->Relocatable)
     return Name;
 
+  // This is normally used for --emit-relocs. With that we want
+  // to name relocation section similar to it's target section.
+  // That makes output cleaner and consistent with GNU linkers.
+  if (Name.startswith(".rel."))
+    return Saver.save(".rel" + getOutputSectionName(Name.substr(4)));
+  if (Name.startswith(".rela."))
+    return Saver.save(".rela" + getOutputSectionName(Name.substr(5)));
+
   for (StringRef V :
        {".text.", ".rodata.", ".data.rel.ro.", ".data.", ".bss.rel.ro.",
         ".bss.", ".init_array.", ".fini_array.", ".ctors.", ".dtors.", ".tbss.",


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D39242.120389.patch
Type: text/x-patch
Size: 1779 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171026/ac6ee4b1/attachment.bin>


More information about the llvm-commits mailing list