.equ CV_SIGNATURE_C13, 4 .equ T_VOID, 0x0003 .equ T_INT4, 0x0074 .equ LF_PROCEDURE, 0x1008 .equ LF_MFUNCTION, 0x1009 .equ LF_POINTER, 0x1002 .equ LF_ARGLIST, 0x1201 .equ LF_FIELDLIST, 0x1203 .equ LF_CLASS, 0x1504 .equ LF_ONEMETHOD, 0x1511 .equ LF_FUNC_ID, 0x1601 .equ LF_MFUNC_ID, 0x1602 .equ LF_BUILDINFO, 0x1603 .equ LF_SUBSTR_LIST, 0x1604 .equ LF_STRING_ID, 0x1605 .equ CV_PTR_64, 0xc .section ".debug$T", "rn" .long CV_SIGNATURE_C13 /* Type 1000, string "foo" */ .string1: .short .string2 - .string1 - 2 .short LF_STRING_ID .long 0 /* sub-string */ .asciz "foo" /* Type 1001, string "bar" */ .string2: .short .substrlist1 - .string2 - 2 .short LF_STRING_ID .long 0 /* sub-string */ .asciz "bar" /* Type 1002, substr list of "foo" and "bar" */ .substrlist1: .short .string3 - .substrlist1 - 2 .short LF_SUBSTR_LIST .long 2 /* count */ .long 0x1000 .long 0x1001 /* Type 1003, string "baz" referencing substr list 1002 */ .string3: .short .string4 - .string3 - 2 .short LF_STRING_ID .long 0x1002 .asciz "baz" /* Type 1004, string "/tmp" (build directory) */ .string4: .short .string5 - .string4 - 2 .short LF_STRING_ID .long 0 /* sub-string */ .asciz "/tmp" .byte 0xf3 /* padding */ .byte 0xf2 /* padding */ .byte 0xf1 /* padding */ /* Type 1005, string "gcc" (compiler) */ .string5: .short .string6 - .string5 - 2 .short LF_STRING_ID .long 0 /* sub-string */ .asciz "gcc" /* Type 1006, string "tmp.c" (source file) */ .string6: .short .string7 - .string6 - 2 .short LF_STRING_ID .long 0 /* sub-string */ .asciz "tmp.c" .byte 0xf2 /* padding */ .byte 0xf1 /* padding */ /* Type 1007, string "tmp.pdb" (PDB file) */ .string7: .short .string8 - .string7 - 2 .short LF_STRING_ID .long 0 /* sub-string */ .asciz "tmp.pdb" /* Type 1008, string "-gcodeview" (command arguments) */ .string8: .short .buildinfo1 - .string8 - 2 .short LF_STRING_ID .long 0 /* sub-string */ .asciz "-gcodeview" .byte 0xf1 /* padding */ /* The 1009, build info */ .buildinfo1: .short .string9 - .buildinfo1 - 2 .short LF_BUILDINFO .short 5 /* count */ .long 0x1004 /* build directory */ .long 0x1005 /* compiler */ .long 0x1006 /* source file */ .long 0x1007 /* PDB file */ .long 0x1008 /* command arguments */ .byte 0xf2 /* padding */ .byte 0xf1 /* padding */ /* Type 100a, string "namespace" */ .string9: .short .arglist1 - .string9 - 2 .short LF_STRING_ID .long 0 /* sub-string */ .asciz "namespace" .byte 0xf2 /* padding */ .byte 0xf1 /* padding */ /* Type 100b, arg list of type T_INT4 */ .arglist1: .short .proc1 - .arglist1 - 2 .short LF_ARGLIST .long 1 /* no. entries */ .long T_INT4 /* Type 100c, procedure, return type T_VOID, arg list 100b */ .proc1: .short .func1 - .proc1 - 2 .short LF_PROCEDURE .long T_VOID .byte 0 /* calling convention */ .byte 0 /* attributes */ .short 1 /* no. parameters */ .long 0x100b /* Type 100d, function "func1" */ .func1: .short .func2 - .func1 - 2 .short LF_FUNC_ID .long 0 /* parent scope */ .long 0x100c /* type */ .asciz "func1" .byte 0xf2 /* padding */ .byte 0xf1 /* padding */ /* Type 100e, function "func2" within scope "namespace" */ .func2: .short .class1 - .func2 - 2 .short LF_FUNC_ID .long 0x100a /* parent scope */ .long 0x100c /* type */ .asciz "func2" .byte 0xf2 /* padding */ .byte 0xf1 /* padding */ /* Type 100f, forward declaration of class foo */ .class1: .short .ptr1 - .class1 - 2 .short LF_CLASS .short 0 /* no. members */ .short 0x80 /* property (has unique name, forward declaration) */ .long 0 /* field list */ .long 0 /* type derived from */ .long 0 /* type of vshape table */ .short 0 /* size */ .asciz "foo" /* name */ .byte 0xf2 /* padding */ .byte 0xf1 /* padding */ /* Type 1010, pointer to 100f */ .ptr1: .short .mfunction1 - .ptr1 - 2 .short LF_POINTER .long 0x100f .long (8 << 13) | CV_PTR_64 /* Type 1011, member function of 100f, return type void, arg list 100b */ .mfunction1: .short .fieldlist1 - .mfunction1 - 2 .short LF_MFUNCTION .long T_VOID .long 0x100f .long 0x1010 /* type of "this" pointer */ .byte 0 /* calling convention */ .byte 0 /* attributes */ .short 1 /* no. parameters */ .long 0x100b /* arg list */ .long 0 /* "this" adjustment */ /* Type 1012, field list for class foo */ .fieldlist1: .short .class2 - .fieldlist1 - 2 .short LF_FIELDLIST .short LF_ONEMETHOD .short 0 /* method attribute */ .long 0x1010 /* method type */ .asciz "method" .byte 0xf1 /* Type 1013, actual declaration of class foo */ .class2: .short .mfunc1 - .class2 - 2 .short LF_CLASS .short 0 /* no. members */ .short 0 /* property */ .long 0x1012 /* field list */ .long 0 /* type derived from */ .long 0 /* type of vshape table */ .short 0 /* size */ .asciz "foo" /* name */ .byte 0xf2 /* padding */ .byte 0xf1 /* padding */ /* Type 1014, function "method" within class "foo" */ .mfunc1: .short .types_end - .mfunc1 - 2 .short LF_MFUNC_ID .long 0x100f /* parent class */ .long 0x1011 /* function type */ .asciz "method" .byte 0xf1 /* padding */ .types_end: