1 //===-- CodeViewTypes.def
- All CodeView leaf types
-------------*- C
++ -*-===//
3 // Part of the LLVM Project
, under the Apache License v2.0 with LLVM Exceptions.
4 // See https
://llvm.org
/LICENSE.txt for license information.
5 // SPDX
-License
-Identifier
: Apache
-2.0 WITH LLVM
-exception
7 //===----------------------------------------------------------------------===//
9 // See LEAF_ENUM_e in cvinfo.h. This should match the constants there.
11 //===----------------------------------------------------------------------===//
13 // If the type is known
, then we have a record describing it in TypeRecord.h.
16 #define
CV_TYPE(lf_ename
, value
)
19 // If the type is known
, then we have a record describing it in TypeRecord.h.
21 #define
TYPE_RECORD(lf_ename
, value
, name
) CV_TYPE(lf_ename
, value
)
24 #ifndef TYPE_RECORD_ALIAS
25 #define
TYPE_RECORD_ALIAS(lf_ename
, value
, name
, alias_name
) \
26 TYPE_RECORD(lf_ename
, value
, name
)
30 #define
MEMBER_RECORD(lf_ename
, value
, name
) TYPE_RECORD(lf_ename
, value
, name
)
33 #ifndef MEMBER_RECORD_ALIAS
34 #define
MEMBER_RECORD_ALIAS(lf_ename
, value
, name
, alias_name
) \
35 MEMBER_RECORD(lf_ename
, value
, name
)
38 TYPE_RECORD(LF_POINTER
, 0x1002, Pointer
)
39 TYPE_RECORD(LF_MODIFIER
, 0x1001, Modifier
)
40 TYPE_RECORD(LF_PROCEDURE
, 0x1008, Procedure
)
41 TYPE_RECORD(LF_MFUNCTION
, 0x1009, MemberFunction
)
42 TYPE_RECORD(LF_LABEL
, 0x000e, Label
)
43 TYPE_RECORD(LF_ARGLIST
, 0x1201, ArgList
)
45 TYPE_RECORD(LF_FIELDLIST
, 0x1203, FieldList
)
47 TYPE_RECORD(LF_ARRAY
, 0x1503, Array
)
48 TYPE_RECORD(LF_CLASS
, 0x1504, Class
)
49 TYPE_RECORD_ALIAS(LF_STRUCTURE
, 0x1505, Struct
, Class
)
50 TYPE_RECORD_ALIAS(LF_INTERFACE
, 0x1519, Interface
, Class
)
51 TYPE_RECORD(LF_UNION
, 0x1506, Union
)
52 TYPE_RECORD(LF_ENUM
, 0x1507, Enum
)
53 TYPE_RECORD(LF_TYPESERVER2
, 0x1515, TypeServer2
)
54 TYPE_RECORD(LF_VFTABLE
, 0x151d, VFTable
)
55 TYPE_RECORD(LF_VTSHAPE
, 0x000a, VFTableShape
)
57 TYPE_RECORD(LF_BITFIELD
, 0x1205, BitField
)
59 // Member type records. These are generally not length prefixed
, and appear
60 // inside of a field list record.
61 MEMBER_RECORD(LF_BCLASS
, 0x1400, BaseClass
)
62 MEMBER_RECORD_ALIAS(LF_BINTERFACE
, 0x151a, BaseInterface
, BaseClass
)
64 MEMBER_RECORD(LF_VBCLASS
, 0x1401, VirtualBaseClass
)
65 MEMBER_RECORD_ALIAS(LF_IVBCLASS
, 0x1402, IndirectVirtualBaseClass
,
68 MEMBER_RECORD(LF_VFUNCTAB
, 0x1409, VFPtr
)
69 MEMBER_RECORD(LF_STMEMBER
, 0x150e, StaticDataMember
)
70 MEMBER_RECORD(LF_METHOD
, 0x150f, OverloadedMethod
)
71 MEMBER_RECORD(LF_MEMBER
, 0x150d, DataMember
)
72 MEMBER_RECORD(LF_NESTTYPE
, 0x1510, NestedType
)
73 MEMBER_RECORD(LF_ONEMETHOD
, 0x1511, OneMethod
)
74 MEMBER_RECORD(LF_ENUMERATE
, 0x1502, Enumerator
)
75 MEMBER_RECORD(LF_INDEX
, 0x1404, ListContinuation
)
77 // ID leaf records. Subsequent leaf types may be referenced from .debug$S.
78 TYPE_RECORD(LF_FUNC_ID
, 0x1601, FuncId
)
79 TYPE_RECORD(LF_MFUNC_ID
, 0x1602, MemberFuncId
)
80 TYPE_RECORD(LF_BUILDINFO
, 0x1603, BuildInfo
)
81 TYPE_RECORD(LF_SUBSTR_LIST
, 0x1604, StringList
)
82 TYPE_RECORD(LF_STRING_ID
, 0x1605, StringId
)
83 TYPE_RECORD(LF_UDT_SRC_LINE
, 0x1606, UdtSourceLine
)
84 TYPE_RECORD(LF_UDT_MOD_SRC_LINE
, 0x1607, UdtModSourceLine
)
87 TYPE_RECORD(LF_METHODLIST
, 0x1206, MethodOverloadList
)
89 TYPE_RECORD(LF_PRECOMP
, 0x1509, Precomp
)
90 TYPE_RECORD(LF_ENDPRECOMP
, 0x0014, EndPrecomp
)
92 // 16 bit type records.
93 CV_TYPE(LF_MODIFIER_16t
, 0x0001)
94 CV_TYPE(LF_POINTER_16t
, 0x0002)
95 CV_TYPE(LF_ARRAY_16t
, 0x0003)
96 CV_TYPE(LF_CLASS_16t
, 0x0004)
97 CV_TYPE(LF_STRUCTURE_16t
, 0x0005)
98 CV_TYPE(LF_UNION_16t
, 0x0006)
99 CV_TYPE(LF_ENUM_16t
, 0x0007)
100 CV_TYPE(LF_PROCEDURE_16t
, 0x0008)
101 CV_TYPE(LF_MFUNCTION_16t
, 0x0009)
102 CV_TYPE(LF_COBOL0_16t
, 0x000b)
103 CV_TYPE(LF_COBOL1
, 0x000c)
104 CV_TYPE(LF_BARRAY_16t
, 0x000d)
105 CV_TYPE(LF_NULLLEAF
, 0x000f) // LF_NULL
106 CV_TYPE(LF_NOTTRAN
, 0x0010)
107 CV_TYPE(LF_DIMARRAY_16t
, 0x0011)
108 CV_TYPE(LF_VFTPATH_16t
, 0x0012)
109 CV_TYPE(LF_PRECOMP_16t
, 0x0013)
110 CV_TYPE(LF_OEM_16t
, 0x0015)
111 CV_TYPE(LF_TYPESERVER_ST
, 0x0016)
113 CV_TYPE(LF_SKIP_16t
, 0x0200)
114 CV_TYPE(LF_ARGLIST_16t
, 0x0201)
115 CV_TYPE(LF_DEFARG_16t
, 0x0202)
116 CV_TYPE(LF_LIST
, 0x0203)
117 CV_TYPE(LF_FIELDLIST_16t
, 0x0204)
118 CV_TYPE(LF_DERIVED_16t
, 0x0205)
119 CV_TYPE(LF_BITFIELD_16t
, 0x0206)
120 CV_TYPE(LF_METHODLIST_16t
, 0x0207)
121 CV_TYPE(LF_DIMCONU_16t
, 0x0208)
122 CV_TYPE(LF_DIMCONLU_16t
, 0x0209)
123 CV_TYPE(LF_DIMVARU_16t
, 0x020a)
124 CV_TYPE(LF_DIMVARLU_16t
, 0x020b)
125 CV_TYPE(LF_REFSYM
, 0x020c)
127 // 16 bit member types. Generally not length prefixed.
128 CV_TYPE(LF_BCLASS_16t
, 0x0400)
129 CV_TYPE(LF_VBCLASS_16t
, 0x0401)
130 CV_TYPE(LF_IVBCLASS_16t
, 0x0402)
131 CV_TYPE(LF_ENUMERATE_ST
, 0x0403)
132 CV_TYPE(LF_FRIENDFCN_16t
, 0x0404)
133 CV_TYPE(LF_INDEX_16t
, 0x0405)
134 CV_TYPE(LF_MEMBER_16t
, 0x0406)
135 CV_TYPE(LF_STMEMBER_16t
, 0x0407)
136 CV_TYPE(LF_METHOD_16t
, 0x0408)
137 CV_TYPE(LF_NESTTYPE_16t
, 0x0409)
138 CV_TYPE(LF_VFUNCTAB_16t
, 0x040a)
139 CV_TYPE(LF_FRIENDCLS_16t
, 0x040b)
140 CV_TYPE(LF_ONEMETHOD_16t
, 0x040c)
141 CV_TYPE(LF_VFUNCOFF_16t
, 0x040d)
143 CV_TYPE(LF_TI16_MAX
, 0x1000)
145 CV_TYPE(LF_ARRAY_ST
, 0x1003)
146 CV_TYPE(LF_CLASS_ST
, 0x1004)
147 CV_TYPE(LF_STRUCTURE_ST
, 0x1005)
148 CV_TYPE(LF_UNION_ST
, 0x1006)
149 CV_TYPE(LF_ENUM_ST
, 0x1007)
150 CV_TYPE(LF_COBOL0
, 0x100a)
151 CV_TYPE(LF_BARRAY
, 0x100b)
152 CV_TYPE(LF_DIMARRAY_ST
, 0x100c)
153 CV_TYPE(LF_VFTPATH
, 0x100d)
154 CV_TYPE(LF_PRECOMP_ST
, 0x100e)
155 CV_TYPE(LF_OEM
, 0x100f)
156 CV_TYPE(LF_ALIAS_ST
, 0x1010)
157 CV_TYPE(LF_OEM2
, 0x1011)
159 CV_TYPE(LF_SKIP
, 0x1200)
160 CV_TYPE(LF_DEFARG_ST
, 0x1202)
161 CV_TYPE(LF_DERIVED
, 0x1204)
162 CV_TYPE(LF_DIMCONU
, 0x1207)
163 CV_TYPE(LF_DIMCONLU
, 0x1208)
164 CV_TYPE(LF_DIMVARU
, 0x1209)
165 CV_TYPE(LF_DIMVARLU
, 0x120a)
167 // Member type records. These are generally not length prefixed
, and appear
168 // inside of a field list record.
169 CV_TYPE(LF_FRIENDFCN_ST
, 0x1403)
170 CV_TYPE(LF_MEMBER_ST
, 0x1405)
171 CV_TYPE(LF_STMEMBER_ST
, 0x1406)
172 CV_TYPE(LF_METHOD_ST
, 0x1407)
173 CV_TYPE(LF_NESTTYPE_ST
, 0x1408)
174 CV_TYPE(LF_FRIENDCLS
, 0x140a)
175 CV_TYPE(LF_ONEMETHOD_ST
, 0x140b)
176 CV_TYPE(LF_VFUNCOFF
, 0x140c)
177 CV_TYPE(LF_NESTTYPEEX_ST
, 0x140d)
178 CV_TYPE(LF_MEMBERMODIFY_ST
, 0x140e)
179 CV_TYPE(LF_MANAGED_ST
, 0x140f)
181 CV_TYPE(LF_ST_MAX
, 0x1500)
182 CV_TYPE(LF_TYPESERVER
, 0x1501)
183 CV_TYPE(LF_DIMARRAY
, 0x1508)
184 CV_TYPE(LF_ALIAS
, 0x150a)
185 CV_TYPE(LF_DEFARG
, 0x150b)
186 CV_TYPE(LF_FRIENDFCN
, 0x150c)
187 CV_TYPE(LF_NESTTYPEEX
, 0x1512)
188 CV_TYPE(LF_MEMBERMODIFY
, 0x1513)
189 CV_TYPE(LF_MANAGED
, 0x1514)
190 CV_TYPE(LF_STRIDED_ARRAY
, 0x1516)
191 CV_TYPE(LF_HLSL
, 0x1517)
192 CV_TYPE(LF_MODIFIER_EX
, 0x1518)
193 CV_TYPE(LF_VECTOR
, 0x151b)
194 CV_TYPE(LF_MATRIX
, 0x151c)
196 // ID leaf records. Subsequent leaf types may be referenced from .debug$S.
198 // Numeric leaf types. These are generally contained in other records
, and not
199 // encountered in the main type stream.
201 CV_TYPE(LF_NUMERIC
, 0x8000)
202 CV_TYPE(LF_CHAR
, 0x8000)
203 CV_TYPE(LF_SHORT
, 0x8001)
204 CV_TYPE(LF_USHORT
, 0x8002)
205 CV_TYPE(LF_LONG
, 0x8003)
206 CV_TYPE(LF_ULONG
, 0x8004)
207 CV_TYPE(LF_REAL32
, 0x8005)
208 CV_TYPE(LF_REAL64
, 0x8006)
209 CV_TYPE(LF_REAL80
, 0x8007)
210 CV_TYPE(LF_REAL128
, 0x8008)
211 CV_TYPE(LF_QUADWORD
, 0x8009)
212 CV_TYPE(LF_UQUADWORD
, 0x800a)
213 CV_TYPE(LF_REAL48
, 0x800b)
214 CV_TYPE(LF_COMPLEX32
, 0x800c)
215 CV_TYPE(LF_COMPLEX64
, 0x800d)
216 CV_TYPE(LF_COMPLEX80
, 0x800e)
217 CV_TYPE(LF_COMPLEX128
, 0x800f)
218 CV_TYPE(LF_VARSTRING
, 0x8010)
219 CV_TYPE(LF_OCTWORD
, 0x8017)
220 CV_TYPE(LF_UOCTWORD
, 0x8018)
221 CV_TYPE(LF_DECIMAL
, 0x8019)
222 CV_TYPE(LF_DATE
, 0x801a)
223 CV_TYPE(LF_UTF8STRING
, 0x801b)
224 CV_TYPE(LF_REAL16
, 0x801c)
226 // Padding bytes. These are emitted into alignment bytes in the type stream.
228 CV_TYPE(LF_PAD0
, 0xf0)
229 CV_TYPE(LF_PAD1
, 0xf1)
230 CV_TYPE(LF_PAD2
, 0xf2)
231 CV_TYPE(LF_PAD3
, 0xf3)
232 CV_TYPE(LF_PAD4
, 0xf4)
233 CV_TYPE(LF_PAD5
, 0xf5)
234 CV_TYPE(LF_PAD6
, 0xf6)
235 CV_TYPE(LF_PAD7
, 0xf7)
236 CV_TYPE(LF_PAD8
, 0xf8)
237 CV_TYPE(LF_PAD9
, 0xf9)
238 CV_TYPE(LF_PAD10
, 0xfa)
239 CV_TYPE(LF_PAD11
, 0xfb)
240 CV_TYPE(LF_PAD12
, 0xfc)
241 CV_TYPE(LF_PAD13
, 0xfd)
242 CV_TYPE(LF_PAD14
, 0xfe)
243 CV_TYPE(LF_PAD15
, 0xff)
247 #undef TYPE_RECORD_ALIAS
249 #undef MEMBER_RECORD_ALIAS