mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-27 00:15:58 +00:00
DebugInfo: Implement relative addressing for DW_AT_ranges under fission
This removes the debug_ranges relocations from debug_info.dwo (but doesn't implement the DW_AT_GNU_ranges_base which is also necessary for correct functioning) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204668 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
05e62b507a
commit
f4ec1889db
@ -456,8 +456,15 @@ void DwarfDebug::addScopeRangeList(DwarfCompileUnit *TheCU, DIE *ScopeDIE,
|
||||
// Emit offset in .debug_range as a relocatable label. emitDIE will handle
|
||||
// emitting it appropriately.
|
||||
MCSymbol *RangeSym = Asm->GetTempSymbol("debug_ranges", GlobalRangeCount++);
|
||||
addSectionLabel(Asm, TheCU, ScopeDIE, dwarf::DW_AT_ranges, RangeSym,
|
||||
DwarfDebugRangeSectionSym);
|
||||
|
||||
// Under fission, ranges are specified by constant offsets relative to the
|
||||
// CU's DW_AT_GNU_ranges_base.
|
||||
if (useSplitDwarf())
|
||||
TheCU->addSectionDelta(ScopeDIE, dwarf::DW_AT_ranges, RangeSym,
|
||||
DwarfDebugRangeSectionSym);
|
||||
else
|
||||
addSectionLabel(Asm, TheCU, ScopeDIE, dwarf::DW_AT_ranges, RangeSym,
|
||||
DwarfDebugRangeSectionSym);
|
||||
|
||||
RangeSpanList List(RangeSym);
|
||||
for (const InsnRange &R : Range) {
|
||||
|
@ -1,5 +1,14 @@
|
||||
; RUN: llc -split-dwarf=Enable -O0 %s -mtriple=x86_64-unknown-linux-gnu -filetype=obj -o %t
|
||||
; RUN: llvm-dwarfdump -debug-dump=all %t | FileCheck %s
|
||||
; RUN: llvm-dwarfdump -debug-dump=info.dwo %t | FileCheck %s
|
||||
; RUN: llvm-objdump -r %t | FileCheck --check-prefix=RELA %s
|
||||
|
||||
; CHECK: DW_AT_ranges [DW_FORM_sec_offset] (0x000000a0)
|
||||
|
||||
; Make sure we don't produce any relocations in any .dwo section (though in particular, debug_info.dwo)
|
||||
; FIXME: There should be no relocations in .dwo sections at all, but for now there are debug_loc relocs here.
|
||||
; RELA: RELOCATION RECORDS FOR [.rela.debug_info.dwo]
|
||||
; RELA-NOT: R_X86_64_32 .debug_ranges
|
||||
; RELA: RELOCATION RECORDS FOR
|
||||
|
||||
; From the code:
|
||||
|
||||
@ -29,8 +38,6 @@
|
||||
|
||||
; clang -g -S -gsplit-dwarf -O1 small.c
|
||||
|
||||
; CHECK: DW_AT_ranges
|
||||
|
||||
@c = external global i32
|
||||
|
||||
; Function Attrs: nounwind uwtable
|
||||
|
Loading…
x
Reference in New Issue
Block a user