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