mirror of
https://github.com/RPCSX/llvm.git
synced 2026-01-31 01:05:23 +01:00
This is the beginning of an effort to move the codeview yaml reader / writer into ObjectYAML so that it can be shared. Currently the only consumer / producer of CodeView YAML is llvm-pdbdump, but CodeView can exist outside of PDB files, and indeed is put into object files and passed to the linker to produce PDB files. Furthermore, there are subtle differences in the types of records that show up in object file CodeView vs PDB file CodeView, but they are otherwise 99% the same. By having this code in ObjectYAML, we can have llvm-pdbdump reuse this code, while teaching obj2yaml and yaml2obj to use this syntax for dealing with object files that can contain CodeView. This patch only adds support for CodeView type information to ObjectYAML. Subsequent patches will add support for CodeView symbol information. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304248 91177308-0d34-0410-b5e6-96231b3b80d8
259 lines
9.4 KiB
C++
259 lines
9.4 KiB
C++
//===-- CVLeafTypes.def - All CodeView leaf types ---------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// See LEAF_ENUM_e in cvinfo.h. This should match the constants there.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef CV_SYMBOL
|
|
#define CV_SYMBOL(ename, value)
|
|
#endif
|
|
|
|
#ifndef SYMBOL_RECORD
|
|
#define SYMBOL_RECORD(lf_ename, value, name) CV_SYMBOL(lf_ename, value)
|
|
#endif
|
|
|
|
#ifndef SYMBOL_RECORD_ALIAS
|
|
#define SYMBOL_RECORD_ALIAS(lf_ename, value, name, alias_name) \
|
|
SYMBOL_RECORD(lf_ename, value, name)
|
|
#endif
|
|
|
|
// 16 bit symbol types. Not very useful, provided only for reference.
|
|
CV_SYMBOL(S_COMPILE , 0x0001)
|
|
CV_SYMBOL(S_REGISTER_16t , 0x0002)
|
|
CV_SYMBOL(S_CONSTANT_16t , 0x0003)
|
|
CV_SYMBOL(S_UDT_16t , 0x0004)
|
|
CV_SYMBOL(S_SSEARCH , 0x0005)
|
|
CV_SYMBOL(S_SKIP , 0x0007)
|
|
CV_SYMBOL(S_CVRESERVE , 0x0008)
|
|
CV_SYMBOL(S_OBJNAME_ST , 0x0009)
|
|
CV_SYMBOL(S_ENDARG , 0x000a)
|
|
CV_SYMBOL(S_COBOLUDT_16t , 0x000b)
|
|
CV_SYMBOL(S_MANYREG_16t , 0x000c)
|
|
CV_SYMBOL(S_RETURN , 0x000d)
|
|
CV_SYMBOL(S_ENTRYTHIS , 0x000e)
|
|
CV_SYMBOL(S_BPREL16 , 0x0100)
|
|
CV_SYMBOL(S_LDATA16 , 0x0101)
|
|
CV_SYMBOL(S_GDATA16 , 0x0102)
|
|
CV_SYMBOL(S_PUB16 , 0x0103)
|
|
CV_SYMBOL(S_LPROC16 , 0x0104)
|
|
CV_SYMBOL(S_GPROC16 , 0x0105)
|
|
CV_SYMBOL(S_THUNK16 , 0x0106)
|
|
CV_SYMBOL(S_BLOCK16 , 0x0107)
|
|
CV_SYMBOL(S_WITH16 , 0x0108)
|
|
CV_SYMBOL(S_LABEL16 , 0x0109)
|
|
CV_SYMBOL(S_CEXMODEL16 , 0x010a)
|
|
CV_SYMBOL(S_VFTABLE16 , 0x010b)
|
|
CV_SYMBOL(S_REGREL16 , 0x010c)
|
|
CV_SYMBOL(S_BPREL32_16t , 0x0200)
|
|
CV_SYMBOL(S_LDATA32_16t , 0x0201)
|
|
CV_SYMBOL(S_GDATA32_16t , 0x0202)
|
|
CV_SYMBOL(S_PUB32_16t , 0x0203)
|
|
CV_SYMBOL(S_LPROC32_16t , 0x0204)
|
|
CV_SYMBOL(S_GPROC32_16t , 0x0205)
|
|
CV_SYMBOL(S_THUNK32_ST , 0x0206)
|
|
CV_SYMBOL(S_BLOCK32_ST , 0x0207)
|
|
CV_SYMBOL(S_WITH32_ST , 0x0208)
|
|
CV_SYMBOL(S_LABEL32_ST , 0x0209)
|
|
CV_SYMBOL(S_CEXMODEL32 , 0x020a)
|
|
CV_SYMBOL(S_VFTABLE32_16t , 0x020b)
|
|
CV_SYMBOL(S_REGREL32_16t , 0x020c)
|
|
CV_SYMBOL(S_LTHREAD32_16t , 0x020d)
|
|
CV_SYMBOL(S_GTHREAD32_16t , 0x020e)
|
|
CV_SYMBOL(S_SLINK32 , 0x020f)
|
|
CV_SYMBOL(S_LPROCMIPS_16t , 0x0300)
|
|
CV_SYMBOL(S_GPROCMIPS_16t , 0x0301)
|
|
CV_SYMBOL(S_PROCREF_ST , 0x0400)
|
|
CV_SYMBOL(S_DATAREF_ST , 0x0401)
|
|
CV_SYMBOL(S_ALIGN , 0x0402)
|
|
CV_SYMBOL(S_LPROCREF_ST , 0x0403)
|
|
CV_SYMBOL(S_OEM , 0x0404)
|
|
|
|
// All post 16 bit symbol types have the 0x1000 bit set.
|
|
CV_SYMBOL(S_TI16_MAX , 0x1000)
|
|
|
|
// Mostly unused "start" symbol types.
|
|
CV_SYMBOL(S_REGISTER_ST , 0x1001)
|
|
CV_SYMBOL(S_CONSTANT_ST , 0x1002)
|
|
CV_SYMBOL(S_UDT_ST , 0x1003)
|
|
CV_SYMBOL(S_COBOLUDT_ST , 0x1004)
|
|
CV_SYMBOL(S_MANYREG_ST , 0x1005)
|
|
CV_SYMBOL(S_BPREL32_ST , 0x1006)
|
|
CV_SYMBOL(S_LDATA32_ST , 0x1007)
|
|
CV_SYMBOL(S_GDATA32_ST , 0x1008)
|
|
CV_SYMBOL(S_PUB32_ST , 0x1009)
|
|
CV_SYMBOL(S_LPROC32_ST , 0x100a)
|
|
CV_SYMBOL(S_GPROC32_ST , 0x100b)
|
|
CV_SYMBOL(S_VFTABLE32 , 0x100c)
|
|
CV_SYMBOL(S_REGREL32_ST , 0x100d)
|
|
CV_SYMBOL(S_LTHREAD32_ST , 0x100e)
|
|
CV_SYMBOL(S_GTHREAD32_ST , 0x100f)
|
|
CV_SYMBOL(S_LPROCMIPS_ST , 0x1010)
|
|
CV_SYMBOL(S_GPROCMIPS_ST , 0x1011)
|
|
|
|
CV_SYMBOL(S_COMPILE2_ST , 0x1013)
|
|
CV_SYMBOL(S_MANYREG2_ST , 0x1014)
|
|
CV_SYMBOL(S_LPROCIA64_ST , 0x1015)
|
|
CV_SYMBOL(S_GPROCIA64_ST , 0x1016)
|
|
CV_SYMBOL(S_LOCALSLOT_ST , 0x1017)
|
|
CV_SYMBOL(S_PARAMSLOT_ST , 0x1018)
|
|
CV_SYMBOL(S_ANNOTATION , 0x1019)
|
|
CV_SYMBOL(S_GMANPROC_ST , 0x101a)
|
|
CV_SYMBOL(S_LMANPROC_ST , 0x101b)
|
|
CV_SYMBOL(S_RESERVED1 , 0x101c)
|
|
CV_SYMBOL(S_RESERVED2 , 0x101d)
|
|
CV_SYMBOL(S_RESERVED3 , 0x101e)
|
|
CV_SYMBOL(S_RESERVED4 , 0x101f)
|
|
CV_SYMBOL(S_LMANDATA_ST , 0x1020)
|
|
CV_SYMBOL(S_GMANDATA_ST , 0x1021)
|
|
CV_SYMBOL(S_MANFRAMEREL_ST, 0x1022)
|
|
CV_SYMBOL(S_MANREGISTER_ST, 0x1023)
|
|
CV_SYMBOL(S_MANSLOT_ST , 0x1024)
|
|
CV_SYMBOL(S_MANMANYREG_ST , 0x1025)
|
|
CV_SYMBOL(S_MANREGREL_ST , 0x1026)
|
|
CV_SYMBOL(S_MANMANYREG2_ST, 0x1027)
|
|
CV_SYMBOL(S_MANTYPREF , 0x1028)
|
|
CV_SYMBOL(S_UNAMESPACE_ST , 0x1029)
|
|
|
|
// End of S_*_ST symbols, which do not appear to be generated by modern
|
|
// compilers.
|
|
CV_SYMBOL(S_ST_MAX , 0x1100)
|
|
|
|
|
|
CV_SYMBOL(S_WITH32 , 0x1104)
|
|
CV_SYMBOL(S_MANYREG , 0x110a)
|
|
CV_SYMBOL(S_LPROCMIPS , 0x1114)
|
|
CV_SYMBOL(S_GPROCMIPS , 0x1115)
|
|
CV_SYMBOL(S_MANYREG2 , 0x1117)
|
|
CV_SYMBOL(S_LPROCIA64 , 0x1118)
|
|
CV_SYMBOL(S_GPROCIA64 , 0x1119)
|
|
CV_SYMBOL(S_LOCALSLOT , 0x111a)
|
|
CV_SYMBOL(S_PARAMSLOT , 0x111b)
|
|
|
|
// Managed code symbols.
|
|
CV_SYMBOL(S_MANFRAMEREL , 0x111e)
|
|
CV_SYMBOL(S_MANREGISTER , 0x111f)
|
|
CV_SYMBOL(S_MANSLOT , 0x1120)
|
|
CV_SYMBOL(S_MANMANYREG , 0x1121)
|
|
CV_SYMBOL(S_MANREGREL , 0x1122)
|
|
CV_SYMBOL(S_MANMANYREG2 , 0x1123)
|
|
CV_SYMBOL(S_UNAMESPACE , 0x1124)
|
|
CV_SYMBOL(S_DATAREF , 0x1126)
|
|
CV_SYMBOL(S_ANNOTATIONREF , 0x1128)
|
|
CV_SYMBOL(S_TOKENREF , 0x1129)
|
|
CV_SYMBOL(S_GMANPROC , 0x112a)
|
|
CV_SYMBOL(S_LMANPROC , 0x112b)
|
|
CV_SYMBOL(S_ATTR_FRAMEREL , 0x112e)
|
|
CV_SYMBOL(S_ATTR_REGISTER , 0x112f)
|
|
CV_SYMBOL(S_ATTR_REGREL , 0x1130)
|
|
CV_SYMBOL(S_ATTR_MANYREG , 0x1131)
|
|
|
|
|
|
CV_SYMBOL(S_SEPCODE , 0x1132)
|
|
CV_SYMBOL(S_LOCAL_2005 , 0x1133)
|
|
CV_SYMBOL(S_DEFRANGE_2005 , 0x1134)
|
|
CV_SYMBOL(S_DEFRANGE2_2005, 0x1135)
|
|
CV_SYMBOL(S_DISCARDED , 0x113b)
|
|
|
|
// Current symbol types for most procedures as of this writing.
|
|
CV_SYMBOL(S_LPROCMIPS_ID , 0x1148)
|
|
CV_SYMBOL(S_GPROCMIPS_ID , 0x1149)
|
|
CV_SYMBOL(S_LPROCIA64_ID , 0x114a)
|
|
CV_SYMBOL(S_GPROCIA64_ID , 0x114b)
|
|
|
|
CV_SYMBOL(S_DEFRANGE_HLSL , 0x1150)
|
|
CV_SYMBOL(S_GDATA_HLSL , 0x1151)
|
|
CV_SYMBOL(S_LDATA_HLSL , 0x1152)
|
|
CV_SYMBOL(S_LOCAL_DPC_GROUPSHARED, 0x1154)
|
|
CV_SYMBOL(S_DEFRANGE_DPC_PTR_TAG, 0x1157)
|
|
CV_SYMBOL(S_DPC_SYM_TAG_MAP, 0x1158)
|
|
CV_SYMBOL(S_ARMSWITCHTABLE , 0x1159)
|
|
CV_SYMBOL(S_POGODATA , 0x115c)
|
|
CV_SYMBOL(S_INLINESITE2 , 0x115d)
|
|
CV_SYMBOL(S_MOD_TYPEREF , 0x115f)
|
|
CV_SYMBOL(S_REF_MINIPDB , 0x1160)
|
|
CV_SYMBOL(S_PDBMAP , 0x1161)
|
|
CV_SYMBOL(S_GDATA_HLSL32 , 0x1162)
|
|
CV_SYMBOL(S_LDATA_HLSL32 , 0x1163)
|
|
CV_SYMBOL(S_GDATA_HLSL32_EX, 0x1164)
|
|
CV_SYMBOL(S_LDATA_HLSL32_EX, 0x1165)
|
|
|
|
// Known symbol types
|
|
SYMBOL_RECORD(S_END , 0x0006, ScopeEndSym)
|
|
SYMBOL_RECORD_ALIAS(S_INLINESITE_END , 0x114e, InlineSiteEnd, ScopeEndSym)
|
|
SYMBOL_RECORD_ALIAS(S_PROC_ID_END , 0x114f, ProcEnd, ScopeEndSym)
|
|
|
|
SYMBOL_RECORD(S_THUNK32 , 0x1102, Thunk32Sym)
|
|
SYMBOL_RECORD(S_TRAMPOLINE , 0x112c, TrampolineSym)
|
|
SYMBOL_RECORD(S_SECTION , 0x1136, SectionSym)
|
|
SYMBOL_RECORD(S_COFFGROUP , 0x1137, CoffGroupSym)
|
|
SYMBOL_RECORD(S_EXPORT , 0x1138, ExportSym)
|
|
|
|
SYMBOL_RECORD(S_LPROC32 , 0x110f, ProcSym)
|
|
SYMBOL_RECORD_ALIAS(S_GPROC32 , 0x1110, GlobalProcSym, ProcSym)
|
|
SYMBOL_RECORD_ALIAS(S_LPROC32_ID , 0x1146, ProcIdSym, ProcSym)
|
|
SYMBOL_RECORD_ALIAS(S_GPROC32_ID , 0x1147, GlobalProcIdSym, ProcSym)
|
|
SYMBOL_RECORD_ALIAS(S_LPROC32_DPC , 0x1155, DPCProcSym, ProcSym)
|
|
SYMBOL_RECORD_ALIAS(S_LPROC32_DPC_ID , 0x1156, DPCProcIdSym, ProcSym)
|
|
|
|
SYMBOL_RECORD(S_REGISTER , 0x1106, RegisterSym)
|
|
SYMBOL_RECORD(S_PUB32 , 0x110e, PublicSym32)
|
|
|
|
SYMBOL_RECORD(S_PROCREF , 0x1125, ProcRefSym)
|
|
SYMBOL_RECORD_ALIAS(S_LPROCREF, 0x1127, LocalProcRef, ProcRefSym)
|
|
|
|
|
|
SYMBOL_RECORD(S_ENVBLOCK , 0x113d, EnvBlockSym)
|
|
|
|
SYMBOL_RECORD(S_INLINESITE , 0x114d, InlineSiteSym)
|
|
SYMBOL_RECORD(S_LOCAL , 0x113e, LocalSym)
|
|
SYMBOL_RECORD(S_DEFRANGE , 0x113f, DefRangeSym)
|
|
SYMBOL_RECORD(S_DEFRANGE_SUBFIELD, 0x1140, DefRangeSubfieldSym)
|
|
SYMBOL_RECORD(S_DEFRANGE_REGISTER, 0x1141, DefRangeRegisterSym)
|
|
SYMBOL_RECORD(S_DEFRANGE_FRAMEPOINTER_REL, 0x1142, DefRangeFramePointerRelSym)
|
|
SYMBOL_RECORD(S_DEFRANGE_SUBFIELD_REGISTER, 0x1143, DefRangeSubfieldRegisterSym)
|
|
SYMBOL_RECORD(S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE, 0x1144, DefRangeFramePointerRelFullScopeSym)
|
|
SYMBOL_RECORD(S_DEFRANGE_REGISTER_REL, 0x1145, DefRangeRegisterRelSym)
|
|
SYMBOL_RECORD(S_BLOCK32 , 0x1103, BlockSym)
|
|
SYMBOL_RECORD(S_LABEL32 , 0x1105, LabelSym)
|
|
SYMBOL_RECORD(S_OBJNAME , 0x1101, ObjNameSym)
|
|
SYMBOL_RECORD(S_COMPILE2 , 0x1116, Compile2Sym)
|
|
SYMBOL_RECORD(S_COMPILE3 , 0x113c, Compile3Sym)
|
|
SYMBOL_RECORD(S_FRAMEPROC , 0x1012, FrameProcSym)
|
|
SYMBOL_RECORD(S_CALLSITEINFO , 0x1139, CallSiteInfoSym)
|
|
SYMBOL_RECORD(S_FILESTATIC , 0x1153, FileStaticSym)
|
|
SYMBOL_RECORD(S_HEAPALLOCSITE , 0x115e, HeapAllocationSiteSym)
|
|
SYMBOL_RECORD(S_FRAMECOOKIE , 0x113a, FrameCookieSym)
|
|
|
|
SYMBOL_RECORD(S_CALLEES , 0x115a, CallerSym)
|
|
SYMBOL_RECORD_ALIAS(S_CALLERS , 0x115b, CalleeSym, CallerSym)
|
|
|
|
SYMBOL_RECORD(S_UDT , 0x1108, UDTSym)
|
|
SYMBOL_RECORD_ALIAS(S_COBOLUDT , 0x1109, CobolUDT, UDTSym)
|
|
|
|
SYMBOL_RECORD(S_BUILDINFO , 0x114c, BuildInfoSym)
|
|
SYMBOL_RECORD(S_BPREL32 , 0x110b, BPRelativeSym)
|
|
SYMBOL_RECORD(S_REGREL32 , 0x1111, RegRelativeSym)
|
|
|
|
SYMBOL_RECORD(S_CONSTANT , 0x1107, ConstantSym)
|
|
SYMBOL_RECORD_ALIAS(S_MANCONSTANT , 0x112d, ManagedConstant, ConstantSym)
|
|
|
|
SYMBOL_RECORD(S_LDATA32 , 0x110c, DataSym)
|
|
SYMBOL_RECORD_ALIAS(S_GDATA32 , 0x110d, GlobalData, DataSym)
|
|
SYMBOL_RECORD_ALIAS(S_LMANDATA , 0x111c, ManagedLocalData, DataSym)
|
|
SYMBOL_RECORD_ALIAS(S_GMANDATA , 0x111d, ManagedGlobalData, DataSym)
|
|
|
|
SYMBOL_RECORD(S_LTHREAD32 , 0x1112, ThreadLocalDataSym)
|
|
SYMBOL_RECORD_ALIAS(S_GTHREAD32 , 0x1113, GlobalTLS, ThreadLocalDataSym)
|
|
|
|
|
|
#undef CV_SYMBOL
|
|
#undef SYMBOL_RECORD
|
|
#undef SYMBOL_RECORD_ALIAS
|