mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
DebugInfo: Temporarily work around -gsplit-dwarf + LTO .debug_gnu_pubnames regression after D94976
`-flto -gsplit-dwarf -g -O[123]` may create .debug_gnu_pubnames with 0 DIE offset entries. llvm-dwarfdump -debug-gnu-pubnames/ld.lld --gdb-index errors for that. ``` .section .debug_gnu_pubnames,"",@progbits .long .LpubNames_end2-.LpubNames_begin2 # Length of Public Names Info .LpubNames_begin2: .short 2 # DWARF Version .long .Lcu_begin2 # Offset of Compilation Unit Info .long 57 # Compilation Unit Length .long 0 # DIE offset .byte 16 # Attributes: TYPE, EXTERNAL .asciz "absl" # External Name .long 0 # DIE offset .byte 16 # Attributes: TYPE, EXTERNAL .asciz "absl::base_internal" # External Name .long 0 # End Mark ```
This commit is contained in:
parent
d42b6ae9c0
commit
5481fc6d44
@ -551,7 +551,9 @@ DIE *DwarfUnit::getOrCreateContextDIE(const DIScope *Context) {
|
||||
if (auto *SP = dyn_cast<DISubprogram>(Context)) {
|
||||
assert(SP->isDefinition());
|
||||
// When generating type units, each unit gets its own subprogram.
|
||||
if (DD->generateTypeUnits())
|
||||
// FIXME: constructSubprogramDefinitionDIE may produce .debug_gnu_pubnames
|
||||
// with 0 DIE Offset entries with split dwarf.
|
||||
if (DD->generateTypeUnits() || DD->useSplitDwarf())
|
||||
return getOrCreateSubprogramDIE(SP);
|
||||
|
||||
// Subprogram definitions should be created in the Unit that they specify,
|
||||
|
Loading…
x
Reference in New Issue
Block a user