The dmd backend should generate .pdb files for visual studio.

kinke noone at nowhere.com
Sun Feb 21 00:42:46 UTC 2021


On Sunday, 21 February 2021 at 00:21:06 UTC, 12345swordy wrote:
> Have you ever tried to diagnose the pdb file? I did. It doesn't 
> contain any information regarding any types. That's the issue 
> here.

I actually have a while back while trying to improve LDC's 
CodeView output (for the object files, which is then bundled to a 
.pdb by the linker).
For my little dummy example, I get this:

llvm-pdbutil.exe dump --type-stats current.pdb

                      Type Record Stats
============================================================

   Types
              Total:   11697 entries (     560,936 bytes,   47.96 
avg)
   
--------------------------------------------------------------------------
       LF_FIELDLIST:     877 entries (     197,188 bytes,  224.84 
avg)
           LF_CLASS:     643 entries (      95,280 bytes,  148.18 
avg)
       LF_MFUNCTION:    2954 entries (      82,712 bytes,   28.00 
avg)
       LF_STRUCTURE:     783 entries (      70,584 bytes,   90.15 
avg)
         LF_ARGLIST:    1736 entries (      30,104 bytes,   17.34 
avg)
         LF_POINTER:    2110 entries (      25,320 bytes,   12.00 
avg)
       LF_PROCEDURE:    1179 entries (      18,864 bytes,   16.00 
avg)
            LF_ENUM:     184 entries (      17,932 bytes,   97.46 
avg)
      LF_METHODLIST:     410 entries (      10,264 bytes,   25.03 
avg)
        LF_MODIFIER:     430 entries (       5,160 bytes,   12.00 
avg)
           LF_ARRAY:     250 entries (       4,000 bytes,   16.00 
avg)
           LF_UNION:      41 entries (       2,320 bytes,   56.59 
avg)
        LF_BITFIELD:      88 entries (       1,056 bytes,   12.00 
avg)
         LF_VTSHAPE:      12 entries (         152 bytes,   12.67 
avg)

And `llvm-pdbutil dump --types` does include my little E enum 
with its 3 values, the S struct with its 2 fields...

    0x1000 | LF_FIELDLIST [size = 28]
             - LF_ENUMERATE [a = 0]
             - LF_ENUMERATE [b = 1]
             - LF_ENUMERATE [c = 2]
    0x1001 | LF_ENUM [size = 28] `current.E`
             field list: 0x1000, underlying type: 0x0074 (int)
             options:
...
    0x1006 | LF_FIELDLIST [size = 32]
             - LF_MEMBER [name = `e`, Type = 0x1004, offset = 0, 
attrs = public]
             - LF_MEMBER [name = `arr`, Type = 0x1005, offset = 4, 
attrs = public]
    0x1007 | LF_STRUCTURE [size = 32] `current.S`
             vtable: <no type>, base list: <no type>, field list: 
0x1006
             options: , sizeof 12
...


More information about the Digitalmars-d mailing list