Warning, /include/llvm/DebugInfo/CodeView/CodeViewTypes.def is written in an unsupported language. File is not indexed.
0001 //===-- CodeViewTypes.def - All CodeView leaf types -------------*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 //
0009 // See LEAF_ENUM_e in cvinfo.h. This should match the constants there.
0010 //
0011 //===----------------------------------------------------------------------===//
0012
0013 // If the type is known, then we have a record describing it in TypeRecord.h.
0014
0015 #ifndef CV_TYPE
0016 #define CV_TYPE(lf_ename, value)
0017 #endif
0018
0019 // If the type is known, then we have a record describing it in TypeRecord.h.
0020 #ifndef TYPE_RECORD
0021 #define TYPE_RECORD(lf_ename, value, name) CV_TYPE(lf_ename, value)
0022 #endif
0023
0024 #ifndef TYPE_RECORD_ALIAS
0025 #define TYPE_RECORD_ALIAS(lf_ename, value, name, alias_name) \
0026 TYPE_RECORD(lf_ename, value, name)
0027 #endif
0028
0029 #ifndef MEMBER_RECORD
0030 #define MEMBER_RECORD(lf_ename, value, name) TYPE_RECORD(lf_ename, value, name)
0031 #endif
0032
0033 #ifndef MEMBER_RECORD_ALIAS
0034 #define MEMBER_RECORD_ALIAS(lf_ename, value, name, alias_name) \
0035 MEMBER_RECORD(lf_ename, value, name)
0036 #endif
0037
0038 TYPE_RECORD(LF_POINTER, 0x1002, Pointer)
0039 TYPE_RECORD(LF_MODIFIER, 0x1001, Modifier)
0040 TYPE_RECORD(LF_PROCEDURE, 0x1008, Procedure)
0041 TYPE_RECORD(LF_MFUNCTION, 0x1009, MemberFunction)
0042 TYPE_RECORD(LF_LABEL, 0x000e, Label)
0043 TYPE_RECORD(LF_ARGLIST, 0x1201, ArgList)
0044
0045 TYPE_RECORD(LF_FIELDLIST, 0x1203, FieldList)
0046
0047 TYPE_RECORD(LF_ARRAY, 0x1503, Array)
0048 TYPE_RECORD(LF_CLASS, 0x1504, Class)
0049 TYPE_RECORD_ALIAS(LF_STRUCTURE, 0x1505, Struct, Class)
0050 TYPE_RECORD_ALIAS(LF_INTERFACE, 0x1519, Interface, Class)
0051 TYPE_RECORD(LF_UNION, 0x1506, Union)
0052 TYPE_RECORD(LF_ENUM, 0x1507, Enum)
0053 TYPE_RECORD(LF_TYPESERVER2, 0x1515, TypeServer2)
0054 TYPE_RECORD(LF_VFTABLE, 0x151d, VFTable)
0055 TYPE_RECORD(LF_VTSHAPE, 0x000a, VFTableShape)
0056
0057 TYPE_RECORD(LF_BITFIELD, 0x1205, BitField)
0058
0059 // Member type records. These are generally not length prefixed, and appear
0060 // inside of a field list record.
0061 MEMBER_RECORD(LF_BCLASS, 0x1400, BaseClass)
0062 MEMBER_RECORD_ALIAS(LF_BINTERFACE, 0x151a, BaseInterface, BaseClass)
0063
0064 MEMBER_RECORD(LF_VBCLASS, 0x1401, VirtualBaseClass)
0065 MEMBER_RECORD_ALIAS(LF_IVBCLASS, 0x1402, IndirectVirtualBaseClass,
0066 VirtualBaseClass)
0067
0068 MEMBER_RECORD(LF_VFUNCTAB, 0x1409, VFPtr)
0069 MEMBER_RECORD(LF_STMEMBER, 0x150e, StaticDataMember)
0070 MEMBER_RECORD(LF_METHOD, 0x150f, OverloadedMethod)
0071 MEMBER_RECORD(LF_MEMBER, 0x150d, DataMember)
0072 MEMBER_RECORD(LF_NESTTYPE, 0x1510, NestedType)
0073 MEMBER_RECORD(LF_ONEMETHOD, 0x1511, OneMethod)
0074 MEMBER_RECORD(LF_ENUMERATE, 0x1502, Enumerator)
0075 MEMBER_RECORD(LF_INDEX, 0x1404, ListContinuation)
0076
0077 // ID leaf records. Subsequent leaf types may be referenced from .debug$S.
0078 TYPE_RECORD(LF_FUNC_ID, 0x1601, FuncId)
0079 TYPE_RECORD(LF_MFUNC_ID, 0x1602, MemberFuncId)
0080 TYPE_RECORD(LF_BUILDINFO, 0x1603, BuildInfo)
0081 TYPE_RECORD(LF_SUBSTR_LIST, 0x1604, StringList)
0082 TYPE_RECORD(LF_STRING_ID, 0x1605, StringId)
0083 TYPE_RECORD(LF_UDT_SRC_LINE, 0x1606, UdtSourceLine)
0084 TYPE_RECORD(LF_UDT_MOD_SRC_LINE, 0x1607, UdtModSourceLine)
0085
0086
0087 TYPE_RECORD(LF_METHODLIST, 0x1206, MethodOverloadList)
0088
0089 TYPE_RECORD(LF_PRECOMP, 0x1509, Precomp)
0090 TYPE_RECORD(LF_ENDPRECOMP, 0x0014, EndPrecomp)
0091
0092 // 16 bit type records.
0093 CV_TYPE(LF_MODIFIER_16t, 0x0001)
0094 CV_TYPE(LF_POINTER_16t, 0x0002)
0095 CV_TYPE(LF_ARRAY_16t, 0x0003)
0096 CV_TYPE(LF_CLASS_16t, 0x0004)
0097 CV_TYPE(LF_STRUCTURE_16t, 0x0005)
0098 CV_TYPE(LF_UNION_16t, 0x0006)
0099 CV_TYPE(LF_ENUM_16t, 0x0007)
0100 CV_TYPE(LF_PROCEDURE_16t, 0x0008)
0101 CV_TYPE(LF_MFUNCTION_16t, 0x0009)
0102 CV_TYPE(LF_COBOL0_16t, 0x000b)
0103 CV_TYPE(LF_COBOL1, 0x000c)
0104 CV_TYPE(LF_BARRAY_16t, 0x000d)
0105 CV_TYPE(LF_NULLLEAF, 0x000f) // LF_NULL
0106 CV_TYPE(LF_NOTTRAN, 0x0010)
0107 CV_TYPE(LF_DIMARRAY_16t, 0x0011)
0108 CV_TYPE(LF_VFTPATH_16t, 0x0012)
0109 CV_TYPE(LF_PRECOMP_16t, 0x0013)
0110 CV_TYPE(LF_OEM_16t, 0x0015)
0111 CV_TYPE(LF_TYPESERVER_ST, 0x0016)
0112
0113 CV_TYPE(LF_SKIP_16t, 0x0200)
0114 CV_TYPE(LF_ARGLIST_16t, 0x0201)
0115 CV_TYPE(LF_DEFARG_16t, 0x0202)
0116 CV_TYPE(LF_LIST, 0x0203)
0117 CV_TYPE(LF_FIELDLIST_16t, 0x0204)
0118 CV_TYPE(LF_DERIVED_16t, 0x0205)
0119 CV_TYPE(LF_BITFIELD_16t, 0x0206)
0120 CV_TYPE(LF_METHODLIST_16t, 0x0207)
0121 CV_TYPE(LF_DIMCONU_16t, 0x0208)
0122 CV_TYPE(LF_DIMCONLU_16t, 0x0209)
0123 CV_TYPE(LF_DIMVARU_16t, 0x020a)
0124 CV_TYPE(LF_DIMVARLU_16t, 0x020b)
0125 CV_TYPE(LF_REFSYM, 0x020c)
0126
0127 // 16 bit member types. Generally not length prefixed.
0128 CV_TYPE(LF_BCLASS_16t, 0x0400)
0129 CV_TYPE(LF_VBCLASS_16t, 0x0401)
0130 CV_TYPE(LF_IVBCLASS_16t, 0x0402)
0131 CV_TYPE(LF_ENUMERATE_ST, 0x0403)
0132 CV_TYPE(LF_FRIENDFCN_16t, 0x0404)
0133 CV_TYPE(LF_INDEX_16t, 0x0405)
0134 CV_TYPE(LF_MEMBER_16t, 0x0406)
0135 CV_TYPE(LF_STMEMBER_16t, 0x0407)
0136 CV_TYPE(LF_METHOD_16t, 0x0408)
0137 CV_TYPE(LF_NESTTYPE_16t, 0x0409)
0138 CV_TYPE(LF_VFUNCTAB_16t, 0x040a)
0139 CV_TYPE(LF_FRIENDCLS_16t, 0x040b)
0140 CV_TYPE(LF_ONEMETHOD_16t, 0x040c)
0141 CV_TYPE(LF_VFUNCOFF_16t, 0x040d)
0142
0143 CV_TYPE(LF_TI16_MAX, 0x1000)
0144
0145 CV_TYPE(LF_ARRAY_ST, 0x1003)
0146 CV_TYPE(LF_CLASS_ST, 0x1004)
0147 CV_TYPE(LF_STRUCTURE_ST, 0x1005)
0148 CV_TYPE(LF_UNION_ST, 0x1006)
0149 CV_TYPE(LF_ENUM_ST, 0x1007)
0150 CV_TYPE(LF_COBOL0, 0x100a)
0151 CV_TYPE(LF_BARRAY, 0x100b)
0152 CV_TYPE(LF_DIMARRAY_ST, 0x100c)
0153 CV_TYPE(LF_VFTPATH, 0x100d)
0154 CV_TYPE(LF_PRECOMP_ST, 0x100e)
0155 CV_TYPE(LF_OEM, 0x100f)
0156 CV_TYPE(LF_ALIAS_ST, 0x1010)
0157 CV_TYPE(LF_OEM2, 0x1011)
0158
0159 CV_TYPE(LF_SKIP, 0x1200)
0160 CV_TYPE(LF_DEFARG_ST, 0x1202)
0161 CV_TYPE(LF_DERIVED, 0x1204)
0162 CV_TYPE(LF_DIMCONU, 0x1207)
0163 CV_TYPE(LF_DIMCONLU, 0x1208)
0164 CV_TYPE(LF_DIMVARU, 0x1209)
0165 CV_TYPE(LF_DIMVARLU, 0x120a)
0166
0167 // Member type records. These are generally not length prefixed, and appear
0168 // inside of a field list record.
0169 CV_TYPE(LF_FRIENDFCN_ST, 0x1403)
0170 CV_TYPE(LF_MEMBER_ST, 0x1405)
0171 CV_TYPE(LF_STMEMBER_ST, 0x1406)
0172 CV_TYPE(LF_METHOD_ST, 0x1407)
0173 CV_TYPE(LF_NESTTYPE_ST, 0x1408)
0174 CV_TYPE(LF_FRIENDCLS, 0x140a)
0175 CV_TYPE(LF_ONEMETHOD_ST, 0x140b)
0176 CV_TYPE(LF_VFUNCOFF, 0x140c)
0177 CV_TYPE(LF_NESTTYPEEX_ST, 0x140d)
0178 CV_TYPE(LF_MEMBERMODIFY_ST, 0x140e)
0179 CV_TYPE(LF_MANAGED_ST, 0x140f)
0180
0181 CV_TYPE(LF_ST_MAX, 0x1500)
0182 CV_TYPE(LF_TYPESERVER, 0x1501)
0183 CV_TYPE(LF_DIMARRAY, 0x1508)
0184 CV_TYPE(LF_ALIAS, 0x150a)
0185 CV_TYPE(LF_DEFARG, 0x150b)
0186 CV_TYPE(LF_FRIENDFCN, 0x150c)
0187 CV_TYPE(LF_NESTTYPEEX, 0x1512)
0188 CV_TYPE(LF_MEMBERMODIFY, 0x1513)
0189 CV_TYPE(LF_MANAGED, 0x1514)
0190 CV_TYPE(LF_STRIDED_ARRAY, 0x1516)
0191 CV_TYPE(LF_HLSL, 0x1517)
0192 CV_TYPE(LF_MODIFIER_EX, 0x1518)
0193 CV_TYPE(LF_VECTOR, 0x151b)
0194 CV_TYPE(LF_MATRIX, 0x151c)
0195
0196 // ID leaf records. Subsequent leaf types may be referenced from .debug$S.
0197
0198 // Numeric leaf types. These are generally contained in other records, and not
0199 // encountered in the main type stream.
0200
0201 CV_TYPE(LF_NUMERIC, 0x8000)
0202 CV_TYPE(LF_CHAR, 0x8000)
0203 CV_TYPE(LF_SHORT, 0x8001)
0204 CV_TYPE(LF_USHORT, 0x8002)
0205 CV_TYPE(LF_LONG, 0x8003)
0206 CV_TYPE(LF_ULONG, 0x8004)
0207 CV_TYPE(LF_REAL32, 0x8005)
0208 CV_TYPE(LF_REAL64, 0x8006)
0209 CV_TYPE(LF_REAL80, 0x8007)
0210 CV_TYPE(LF_REAL128, 0x8008)
0211 CV_TYPE(LF_QUADWORD, 0x8009)
0212 CV_TYPE(LF_UQUADWORD, 0x800a)
0213 CV_TYPE(LF_REAL48, 0x800b)
0214 CV_TYPE(LF_COMPLEX32, 0x800c)
0215 CV_TYPE(LF_COMPLEX64, 0x800d)
0216 CV_TYPE(LF_COMPLEX80, 0x800e)
0217 CV_TYPE(LF_COMPLEX128, 0x800f)
0218 CV_TYPE(LF_VARSTRING, 0x8010)
0219 CV_TYPE(LF_OCTWORD, 0x8017)
0220 CV_TYPE(LF_UOCTWORD, 0x8018)
0221 CV_TYPE(LF_DECIMAL, 0x8019)
0222 CV_TYPE(LF_DATE, 0x801a)
0223 CV_TYPE(LF_UTF8STRING, 0x801b)
0224 CV_TYPE(LF_REAL16, 0x801c)
0225
0226 // Padding bytes. These are emitted into alignment bytes in the type stream.
0227
0228 CV_TYPE(LF_PAD0, 0xf0)
0229 CV_TYPE(LF_PAD1, 0xf1)
0230 CV_TYPE(LF_PAD2, 0xf2)
0231 CV_TYPE(LF_PAD3, 0xf3)
0232 CV_TYPE(LF_PAD4, 0xf4)
0233 CV_TYPE(LF_PAD5, 0xf5)
0234 CV_TYPE(LF_PAD6, 0xf6)
0235 CV_TYPE(LF_PAD7, 0xf7)
0236 CV_TYPE(LF_PAD8, 0xf8)
0237 CV_TYPE(LF_PAD9, 0xf9)
0238 CV_TYPE(LF_PAD10, 0xfa)
0239 CV_TYPE(LF_PAD11, 0xfb)
0240 CV_TYPE(LF_PAD12, 0xfc)
0241 CV_TYPE(LF_PAD13, 0xfd)
0242 CV_TYPE(LF_PAD14, 0xfe)
0243 CV_TYPE(LF_PAD15, 0xff)
0244
0245 #undef CV_TYPE
0246 #undef TYPE_RECORD
0247 #undef TYPE_RECORD_ALIAS
0248 #undef MEMBER_RECORD
0249 #undef MEMBER_RECORD_ALIAS