Commit 14085045 authored by Fangrui Song's avatar Fangrui Song
Browse files

[ELF] Name MergeSyntheticSection using an input section instead of the output section

In a link map, the input section name gives more information. See the updated
merge-entsize.s for an example. The output file is unchanged.

Compiler generated input sections with the SHF_MERGE flag have names such as
.rodata.str1.1 and .rodata.cstN, and are not affected by -fdata-sections.

Reviewed By: peter.smith

Differential Revision: https://reviews.llvm.org/D149466
parent 009c053e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -217,7 +217,7 @@ void OutputSection::finalizeInputSections() {
      });
      if (i == mergeSections.end()) {
        MergeSyntheticSection *syn =
            createMergeSynthetic(name, ms->type, ms->flags, ms->addralign);
            createMergeSynthetic(s->name, ms->type, ms->flags, ms->addralign);
        mergeSections.push_back(syn);
        i = std::prev(mergeSections.end());
        syn->entsize = ms->entsize;
+5 −1
Original line number Diff line number Diff line
// REQUIRES: x86
// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
// RUN: ld.lld %t.o -o %t
// RUN: ld.lld %t.o -o %t -M | FileCheck %s --check-prefix=MAP
// RUN: llvm-readobj -S %t | FileCheck %s

// MAP:      .rodata{{$}}
// MAP-NEXT:         <internal>:(.rodata.1)
// MAP-NEXT:         <internal>:(.rodata.2)

        .section  .rodata.1,"aM",@progbits,1
        .p2align 2
        .byte 0x42
+6 −1
Original line number Diff line number Diff line
// REQUIRES: x86
// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
// RUN: ld.lld %t.o -o %t.so -shared
// RUN: ld.lld %t.o -o %t.so -shared -M | FileCheck %s --check-prefix=MAP
// RUN: llvm-readobj -S --section-data %t.so | FileCheck %s

// MAP:      .rodata{{$}}
// MAP-NEXT:         <internal>:(.rodata.foo)
// MAP-NEXT: .rodata2
// MAP-NEXT:         <internal>:(.rodata2)

        .section        .rodata.foo,"aMS",@progbits,1
        .align  16
        .asciz "foo"