Bug 2604 – DW_TAG_module and GDB

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D1 (retired)
Platform
x86
OS
Linux
Creation time
2009-01-22T17:05:00Z
Last change time
2014-02-24T15:33:06Z
Assigned to
nobody
Creator
mihail.zenkov
Blocks
3207

Comments

Comment #0 by mihail.zenkov — 2009-01-22T17:05:51Z
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?
Comment #1 by jason.james.house — 2009-01-22T20:04:09Z
(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?
Comment #2 by mihail.zenkov — 2009-01-23T19:07:12Z
>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]
Comment #3 by jason.james.house — 2009-01-23T19:33:41Z
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.
Comment #4 by bugzilla — 2009-08-07T16:26:51Z
I plan on simply removing the DW_TAG_module tag, as it seems to cause problems in GDB.
Comment #5 by bugzilla — 2009-09-03T13:24:42Z
Fixed dmd 1.047 and 2.032