diff --git a/llvm/lib/MC/MCObjectFileInfo.cpp b/llvm/lib/MC/MCObjectFileInfo.cpp --- a/llvm/lib/MC/MCObjectFileInfo.cpp +++ b/llvm/lib/MC/MCObjectFileInfo.cpp @@ -1015,6 +1015,6 @@ } return Ctx->getELFSection(".llvm_bb_addr_map", ELF::SHT_LLVM_BB_ADDR_MAP, - Flags, 0, GroupName, MCSection::NonUniqueID, + Flags, 0, GroupName, ElfSec.getUniqueID(), cast(TextSec.getBeginSymbol())); } diff --git a/llvm/test/CodeGen/X86/basic-block-sections-labels.ll b/llvm/test/CodeGen/X86/basic-block-sections-labels.ll --- a/llvm/test/CodeGen/X86/basic-block-sections-labels.ll +++ b/llvm/test/CodeGen/X86/basic-block-sections-labels.ll @@ -1,5 +1,6 @@ ; Check the basic block sections labels option -; RUN: llc < %s -mtriple=x86_64 -function-sections -basic-block-sections=labels | FileCheck %s +; RUN: llc < %s -mtriple=x86_64 -function-sections -unique-section-names=true -basic-block-sections=labels | FileCheck %s -check-prefix=UNIQ +; RUN: llc < %s -mtriple=x86_64 -function-sections -unique-section-names=false -basic-block-sections=labels | FileCheck %s -check-prefix=NOUNIQ define void @_Z3bazb(i1 zeroext) personality i32 (...)* @__gxx_personality_v0 { br i1 %0, label %2, label %7 @@ -28,29 +29,33 @@ declare i32 @__gxx_personality_v0(...) -; CHECK-LABEL: _Z3bazb: -; CHECK-LABEL: .Lfunc_begin0: -; CHECK-LABEL: .LBB_END0_0: -; CHECK-LABEL: .LBB0_1: -; CHECK-LABEL: .LBB_END0_1: -; CHECK-LABEL: .LBB0_2: -; CHECK-LABEL: .LBB_END0_2: -; CHECK-LABEL: .LBB0_3: -; CHECK-LABEL: .LBB_END0_3: -; CHECK-LABEL: .Lfunc_end0: - -; CHECK: .section .llvm_bb_addr_map,"o",@llvm_bb_addr_map,.text -; CHECK-NEXT: .quad .Lfunc_begin0 -; CHECK-NEXT: .byte 4 -; CHECK-NEXT: .uleb128 .Lfunc_begin0-.Lfunc_begin0 -; CHECK-NEXT: .uleb128 .LBB_END0_0-.Lfunc_begin0 -; CHECK-NEXT: .byte 0 -; CHECK-NEXT: .uleb128 .LBB0_1-.Lfunc_begin0 -; CHECK-NEXT: .uleb128 .LBB_END0_1-.LBB0_1 -; CHECK-NEXT: .byte 0 -; CHECK-NEXT: .uleb128 .LBB0_2-.Lfunc_begin0 -; CHECK-NEXT: .uleb128 .LBB_END0_2-.LBB0_2 -; CHECK-NEXT: .byte 1 -; CHECK-NEXT: .uleb128 .LBB0_3-.Lfunc_begin0 -; CHECK-NEXT: .uleb128 .LBB_END0_3-.LBB0_3 -; CHECK-NEXT: .byte 5 +; UNIQ: .section .text._Z3bazb,"ax",@progbits +; NOUNIQ: .section .text,"ax",@progbits,unique,1 +; CHECK-LABEL: _Z3bazb: +; CHECK-LABEL: .Lfunc_begin0: +; CHECK-LABEL: .LBB_END0_0: +; CHECK-LABEL: .LBB0_1: +; CHECK-LABEL: .LBB_END0_1: +; CHECK-LABEL: .LBB0_2: +; CHECK-LABEL: .LBB_END0_2: +; CHECK-LABEL: .LBB0_3: +; CHECK-LABEL: .LBB_END0_3: +; CHECK-LABEL: .Lfunc_end0: + +; UNIQ: .section .llvm_bb_addr_map,"o",@llvm_bb_addr_map,.text._Z3bazb +;; Verify that with -unique-section-names=false, the unique id of the text section gets assigned to the llvm_bb_addr_map section. +; NOUNIQ: .section .llvm_bb_addr_map,"o",@llvm_bb_addr_map,.text,unique,1 +; CHECK-NEXT: .quad .Lfunc_begin0 +; CHECK-NEXT: .byte 4 +; CHECK-NEXT: .uleb128 .Lfunc_begin0-.Lfunc_begin0 +; CHECK-NEXT: .uleb128 .LBB_END0_0-.Lfunc_begin0 +; CHECK-NEXT: .byte 0 +; CHECK-NEXT: .uleb128 .LBB0_1-.Lfunc_begin0 +; CHECK-NEXT: .uleb128 .LBB_END0_1-.LBB0_1 +; CHECK-NEXT: .byte 0 +; CHECK-NEXT: .uleb128 .LBB0_2-.Lfunc_begin0 +; CHECK-NEXT: .uleb128 .LBB_END0_2-.LBB0_2 +; CHECK-NEXT: .byte 1 +; CHECK-NEXT: .uleb128 .LBB0_3-.Lfunc_begin0 +; CHECK-NEXT: .uleb128 .LBB_END0_3-.LBB0_3 +; CHECK-NEXT: .byte 5