forked from OSchip/llvm-project
Let .llvm_bb_addr_map section use the same unique id as its associated .text section.
Currently, `llvm_bb_addr_map` sections are generated per section names because we use the `LinkedToSymbol` argument of getELFSection. This will cause the address map tables of functions grouped into the same section when `-function-sections=true -unique-section-names=false` which is not the intended behaviour. This patch lets the unique id of every `.text` section propagate to the associated `.llvm_bb_addr_map` section. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D92113
This commit is contained in:
parent
54eab293f5
commit
e0bf234930
|
@ -1014,7 +1014,9 @@ MCObjectFileInfo::getBBAddrMapSection(const MCSection &TextSec) const {
|
|||
Flags |= ELF::SHF_GROUP;
|
||||
}
|
||||
|
||||
// Use the text section's begin symbol and unique ID to create a separate
|
||||
// .llvm_bb_addr_map section associated with every unique text section.
|
||||
return Ctx->getELFSection(".llvm_bb_addr_map", ELF::SHT_LLVM_BB_ADDR_MAP,
|
||||
Flags, 0, GroupName, MCSection::NonUniqueID,
|
||||
Flags, 0, GroupName, ElfSec.getUniqueID(),
|
||||
cast<MCSymbolELF>(TextSec.getBeginSymbol()));
|
||||
}
|
||||
|
|
|
@ -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,6 +29,8 @@ declare i32 @_Z3foov() #1
|
|||
|
||||
declare i32 @__gxx_personality_v0(...)
|
||||
|
||||
; 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:
|
||||
|
@ -39,7 +42,9 @@ declare i32 @__gxx_personality_v0(...)
|
|||
; CHECK-LABEL: .LBB_END0_3:
|
||||
; CHECK-LABEL: .Lfunc_end0:
|
||||
|
||||
; CHECK: .section .llvm_bb_addr_map,"o",@llvm_bb_addr_map,.text
|
||||
; 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
|
||||
|
|
Loading…
Reference in New Issue