blob: 8f23e8ad5e894966011885e7bd2844d55cfd8ca4 [file] [log] [blame]
---
TpiStream:
Records:
# int* [Index: 0x1000]
- Kind: LF_POINTER
Pointer:
ReferentType: 116 # int
Attrs: 32778
# const int* [Index: 0x1001]
- Kind: LF_MODIFIER
Modifier:
ModifiedType: 0x1000
Modifiers: [ Const ]
# char* [Index: 0x1002]
- Kind: LF_POINTER
Pointer:
ReferentType: 1136 # char*
Attrs: 32778
# (int, char **) [Index: 0x1003]
- Kind: LF_ARGLIST
ArgList:
ArgIndicies: [ 116, 0x1002 ]
# (int, double) [Index: 0x1004]
- Kind: LF_ARGLIST
ArgList:
ArgIndicies: [ 116, 65 ] # (int, double)
# int main(int argc, char **argv) [Index: 0x1005]
- Kind: LF_PROCEDURE
Procedure:
ReturnType: 117 # int
CallConv: NearC # __cdecl
Options: [ None ]
ParameterCount: 2
ArgumentList: 0x1003 # (int, char**)
# <label> [Index: 0x1006]
- Kind: LF_LABEL
Label:
Mode: Near
# <forward decl>
# class FooClass; [Index: 0x1007]
- Kind: LF_STRUCTURE
Class:
MemberCount: 0
Options: [ None, ForwardReference ]
FieldList: 0
Name: 'FooClass'
DerivationList: 0
VTableShape: 0
Size: 0
# char* [Index: 0x1008]
- Kind: LF_POINTER
Pointer:
ReferentType: 0x1007 # FooClass
Attrs: 33802 # const
# int (FooClass::)(int, char **) [Index: 0x1009]
- Kind: LF_MFUNCTION
MemberFunction:
ReturnType: 116 # int
ClassType: 0x1007 # FooClass
ThisType: 0x1008 # const FooClass*
CallConv: ThisCall
Options: [ None ]
ParameterCount: 2
ArgumentList: 0x1003 # (int, char**)
ThisPointerAdjustment: 0
# int (FooClass::)(int, double) [Index: 0x100A]
- Kind: LF_MFUNCTION
MemberFunction:
ReturnType: 116 # int
ClassType: 0x1007 # FooClass
ThisType: 0x1008 # const FooClass*
CallConv: ThisCall
Options: [ None ]
ParameterCount: 2
ArgumentList: 0x1004 # (int, double)
ThisPointerAdjustment: 0
# <method overload list>
# int (FooClass::)(int, char **)
# int (FooClass::)(int, double) [Index: 0x100B]
- Kind: LF_METHODLIST
MethodOverloadList:
Methods:
- Type: 0x1009 # int (FooClass::)(int, char **)
Attrs: 3 # public
VFTableOffset: -1
Name: ''
- Type: 0x100A # int (FooClass::)(int, double)
Attrs: 3 # public
VFTableOffset: -1
Name: ''
# <Field List>
# A, B, C [Index: 0x100C]
- Kind: LF_FIELDLIST
FieldList:
- Kind: LF_ENUMERATE
Enumerator:
Attrs: 3
Value: 0
Name: A
- Kind: LF_ENUMERATE
Enumerator:
Attrs: 3
Value: 1
Name: B
- Kind: LF_ENUMERATE
Enumerator:
Attrs: 3
Value: 2
Name: C
# enum FooClass::Enum : uint32_t {
# A, B, C
# }; [Index: 0x100D]
- Kind: LF_ENUM
Enum:
NumEnumerators: 3
Options: [ None, Nested ]
FieldList: 0x100C
Name: 'FooClass::Enum'
UnderlyingType: 117
# <Field List>
# public:
# enum FooEnum : uint32_t {
# A, B, C
# };
# FooEnum EnumMember;
# static int StaticInt;
# int FooClass::OverloadedMethod(int, char **);
# int FooClass::OverloadedMethod(int, double);
# int FooClass::RegularMethod(int, double);
# [Index: 0x100E]
- Kind: LF_FIELDLIST
FieldList:
# enum FooEnum : uint32_t {
# A, B, C
# };
- Kind: LF_NESTTYPE
NestedType:
Type: 0x100D
Name: FooEnum
# FooEnum EnumMember;
- Kind: LF_MEMBER
DataMember:
Attrs: 3 # public
Type: 0x100D # void*
FieldOffset: 0
Name: EnumMember
# static int StaticInt;
- Kind: LF_STMEMBER
StaticDataMember:
Attrs: 3 # public
Type: 116 # int
Name: StaticInt
# int FooClass::OverloadedMethod(int, char **);
# int FooClass::OverloadedMethod(int, double);
- Kind: LF_METHOD
OverloadedMethod:
NumOverloads: 2
MethodList: 0x100B
Name: OverloadedMethod
# int FooClass::RegularMethod(int, double);
- Kind: LF_ONEMETHOD
OneMethod:
Type: 0x100A
Attrs: 3 # public
VFTableOffset: -1
Name: RegularMethod
# class FooClass {
# public:
# enum FooEnum : uint32_t {
# A, B, C
# };
# FooEnum EnumMember;
# static int StaticInt;
# int FooClass::OverloadedMethod(int, char **);
# int FooClass::OverloadedMethod(int, double);
# int FooClass::RegularMethod(int, double);
# }; [Index: 0x100F]
- Kind: LF_CLASS
Class:
MemberCount: 6
Options: [ None ]
FieldList: 0x100E
Name: 'FooClass'
DerivationList: 0
VTableShape: 0
Size: 4
# struct FooStructure; [Index: 0x1010]
- Kind: LF_STRUCTURE
Class:
MemberCount: 6
Options: [ None ]
FieldList: 0x100E
Name: 'FooStructure'
DerivationList: 0
VTableShape: 0
Size: 4
# interface FooInterface; [Index: 0x1011]
- Kind: LF_INTERFACE
Class:
MemberCount: 6
Options: [ None ]
FieldList: 0x100E
Name: 'FooInterface'
DerivationList: 0
VTableShape: 0
Size: 4
# <field list>
# : public FooClass [Index: 0x1012]
- Kind: LF_FIELDLIST
FieldList:
- Kind: LF_BCLASS
Attrs: 3 # public
Type: 0x100F # FooClass
Offset: 0
# <field list>
# : public virtual FooClass [Index: 0x1013]
- Kind: LF_FIELDLIST
FieldList:
- Kind: LF_VBCLASS
Attrs: 3 # public
BaseType: 0x100F # FooClass
VBPtrType: 0x1001 # const int *
VBPtrOffset: 0
VTableIndex: 1
# class Inherit : public FooClass {}; [Index: 0x1014]
- Kind: LF_STRUCTURE
Class:
MemberCount: 1
Options: [ None ]
FieldList: 0x100E
Name: 'Inherit'
DerivationList: 0x1012
VTableShape: 0
Size: 4
# class VInherit : public virtual FooClass {}; [Index: 0x1015]
- Kind: LF_STRUCTURE
Class:
MemberCount: 1
Options: [ None ]
FieldList: 0x100E
Name: 'Inherit'
DerivationList: 0x1012
VTableShape: 0
Size: 4
# // Member type records. These are generally not length prefixed, and appear
# // inside of a field list record.
# MEMBER_RECORD(LF_VFUNCTAB, 0x1409, VFPtr)
# MEMBER_RECORD_ALIAS(LF_BINTERFACE, 0x151a, BaseInterface, BaseClass)
# MEMBER_RECORD_ALIAS(LF_IVBCLASS, 0x1402, IndirectVirtualBaseClass,
# VirtualBaseClass)
# TYPE_RECORD(LF_ARRAY, 0x1503, Array)
# TYPE_RECORD(LF_UNION, 0x1506, Union)
# TYPE_RECORD(LF_TYPESERVER2, 0x1515, TypeServer2)
# TYPE_RECORD(LF_VFTABLE, 0x151d, VFTable)
# TYPE_RECORD(LF_VTSHAPE, 0x000a, VFTableShape)
# TYPE_RECORD(LF_BITFIELD, 0x1205, BitField)
# // ID leaf records. Subsequent leaf types may be referenced from .debug$S.
# TYPE_RECORD(LF_FUNC_ID, 0x1601, FuncId)
# TYPE_RECORD(LF_MFUNC_ID, 0x1602, MemberFuncId)
# TYPE_RECORD(LF_BUILDINFO, 0x1603, BuildInfo)
# TYPE_RECORD(LF_SUBSTR_LIST, 0x1604, StringList)
# TYPE_RECORD(LF_STRING_ID, 0x1605, StringId)
# TYPE_RECORD(LF_UDT_SRC_LINE, 0x1606, UdtSourceLine)
# TYPE_RECORD(LF_UDT_MOD_SRC_LINE, 0x1607, UdtModSourceLine)