[Issue 18984] Debugging stack struct's which are returned causes incorrect debuginfo.

d-bugmail at puremagic.com d-bugmail at puremagic.com
Fri Jun 15 06:53:15 UTC 2018


https://issues.dlang.org/show_bug.cgi?id=18984

Rainer Schuetze <r.sagitario at gmx.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |r.sagitario at gmx.de
          Component|visuald                     |dmd

--- Comment #1 from Rainer Schuetze <r.sagitario at gmx.de> ---
To be pedantic, this is an issue with dmd generated debug info. This is a
simpler test case:

struct S
{
        int a;
        int b;
        int c;
}

S foo()
{
        S s = S(1, 2, 3);
        s.a = 4; // break here, s shows junk, __HID1 has the expected values
        return s;
}

void main()
{
        S s = foo();
}

Here's the relevant snippet for x64 from the debug info as dumped by cvdump:

(00004C) S_GPROC32: [0000:00000000], Cb: 00000042, Type: 0x1006, rvo.foo
         Parent: 00000000, End: 00000000, Next: 00000000
         Debug start: 0000000E, Debug end: 0000003B

(00007B)  S_REGREL32: rbp+00000010, Type:             0x1007, __HID1
(000090)  S_ENDARG
(000094)  S_REGREL32: rbp+FFFFFFE0, Type:             0x1004, s

(0000A4) S_END

Happens with OMF aswell, LDC doesn't generate any information for locals.

--


More information about the Digitalmars-d-bugs mailing list