I try fix GDB to support DMD 1.029 and greater. DMD set flag "has children" to DW_TAG_module and in this case GDB can't find DW_TAG_subprogram, as result we don't have psymbols. If i change flag to "no children" GDB load psymbols without problems. Is it bug DMD or GDB? Why DMD set this flag?
(In reply to comment #0) > I try fix GDB to support DMD 1.029 and greater. DMD set flag "has children" to > DW_TAG_module and in this case GDB can't find DW_TAG_subprogram, as result we > don't have psymbols. If i change flag to "no children" GDB load psymbols > without problems. Is it bug DMD or GDB? Why DMD set this flag? For those of us waiting for this bug to get fixed, is there any relatively easy thing we can do to get gdb to work?
>For those of us waiting for this bug to get fixed, is there any relatively easy >thing we can do to get gdb to work? 1. Use GDC or DMD-1.028. Currently DMD specific DWARF extensions not supported. http://www.digitalmars.com/d/1.0/abi.html 2. Try patch binary before debug it. For example we have binary crash_test. With next command we can see if DW_TAG_module have "has children" flag: objdump -W crash_test 2>/dev/null | grep DW_TAG_module <1><138>: Abbrev Number: 2 (DW_TAG_module) 2 DW_TAG_module [has children] Try patch it: sed "s/\x1e\x01\x03\x08/\x1e\x00\x03\x08/" -i crash_test And see again what we have: objdump -W crash_test 2>/dev/null | grep DW_TAG_module <1><138>: Abbrev Number: 2 (DW_TAG_module) 2 DW_TAG_module [no children]
I had hoped this would be a workaround for http://d.puremagic.com/issues/show_bug.cgi?id=2575 but alas, it does not :( For others trying the sed command, I think you need to use greedy replacement. (add a g between the last / and "). Without that, it did not fix all occurances of has children for me.
I plan on simply removing the DW_TAG_module tag, as it seems to cause problems in GDB.
Fixed dmd 1.047 and 2.032
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル