Index: lld/trunk/ELF/Writer.cpp =================================================================== --- lld/trunk/ELF/Writer.cpp +++ lld/trunk/ELF/Writer.cpp @@ -98,6 +98,14 @@ if (Config->Relocatable) return Name; + // This is for --emit-relocs. If .text.foo is emitted as .text, we want to + // emit .rela.text.foo as .rel.text for consistency (this is not technically + // required, but not doing it is odd). This code guarantees that. + 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.", Index: lld/trunk/test/ELF/emit-relocs-merge.s =================================================================== --- lld/trunk/test/ELF/emit-relocs-merge.s +++ lld/trunk/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: lld/trunk/test/ELF/emit-relocs.s =================================================================== --- lld/trunk/test/ELF/emit-relocs.s +++ lld/trunk/test/ELF/emit-relocs.s @@ -83,7 +83,7 @@ # CHECK-NEXT: } # CHECK-NEXT: ] -.section .text,"ax",@progbits,unique,0 +.section .text.fn,"ax",@progbits,unique,0 .globl fn .type fn,@function fn: @@ -94,7 +94,7 @@ callq fn@PLT nop -.section .text,"ax",@progbits,unique,1 +.section .text.fn2,"ax",@progbits,unique,1 .globl fn2 .type fn2,@function fn2: