1--- 2TpiStream: 3 Records: 4 # int* [Index: 0x1000] 5 - Kind: LF_POINTER 6 Pointer: 7 ReferentType: 116 # int 8 Attrs: 32778 9 # const int* [Index: 0x1001] 10 - Kind: LF_MODIFIER 11 Modifier: 12 ModifiedType: 0x1000 13 Modifiers: [ Const ] 14 # char* [Index: 0x1002] 15 - Kind: LF_POINTER 16 Pointer: 17 ReferentType: 1136 # char* 18 Attrs: 32778 19 # (int, char **) [Index: 0x1003] 20 - Kind: LF_ARGLIST 21 ArgList: 22 ArgIndicies: [ 116, 0x1002 ] 23 # (int, double) [Index: 0x1004] 24 - Kind: LF_ARGLIST 25 ArgList: 26 ArgIndicies: [ 116, 65 ] # (int, double) 27 # int main(int argc, char **argv) [Index: 0x1005] 28 - Kind: LF_PROCEDURE 29 Procedure: 30 ReturnType: 117 # int 31 CallConv: NearC # __cdecl 32 Options: [ None ] 33 ParameterCount: 2 34 ArgumentList: 0x1003 # (int, char**) 35 # <label> [Index: 0x1006] 36 - Kind: LF_LABEL 37 Label: 38 Mode: Near 39 # <forward decl> 40 # class FooClass; [Index: 0x1007] 41 - Kind: LF_STRUCTURE 42 Class: 43 MemberCount: 0 44 Options: [ None, ForwardReference ] 45 FieldList: 0 46 Name: 'FooClass' 47 DerivationList: 0 48 VTableShape: 0 49 Size: 0 50 # char* [Index: 0x1008] 51 - Kind: LF_POINTER 52 Pointer: 53 ReferentType: 0x1007 # FooClass 54 Attrs: 33802 # const 55 # int (FooClass::)(int, char **) [Index: 0x1009] 56 - Kind: LF_MFUNCTION 57 MemberFunction: 58 ReturnType: 116 # int 59 ClassType: 0x1007 # FooClass 60 ThisType: 0x1008 # const FooClass* 61 CallConv: ThisCall 62 Options: [ None ] 63 ParameterCount: 2 64 ArgumentList: 0x1003 # (int, char**) 65 ThisPointerAdjustment: 0 66 # int (FooClass::)(int, double) [Index: 0x100A] 67 - Kind: LF_MFUNCTION 68 MemberFunction: 69 ReturnType: 116 # int 70 ClassType: 0x1007 # FooClass 71 ThisType: 0x1008 # const FooClass* 72 CallConv: ThisCall 73 Options: [ None ] 74 ParameterCount: 2 75 ArgumentList: 0x1004 # (int, double) 76 ThisPointerAdjustment: 0 77 # <method overload list> 78 # int (FooClass::)(int, char **) 79 # int (FooClass::)(int, double) [Index: 0x100B] 80 - Kind: LF_METHODLIST 81 MethodOverloadList: 82 Methods: 83 - Type: 0x1009 # int (FooClass::)(int, char **) 84 Attrs: 3 # public 85 VFTableOffset: -1 86 Name: '' 87 - Type: 0x100A # int (FooClass::)(int, double) 88 Attrs: 3 # public 89 VFTableOffset: -1 90 Name: '' 91 # <Field List> 92 # A, B, C [Index: 0x100C] 93 - Kind: LF_FIELDLIST 94 FieldList: 95 - Kind: LF_ENUMERATE 96 Enumerator: 97 Attrs: 3 98 Value: 0 99 Name: A 100 - Kind: LF_ENUMERATE 101 Enumerator: 102 Attrs: 3 103 Value: 1 104 Name: B 105 - Kind: LF_ENUMERATE 106 Enumerator: 107 Attrs: 3 108 Value: 2 109 Name: C 110 # enum FooClass::Enum : uint32_t { 111 # A, B, C 112 # }; [Index: 0x100D] 113 - Kind: LF_ENUM 114 Enum: 115 NumEnumerators: 3 116 Options: [ None, Nested ] 117 FieldList: 0x100C 118 Name: 'FooClass::Enum' 119 UnderlyingType: 117 120 # <Field List> 121 # public: 122 # enum FooEnum : uint32_t { 123 # A, B, C 124 # }; 125 # FooEnum EnumMember; 126 # static int StaticInt; 127 # int FooClass::OverloadedMethod(int, char **); 128 # int FooClass::OverloadedMethod(int, double); 129 # int FooClass::RegularMethod(int, double); 130 # [Index: 0x100E] 131 - Kind: LF_FIELDLIST 132 FieldList: 133 # enum FooEnum : uint32_t { 134 # A, B, C 135 # }; 136 - Kind: LF_NESTTYPE 137 NestedType: 138 Type: 0x100D 139 Name: FooEnum 140 # FooEnum EnumMember; 141 - Kind: LF_MEMBER 142 DataMember: 143 Attrs: 3 # public 144 Type: 0x100D # void* 145 FieldOffset: 0 146 Name: EnumMember 147 # static int StaticInt; 148 - Kind: LF_STMEMBER 149 StaticDataMember: 150 Attrs: 3 # public 151 Type: 116 # int 152 Name: StaticInt 153 # int FooClass::OverloadedMethod(int, char **); 154 # int FooClass::OverloadedMethod(int, double); 155 - Kind: LF_METHOD 156 OverloadedMethod: 157 NumOverloads: 2 158 MethodList: 0x100B 159 Name: OverloadedMethod 160 # int FooClass::RegularMethod(int, double); 161 - Kind: LF_ONEMETHOD 162 OneMethod: 163 Type: 0x100A 164 Attrs: 3 # public 165 VFTableOffset: -1 166 Name: RegularMethod 167 # class FooClass { 168 # public: 169 # enum FooEnum : uint32_t { 170 # A, B, C 171 # }; 172 # FooEnum EnumMember; 173 # static int StaticInt; 174 # int FooClass::OverloadedMethod(int, char **); 175 # int FooClass::OverloadedMethod(int, double); 176 # int FooClass::RegularMethod(int, double); 177 # }; [Index: 0x100F] 178 - Kind: LF_CLASS 179 Class: 180 MemberCount: 6 181 Options: [ None ] 182 FieldList: 0x100E 183 Name: 'FooClass' 184 DerivationList: 0 185 VTableShape: 0 186 Size: 4 187 # struct FooStructure; [Index: 0x1010] 188 - Kind: LF_STRUCTURE 189 Class: 190 MemberCount: 6 191 Options: [ None ] 192 FieldList: 0x100E 193 Name: 'FooStructure' 194 DerivationList: 0 195 VTableShape: 0 196 Size: 4 197 # interface FooInterface; [Index: 0x1011] 198 - Kind: LF_INTERFACE 199 Class: 200 MemberCount: 6 201 Options: [ None ] 202 FieldList: 0x100E 203 Name: 'FooInterface' 204 DerivationList: 0 205 VTableShape: 0 206 Size: 4 207 # <field list> 208 # : public FooClass [Index: 0x1012] 209 - Kind: LF_FIELDLIST 210 FieldList: 211 - Kind: LF_BCLASS 212 Attrs: 3 # public 213 Type: 0x100F # FooClass 214 Offset: 0 215 # <field list> 216 # : public virtual FooClass [Index: 0x1013] 217 - Kind: LF_FIELDLIST 218 FieldList: 219 - Kind: LF_VBCLASS 220 Attrs: 3 # public 221 BaseType: 0x100F # FooClass 222 VBPtrType: 0x1001 # const int * 223 VBPtrOffset: 0 224 VTableIndex: 1 225 # struct Inherit : public FooClass {}; [Index: 0x1014] 226 - Kind: LF_STRUCTURE 227 Class: 228 MemberCount: 1 229 Options: [ None ] 230 FieldList: 0x100E 231 Name: 'Inherit' 232 DerivationList: 0x1012 233 VTableShape: 0 234 Size: 4 235 # class VInherit : public virtual FooClass {}; [Index: 0x1015] 236 - Kind: LF_STRUCTURE 237 Class: 238 MemberCount: 1 239 Options: [ None ] 240 FieldList: 0x100E 241 Name: 'Inherit' 242 DerivationList: 0x1012 243 VTableShape: 0 244 Size: 4 245 # const volatile enum FooClass::Enum : uint32_t { [Index: 0x1016] 246 - Kind: LF_MODIFIER 247 Modifier: 248 ModifiedType: 0x100D 249 Modifiers: [ Const, Volatile ] 250 # const volatile struct Inherit : public FooClass {} { [Index: 0x1017] 251 - Kind: LF_MODIFIER 252 Modifier: 253 ModifiedType: 0x1014 254 Modifiers: [ Const, Volatile ] 255 # const volatile class FooClass { [Index: 0x1018] 256 - Kind: LF_MODIFIER 257 Modifier: 258 ModifiedType: 0x100F 259 Modifiers: [ Const, Volatile ] 260 # const volatile interface FooInterface { [Index: 0x1019] 261 - Kind: LF_MODIFIER 262 Modifier: 263 ModifiedType: 0x1011 264 Modifiers: [ Const, Volatile ] 265 266# // Member type records. These are generally not length prefixed, and appear 267# // inside of a field list record. 268# MEMBER_RECORD(LF_VFUNCTAB, 0x1409, VFPtr) 269 270# MEMBER_RECORD_ALIAS(LF_BINTERFACE, 0x151a, BaseInterface, BaseClass) 271 272# MEMBER_RECORD_ALIAS(LF_IVBCLASS, 0x1402, IndirectVirtualBaseClass, 273# VirtualBaseClass) 274 275 276# TYPE_RECORD(LF_ARRAY, 0x1503, Array) 277# TYPE_RECORD(LF_UNION, 0x1506, Union) 278# TYPE_RECORD(LF_TYPESERVER2, 0x1515, TypeServer2) 279# TYPE_RECORD(LF_VFTABLE, 0x151d, VFTable) 280# TYPE_RECORD(LF_VTSHAPE, 0x000a, VFTableShape) 281 282# TYPE_RECORD(LF_BITFIELD, 0x1205, BitField) 283 284 285# // ID leaf records. Subsequent leaf types may be referenced from .debug$S. 286# TYPE_RECORD(LF_FUNC_ID, 0x1601, FuncId) 287# TYPE_RECORD(LF_MFUNC_ID, 0x1602, MemberFuncId) 288# TYPE_RECORD(LF_BUILDINFO, 0x1603, BuildInfo) 289# TYPE_RECORD(LF_SUBSTR_LIST, 0x1604, StringList) 290# TYPE_RECORD(LF_STRING_ID, 0x1605, StringId) 291# TYPE_RECORD(LF_UDT_SRC_LINE, 0x1606, UdtSourceLine) 292# TYPE_RECORD(LF_UDT_MOD_SRC_LINE, 0x1607, UdtModSourceLine) 293