Dwarf Error: Cannot find DIE at 0x191d5 referenced from DIE at 0x1e9ab
Denis Feklushkin
feklushkin.denis at gmail.com
Sun Oct 11 04:46:45 UTC 2020
Hi!
I compile in C and D sources by clang-11, ldc2
(1.24.0-git-e8f331c), LLD 11.0.0 into one Cortex M3 static
binary. And looks like it produces binary with broken debug info.
When I start this binary and connect to it by GDB at some debug
step it calls D symbol from initial C code. Then GDB immediately
says:
Dwarf Error: Cannot find DIE at 0x191d5 referenced from DIE at
0x1e9ab [in module
/home/denizzz/Dev/d_c_arm_test/builddir/firmware.elf]
Dwarf Error: Cannot find DIE at 0x191d5 referenced from DIE at
0x1e9ab [in module
/home/denizzz/Dev/d_c_arm_test/builddir/firmware.elf]
and debugging session stalls (but execution flow works ok)
I unsucessfully tried to find what is going wrong by
llvm-dwarfdump:
llvm-dwarfdump --verify firmware.elf
Verifying firmware.elf: file format elf32-littlearm
Verifying .debug_abbrev...
Verifying .debug_info Unit Header Chain...
(here is llvm-dwarfdump goes into infinity loop and eats 100% CPU)
llvm-dwarfdump --all firmware.elf shows:
[...]
0x0001e9ab: DW_TAG_inlined_subroutine
DW_AT_abstract_origin (0x000191d5)
DW_AT_low_pc (0x0000000021025ba6)
DW_AT_high_pc (0x0000000021025bbe)
DW_AT_call_file ("/home/denizzz/Dev/d_c_arm_test/builddir/../subprojects/druntime/src/gc/bits.d")
DW_AT_call_line (1965)
DW_AT_call_column (0x0d)
[...]
191d5 value in llvm-dwarfdump output actually can be found only
in "DW_AT_abstract_origin (0x000191d5)" form.
DW_AT_call_line 1965 in druntime/src/gc/bits.d is missing, this
file contains only 484 lines.
Tell me what else can I do to investigate this issue?
More information about the digitalmars-d-ldc
mailing list