Follow-up for D74006.
/// Section containing metadata on function stack sizes.
MCSection *StackSizesSection = nullptr;
- mutable DenseMap<const MCSymbol *, unsigned> StackSizesUniquing;
// ELF specific sections.
MCSection *DataRelROSection = nullptr;
Flags |= ELF::SHF_GROUP;
}
- const MCSymbol *Link = TextSec.getBeginSymbol();
- auto It = StackSizesUniquing.insert({Link, StackSizesUniquing.size()});
- unsigned UniqueID = It.first->second;
-
return Ctx->getELFSection(".stack_sizes", ELF::SHT_PROGBITS, Flags, 0,
- GroupName, UniqueID, cast<MCSymbolELF>(Link));
+ GroupName, MCSection::NonUniqueID,
+ cast<MCSymbolELF>(TextSec.getBeginSymbol()));
}
; CHECK-LABEL: func1:
; CHECK-NEXT: .Lfunc_begin0:
-; CHECK: .section .stack_sizes,"o",%progbits,.text,unique,0
+; CHECK: .section .stack_sizes,"o",%progbits,.text{{$}}
; CHECK-NEXT: .long .Lfunc_begin0
; CHECK-NEXT: .byte 8
define void @func1(i32, i32) #0 {
; CHECK-LABEL: func2:
; CHECK-NEXT: .Lfunc_begin1:
-; CHECK: .section .stack_sizes,"o",%progbits,.text,unique,0
+; CHECK: .section .stack_sizes,"o",%progbits,.text{{$}}
; CHECK-NEXT: .long .Lfunc_begin1
; CHECK-NEXT: .byte 16
define void @func2() #0 {
; CHECK-LABEL: func1:
; CHECK-NEXT: .Lfunc_begin0:
-; CHECK: .section .stack_sizes,"o",@progbits,.text,unique,0
+; CHECK: .section .stack_sizes,"o",@progbits,.text{{$}}
; CHECK-NEXT: .quad .Lfunc_begin0
; CHECK-NEXT: .byte 0
define void @func1(i32, i32) #0 {
; CHECK-LABEL: func2:
; CHECK-NEXT: .Lfunc_begin1:
-; CHECK: .section .stack_sizes,"o",@progbits,.text,unique,0
+; CHECK: .section .stack_sizes,"o",@progbits,.text{{$}}
; CHECK-NEXT: .quad .Lfunc_begin1
; CHECK-NEXT: .ascii "\250\001"
define void @func2(i32, i32) #0 {
; CHECK-LABEL: func3:
; CHECK-NEXT: .Lfunc_begin2:
-; CHECK: .section .stack_sizes,"o",@progbits,.text,unique,0
+; CHECK: .section .stack_sizes,"o",@progbits,.text{{$}}
; CHECK-NEXT: .quad .Lfunc_begin2
; CHECK-NEXT: .ascii "\250\001"
define void @func3() #0 {
; Check we add SHF_LINK_ORDER for .stack_sizes and link it with the corresponding .text sections.
; CHECK: .section .text._Z3barv,"ax",@progbits
-; CHECK: .section .stack_sizes,"o",@progbits,.text._Z3barv,unique,0
+; CHECK: .section .stack_sizes,"o",@progbits,.text._Z3barv{{$}}
; CHECK: .section .text._Z3foov,"ax",@progbits
-; CHECK: .section .stack_sizes,"o",@progbits,.text._Z3foov,unique,1
+; CHECK: .section .stack_sizes,"o",@progbits,.text._Z3foov{{$}}
; Check we add .stack_size section to a COMDAT group with the corresponding .text section if such a COMDAT exists.
; CHECK: .section .text._Z4fooTIiET_v,"axG",@progbits,_Z4fooTIiET_v,comdat
-; CHECK: .section .stack_sizes,"Go",@progbits,_Z4fooTIiET_v,comdat,.text._Z4fooTIiET_v,unique,2
+; CHECK: .section .stack_sizes,"Go",@progbits,_Z4fooTIiET_v,comdat,.text._Z4fooTIiET_v{{$}}
$_Z4fooTIiET_v = comdat any
; CHECK-LABEL: func1:
; CHECK-NEXT: .Lfunc_begin0:
-; CHECK: .section .stack_sizes,"o",@progbits
+; CHECK: .section .stack_sizes,"o",@progbits,.text{{$}}
; CHECK-NEXT: .quad .Lfunc_begin0
; CHECK-NEXT: .byte 8
define void @func1(i32, i32) #0 {
; CHECK-LABEL: func2:
; CHECK-NEXT: .Lfunc_begin1:
-; CHECK: .section .stack_sizes,"o",@progbits
+; CHECK: .section .stack_sizes,"o",@progbits,.text{{$}}
; CHECK-NEXT: .quad .Lfunc_begin1
; CHECK-NEXT: .byte 24
define void @func2() #0 {
; Check that we still put .stack_sizes into the corresponding COMDAT group if any.
; CHECK: .section .text._Z4fooTIiET_v,"axG",@progbits,_Z4fooTIiET_v,comdat
-; CHECK: .section .stack_sizes,"Go",@progbits,_Z4fooTIiET_v,comdat,.text._Z4fooTIiET_v,unique,1
+; CHECK: .section .stack_sizes,"Go",@progbits,_Z4fooTIiET_v,comdat,.text._Z4fooTIiET_v{{$}}
$_Z4fooTIiET_v = comdat any
define linkonce_odr dso_local i32 @_Z4fooTIiET_v() comdat {
ret i32 0
}
-; Check that we assign a unique ID to .stack_sizes if it is linked with a unique .text section.
; CHECK: .section .text.func3,"ax",@progbits
-; CHECK: .section .stack_sizes,"o",@progbits,.text.func3,unique,2
+; CHECK: .section .stack_sizes,"o",@progbits,.text.func3{{$}}
define dso_local i32 @func3() section ".text.func3" {
%1 = alloca i32, align 4
store i32 0, i32* %1, align 4