2604 – DW_TAG_module and GDB

D issues are now tracked on GitHub. This Bugzilla instance remains as a read-only archive.
Issue 2604 - DW_TAG_module and GDB
Summary: DW_TAG_module and GDB
Status: RESOLVED FIXED
Alias: None
Product: D
Classification: Unclassified
Component: dmd (show other issues)
Version: D1 (retired)
Hardware: x86 Linux
: P2 normal
Assignee: No Owner
URL:
Keywords:
Depends on:
Blocks: 3207
Show dependency tree / graph
Reported: 2009年01月22日 17:05 UTC by Mihail Zenkov
Modified: 2014年02月24日 15:33 UTC (History)
1 user (show)

See Also:


Attachments
Add an attachment (proposed patch, testcase, etc.)

Note You need to log in before you can comment on or make changes to this issue.
Description Mihail Zenkov 2009年01月22日 17:05:51 UTC
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 Jason House 2009年01月22日 20:04:09 UTC
(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 Mihail Zenkov 2009年01月23日 19:07:12 UTC
>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 Jason House 2009年01月23日 19:33:41 UTC
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 Walter Bright 2009年08月07日 16:26:51 UTC
I plan on simply removing the DW_TAG_module tag, as it seems to cause problems in GDB.
Comment 5 Walter Bright 2009年09月03日 13:24:42 UTC
Fixed dmd 1.047 and 2.032


AltStyle によって変換されたページ (->オリジナル) /