forked from OSchip/llvm-project
DwarfDebug: Emit dwo_id+dwo_name for DICompileUnits that provide a dwoId.
For module debugging clang emits prefabricated skeleton compile units that can be recognized by a nonzero dwoId. llvm-svn: 247626
This commit is contained in:
parent
80faee82e6
commit
deef90d7f5
|
@ -459,6 +459,14 @@ DwarfDebug::constructDwarfCompileUnit(const DICompileUnit *DIUnit) {
|
|||
else
|
||||
NewCU.initSection(Asm->getObjFileLowering().getDwarfInfoSection());
|
||||
|
||||
// Module debugging: This is a prefabricated skeleton CU.
|
||||
if (DIUnit->getDWOId()) {
|
||||
NewCU.addUInt(Die, dwarf::DW_AT_GNU_dwo_id, dwarf::DW_FORM_data8,
|
||||
DIUnit->getDWOId());
|
||||
NewCU.addString(Die, dwarf::DW_AT_GNU_dwo_name,
|
||||
DIUnit->getSplitDebugFilename());
|
||||
}
|
||||
|
||||
CUMap.insert(std::make_pair(DIUnit, &NewCU));
|
||||
CUDieMap.insert(std::make_pair(&Die, &NewCU));
|
||||
return NewCU;
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
; RUN: %llc_dwarf %s -filetype=obj -o %t
|
||||
; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s
|
||||
; CHECK: DW_TAG_compile_unit
|
||||
; CHECK: DW_AT_GNU_dwo_id {{.*}}abcd
|
||||
; CHECK: DW_AT_GNU_dwo_name {{.*}}"my.dwo"
|
||||
|
||||
!llvm.dbg.cu = !{!0}
|
||||
!llvm.module.flags = !{!3, !4}
|
||||
|
||||
!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "LLVM", isOptimized: false, runtimeVersion: 2, splitDebugFilename: "my.dwo", emissionKind: 1, enums: !2, retainedTypes: !2, subprograms: !2, globals: !2, imports: !2, dwoId: 43981)
|
||||
!1 = !DIFile(filename: "<stdin>", directory: "/")
|
||||
!2 = !{}
|
||||
!3 = !{i32 2, !"Dwarf Version", i32 4}
|
||||
!4 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
|
Loading…
Reference in New Issue