<div dir="ltr">looking now</div><br><div class="gmail_quote"><div dir="ltr">On Tue, May 30, 2017 at 5:17 PM Peter Collingbourne <<a href="mailto:peter@pcc.me.uk">peter@pcc.me.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Zach,<div><br></div><div>I think your change caused a number of test failures on the sanitizer-x86_64-linux-fast bot.</div><div><a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/5323/steps/check-llvm%20ubsan/logs/stdio" target="_blank">http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/5323/steps/check-llvm%20ubsan/logs/stdio</a><br></div><div><a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/5323/steps/check-lld%20asan/logs/stdio" target="_blank">http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/5323/steps/check-lld%20asan/logs/stdio</a><br></div><div>Can you please take a look?</div><div><br></div><div>Thanks,</div><div>Peter</div></div><div class="gmail_extra"><br><div class="gmail_quote"></div></div><div class="gmail_extra"><div class="gmail_quote">On Tue, May 30, 2017 at 2:53 PM, Zachary Turner via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br></div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: zturner<br>
Date: Tue May 30 16:53:05 2017<br>
New Revision: 304248<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=304248&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=304248&view=rev</a><br>
Log:<br>
[CodeView] Move CodeView YAML code to ObjectYAML.<br>
<br>
This is the beginning of an effort to move the codeview yaml<br>
reader / writer into ObjectYAML so that it can be shared.<br>
Currently the only consumer / producer of CodeView YAML is<br>
llvm-pdbdump, but CodeView can exist outside of PDB files, and<br>
indeed is put into object files and passed to the linker to<br>
produce PDB files. Furthermore, there are subtle differences<br>
in the types of records that show up in object file CodeView<br>
vs PDB file CodeView, but they are otherwise 99% the same.<br>
<br>
By having this code in ObjectYAML, we can have llvm-pdbdump<br>
reuse this code, while teaching obj2yaml and yaml2obj to use<br>
this syntax for dealing with object files that can contain<br>
CodeView.<br>
<br>
This patch only adds support for CodeView type information<br>
to ObjectYAML. Subsequent patches will add support for<br>
CodeView symbol information.<br>
<br>
Added:<br>
llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewSymbols.def<br>
llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewTypes.def<br>
llvm/trunk/include/llvm/ObjectYAML/CodeViewYAML.h<br>
llvm/trunk/lib/ObjectYAML/CodeViewYAML.cpp<br>
Removed:<br>
llvm/trunk/include/llvm/DebugInfo/CodeView/CVSymbolTypes.def<br>
llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecords.def<br>
llvm/trunk/tools/llvm-pdbdump/YamlSerializationContext.h<br>
llvm/trunk/tools/llvm-pdbdump/YamlTypeDumper.cpp<br>
llvm/trunk/tools/llvm-pdbdump/YamlTypeDumper.h<br>
Modified:<br>
llvm/trunk/include/llvm/DebugInfo/CodeView/CodeView.h<br>
llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h<br>
llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolRecordMapping.h<br>
llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolSerializer.h<br>
llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h<br>
llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h<br>
llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h<br>
llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDeserializer.h<br>
llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h<br>
llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecord.h<br>
llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h<br>
llvm/trunk/include/llvm/DebugInfo/CodeView/TypeSerializer.h<br>
llvm/trunk/include/llvm/DebugInfo/CodeView/TypeTableBuilder.h<br>
llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h<br>
llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h<br>
llvm/trunk/include/llvm/DebugInfo/PDB/Native/RawConstants.h<br>
llvm/trunk/include/llvm/DebugInfo/PDB/Native/TpiHashing.h<br>
llvm/trunk/include/llvm/Support/YAMLTraits.h<br>
llvm/trunk/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp<br>
llvm/trunk/lib/DebugInfo/CodeView/CVTypeVisitor.cpp<br>
llvm/trunk/lib/DebugInfo/CodeView/EnumTables.cpp<br>
llvm/trunk/lib/DebugInfo/CodeView/SymbolDumper.cpp<br>
llvm/trunk/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp<br>
llvm/trunk/lib/MC/MCCodeView.cpp<br>
llvm/trunk/lib/ObjectYAML/CMakeLists.txt<br>
llvm/trunk/lib/ObjectYAML/LLVMBuild.txt<br>
llvm/trunk/tools/llvm-pdbdump/Analyze.cpp<br>
llvm/trunk/tools/llvm-pdbdump/CMakeLists.txt<br>
llvm/trunk/tools/llvm-pdbdump/CompactTypeDumpVisitor.cpp<br>
llvm/trunk/tools/llvm-pdbdump/PdbYaml.cpp<br>
llvm/trunk/tools/llvm-pdbdump/PdbYaml.h<br>
llvm/trunk/tools/llvm-pdbdump/YAMLOutputStyle.cpp<br>
llvm/trunk/tools/llvm-pdbdump/YAMLOutputStyle.h<br>
llvm/trunk/tools/llvm-pdbdump/YamlSymbolDumper.cpp<br>
llvm/trunk/tools/llvm-pdbdump/YamlSymbolDumper.h<br>
llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp<br>
<br>
Removed: llvm/trunk/include/llvm/DebugInfo/CodeView/CVSymbolTypes.def<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/CVSymbolTypes.def?rev=304247&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/CVSymbolTypes.def?rev=304247&view=auto</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/CodeView/CVSymbolTypes.def (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/CodeView/CVSymbolTypes.def (removed)<br>
@@ -1,258 +0,0 @@<br>
-//===-- CVLeafTypes.def - All CodeView leaf types ---------------*- C++ -*-===//<br>
-//<br>
-// The LLVM Compiler Infrastructure<br>
-//<br>
-// This file is distributed under the University of Illinois Open Source<br>
-// License. See LICENSE.TXT for details.<br>
-//<br>
-//===----------------------------------------------------------------------===//<br>
-//<br>
-// See LEAF_ENUM_e in cvinfo.h. This should match the constants there.<br>
-//<br>
-//===----------------------------------------------------------------------===//<br>
-<br>
-#ifndef CV_SYMBOL<br>
-#define CV_SYMBOL(ename, value)<br>
-#endif<br>
-<br>
-#ifndef SYMBOL_RECORD<br>
-#define SYMBOL_RECORD(lf_ename, value, name) CV_SYMBOL(lf_ename, value)<br>
-#endif<br>
-<br>
-#ifndef SYMBOL_RECORD_ALIAS<br>
-#define SYMBOL_RECORD_ALIAS(lf_ename, value, name, alias_name) \<br>
- SYMBOL_RECORD(lf_ename, value, name)<br>
-#endif<br>
-<br>
-// 16 bit symbol types. Not very useful, provided only for reference.<br>
-CV_SYMBOL(S_COMPILE , 0x0001)<br>
-CV_SYMBOL(S_REGISTER_16t , 0x0002)<br>
-CV_SYMBOL(S_CONSTANT_16t , 0x0003)<br>
-CV_SYMBOL(S_UDT_16t , 0x0004)<br>
-CV_SYMBOL(S_SSEARCH , 0x0005)<br>
-CV_SYMBOL(S_SKIP , 0x0007)<br>
-CV_SYMBOL(S_CVRESERVE , 0x0008)<br>
-CV_SYMBOL(S_OBJNAME_ST , 0x0009)<br>
-CV_SYMBOL(S_ENDARG , 0x000a)<br>
-CV_SYMBOL(S_COBOLUDT_16t , 0x000b)<br>
-CV_SYMBOL(S_MANYREG_16t , 0x000c)<br>
-CV_SYMBOL(S_RETURN , 0x000d)<br>
-CV_SYMBOL(S_ENTRYTHIS , 0x000e)<br>
-CV_SYMBOL(S_BPREL16 , 0x0100)<br>
-CV_SYMBOL(S_LDATA16 , 0x0101)<br>
-CV_SYMBOL(S_GDATA16 , 0x0102)<br>
-CV_SYMBOL(S_PUB16 , 0x0103)<br>
-CV_SYMBOL(S_LPROC16 , 0x0104)<br>
-CV_SYMBOL(S_GPROC16 , 0x0105)<br>
-CV_SYMBOL(S_THUNK16 , 0x0106)<br>
-CV_SYMBOL(S_BLOCK16 , 0x0107)<br>
-CV_SYMBOL(S_WITH16 , 0x0108)<br>
-CV_SYMBOL(S_LABEL16 , 0x0109)<br>
-CV_SYMBOL(S_CEXMODEL16 , 0x010a)<br>
-CV_SYMBOL(S_VFTABLE16 , 0x010b)<br>
-CV_SYMBOL(S_REGREL16 , 0x010c)<br>
-CV_SYMBOL(S_BPREL32_16t , 0x0200)<br>
-CV_SYMBOL(S_LDATA32_16t , 0x0201)<br>
-CV_SYMBOL(S_GDATA32_16t , 0x0202)<br>
-CV_SYMBOL(S_PUB32_16t , 0x0203)<br>
-CV_SYMBOL(S_LPROC32_16t , 0x0204)<br>
-CV_SYMBOL(S_GPROC32_16t , 0x0205)<br>
-CV_SYMBOL(S_THUNK32_ST , 0x0206)<br>
-CV_SYMBOL(S_BLOCK32_ST , 0x0207)<br>
-CV_SYMBOL(S_WITH32_ST , 0x0208)<br>
-CV_SYMBOL(S_LABEL32_ST , 0x0209)<br>
-CV_SYMBOL(S_CEXMODEL32 , 0x020a)<br>
-CV_SYMBOL(S_VFTABLE32_16t , 0x020b)<br>
-CV_SYMBOL(S_REGREL32_16t , 0x020c)<br>
-CV_SYMBOL(S_LTHREAD32_16t , 0x020d)<br>
-CV_SYMBOL(S_GTHREAD32_16t , 0x020e)<br>
-CV_SYMBOL(S_SLINK32 , 0x020f)<br>
-CV_SYMBOL(S_LPROCMIPS_16t , 0x0300)<br>
-CV_SYMBOL(S_GPROCMIPS_16t , 0x0301)<br>
-CV_SYMBOL(S_PROCREF_ST , 0x0400)<br>
-CV_SYMBOL(S_DATAREF_ST , 0x0401)<br>
-CV_SYMBOL(S_ALIGN , 0x0402)<br>
-CV_SYMBOL(S_LPROCREF_ST , 0x0403)<br>
-CV_SYMBOL(S_OEM , 0x0404)<br>
-<br>
-// All post 16 bit symbol types have the 0x1000 bit set.<br>
-CV_SYMBOL(S_TI16_MAX , 0x1000)<br>
-<br>
-// Mostly unused "start" symbol types.<br>
-CV_SYMBOL(S_REGISTER_ST , 0x1001)<br>
-CV_SYMBOL(S_CONSTANT_ST , 0x1002)<br>
-CV_SYMBOL(S_UDT_ST , 0x1003)<br>
-CV_SYMBOL(S_COBOLUDT_ST , 0x1004)<br>
-CV_SYMBOL(S_MANYREG_ST , 0x1005)<br>
-CV_SYMBOL(S_BPREL32_ST , 0x1006)<br>
-CV_SYMBOL(S_LDATA32_ST , 0x1007)<br>
-CV_SYMBOL(S_GDATA32_ST , 0x1008)<br>
-CV_SYMBOL(S_PUB32_ST , 0x1009)<br>
-CV_SYMBOL(S_LPROC32_ST , 0x100a)<br>
-CV_SYMBOL(S_GPROC32_ST , 0x100b)<br>
-CV_SYMBOL(S_VFTABLE32 , 0x100c)<br>
-CV_SYMBOL(S_REGREL32_ST , 0x100d)<br>
-CV_SYMBOL(S_LTHREAD32_ST , 0x100e)<br>
-CV_SYMBOL(S_GTHREAD32_ST , 0x100f)<br>
-CV_SYMBOL(S_LPROCMIPS_ST , 0x1010)<br>
-CV_SYMBOL(S_GPROCMIPS_ST , 0x1011)<br>
-<br>
-CV_SYMBOL(S_COMPILE2_ST , 0x1013)<br>
-CV_SYMBOL(S_MANYREG2_ST , 0x1014)<br>
-CV_SYMBOL(S_LPROCIA64_ST , 0x1015)<br>
-CV_SYMBOL(S_GPROCIA64_ST , 0x1016)<br>
-CV_SYMBOL(S_LOCALSLOT_ST , 0x1017)<br>
-CV_SYMBOL(S_PARAMSLOT_ST , 0x1018)<br>
-CV_SYMBOL(S_ANNOTATION , 0x1019)<br>
-CV_SYMBOL(S_GMANPROC_ST , 0x101a)<br>
-CV_SYMBOL(S_LMANPROC_ST , 0x101b)<br>
-CV_SYMBOL(S_RESERVED1 , 0x101c)<br>
-CV_SYMBOL(S_RESERVED2 , 0x101d)<br>
-CV_SYMBOL(S_RESERVED3 , 0x101e)<br>
-CV_SYMBOL(S_RESERVED4 , 0x101f)<br>
-CV_SYMBOL(S_LMANDATA_ST , 0x1020)<br>
-CV_SYMBOL(S_GMANDATA_ST , 0x1021)<br>
-CV_SYMBOL(S_MANFRAMEREL_ST, 0x1022)<br>
-CV_SYMBOL(S_MANREGISTER_ST, 0x1023)<br>
-CV_SYMBOL(S_MANSLOT_ST , 0x1024)<br>
-CV_SYMBOL(S_MANMANYREG_ST , 0x1025)<br>
-CV_SYMBOL(S_MANREGREL_ST , 0x1026)<br>
-CV_SYMBOL(S_MANMANYREG2_ST, 0x1027)<br>
-CV_SYMBOL(S_MANTYPREF , 0x1028)<br>
-CV_SYMBOL(S_UNAMESPACE_ST , 0x1029)<br>
-<br>
-// End of S_*_ST symbols, which do not appear to be generated by modern<br>
-// compilers.<br>
-CV_SYMBOL(S_ST_MAX , 0x1100)<br>
-<br>
-<br>
-CV_SYMBOL(S_WITH32 , 0x1104)<br>
-CV_SYMBOL(S_MANYREG , 0x110a)<br>
-CV_SYMBOL(S_LPROCMIPS , 0x1114)<br>
-CV_SYMBOL(S_GPROCMIPS , 0x1115)<br>
-CV_SYMBOL(S_MANYREG2 , 0x1117)<br>
-CV_SYMBOL(S_LPROCIA64 , 0x1118)<br>
-CV_SYMBOL(S_GPROCIA64 , 0x1119)<br>
-CV_SYMBOL(S_LOCALSLOT , 0x111a)<br>
-CV_SYMBOL(S_PARAMSLOT , 0x111b)<br>
-<br>
-// Managed code symbols.<br>
-CV_SYMBOL(S_MANFRAMEREL , 0x111e)<br>
-CV_SYMBOL(S_MANREGISTER , 0x111f)<br>
-CV_SYMBOL(S_MANSLOT , 0x1120)<br>
-CV_SYMBOL(S_MANMANYREG , 0x1121)<br>
-CV_SYMBOL(S_MANREGREL , 0x1122)<br>
-CV_SYMBOL(S_MANMANYREG2 , 0x1123)<br>
-CV_SYMBOL(S_UNAMESPACE , 0x1124)<br>
-CV_SYMBOL(S_DATAREF , 0x1126)<br>
-CV_SYMBOL(S_ANNOTATIONREF , 0x1128)<br>
-CV_SYMBOL(S_TOKENREF , 0x1129)<br>
-CV_SYMBOL(S_GMANPROC , 0x112a)<br>
-CV_SYMBOL(S_LMANPROC , 0x112b)<br>
-CV_SYMBOL(S_ATTR_FRAMEREL , 0x112e)<br>
-CV_SYMBOL(S_ATTR_REGISTER , 0x112f)<br>
-CV_SYMBOL(S_ATTR_REGREL , 0x1130)<br>
-CV_SYMBOL(S_ATTR_MANYREG , 0x1131)<br>
-<br>
-<br>
-CV_SYMBOL(S_SEPCODE , 0x1132)<br>
-CV_SYMBOL(S_LOCAL_2005 , 0x1133)<br>
-CV_SYMBOL(S_DEFRANGE_2005 , 0x1134)<br>
-CV_SYMBOL(S_DEFRANGE2_2005, 0x1135)<br>
-CV_SYMBOL(S_DISCARDED , 0x113b)<br>
-<br>
-// Current symbol types for most procedures as of this writing.<br>
-CV_SYMBOL(S_LPROCMIPS_ID , 0x1148)<br>
-CV_SYMBOL(S_GPROCMIPS_ID , 0x1149)<br>
-CV_SYMBOL(S_LPROCIA64_ID , 0x114a)<br>
-CV_SYMBOL(S_GPROCIA64_ID , 0x114b)<br>
-<br>
-CV_SYMBOL(S_DEFRANGE_HLSL , 0x1150)<br>
-CV_SYMBOL(S_GDATA_HLSL , 0x1151)<br>
-CV_SYMBOL(S_LDATA_HLSL , 0x1152)<br>
-CV_SYMBOL(S_LOCAL_DPC_GROUPSHARED, 0x1154)<br>
-CV_SYMBOL(S_DEFRANGE_DPC_PTR_TAG, 0x1157)<br>
-CV_SYMBOL(S_DPC_SYM_TAG_MAP, 0x1158)<br>
-CV_SYMBOL(S_ARMSWITCHTABLE , 0x1159)<br>
-CV_SYMBOL(S_POGODATA , 0x115c)<br>
-CV_SYMBOL(S_INLINESITE2 , 0x115d)<br>
-CV_SYMBOL(S_MOD_TYPEREF , 0x115f)<br>
-CV_SYMBOL(S_REF_MINIPDB , 0x1160)<br>
-CV_SYMBOL(S_PDBMAP , 0x1161)<br>
-CV_SYMBOL(S_GDATA_HLSL32 , 0x1162)<br>
-CV_SYMBOL(S_LDATA_HLSL32 , 0x1163)<br>
-CV_SYMBOL(S_GDATA_HLSL32_EX, 0x1164)<br>
-CV_SYMBOL(S_LDATA_HLSL32_EX, 0x1165)<br>
-<br>
-// Known symbol types<br>
-SYMBOL_RECORD(S_END , 0x0006, ScopeEndSym)<br>
-SYMBOL_RECORD_ALIAS(S_INLINESITE_END , 0x114e, InlineSiteEnd, ScopeEndSym)<br>
-SYMBOL_RECORD_ALIAS(S_PROC_ID_END , 0x114f, ProcEnd, ScopeEndSym)<br>
-<br>
-SYMBOL_RECORD(S_THUNK32 , 0x1102, Thunk32Sym)<br>
-SYMBOL_RECORD(S_TRAMPOLINE , 0x112c, TrampolineSym)<br>
-SYMBOL_RECORD(S_SECTION , 0x1136, SectionSym)<br>
-SYMBOL_RECORD(S_COFFGROUP , 0x1137, CoffGroupSym)<br>
-SYMBOL_RECORD(S_EXPORT , 0x1138, ExportSym)<br>
-<br>
-SYMBOL_RECORD(S_LPROC32 , 0x110f, ProcSym)<br>
-SYMBOL_RECORD_ALIAS(S_GPROC32 , 0x1110, GlobalProcSym, ProcSym)<br>
-SYMBOL_RECORD_ALIAS(S_LPROC32_ID , 0x1146, ProcIdSym, ProcSym)<br>
-SYMBOL_RECORD_ALIAS(S_GPROC32_ID , 0x1147, GlobalProcIdSym, ProcSym)<br>
-SYMBOL_RECORD_ALIAS(S_LPROC32_DPC , 0x1155, DPCProcSym, ProcSym)<br>
-SYMBOL_RECORD_ALIAS(S_LPROC32_DPC_ID , 0x1156, DPCProcIdSym, ProcSym)<br>
-<br>
-SYMBOL_RECORD(S_REGISTER , 0x1106, RegisterSym)<br>
-SYMBOL_RECORD(S_PUB32 , 0x110e, PublicSym32)<br>
-<br>
-SYMBOL_RECORD(S_PROCREF , 0x1125, ProcRefSym)<br>
-SYMBOL_RECORD_ALIAS(S_LPROCREF, 0x1127, LocalProcRef, ProcRefSym)<br>
-<br>
-<br>
-SYMBOL_RECORD(S_ENVBLOCK , 0x113d, EnvBlockSym)<br>
-<br>
-SYMBOL_RECORD(S_INLINESITE , 0x114d, InlineSiteSym)<br>
-SYMBOL_RECORD(S_LOCAL , 0x113e, LocalSym)<br>
-SYMBOL_RECORD(S_DEFRANGE , 0x113f, DefRangeSym)<br>
-SYMBOL_RECORD(S_DEFRANGE_SUBFIELD, 0x1140, DefRangeSubfieldSym)<br>
-SYMBOL_RECORD(S_DEFRANGE_REGISTER, 0x1141, DefRangeRegisterSym)<br>
-SYMBOL_RECORD(S_DEFRANGE_FRAMEPOINTER_REL, 0x1142, DefRangeFramePointerRelSym)<br>
-SYMBOL_RECORD(S_DEFRANGE_SUBFIELD_REGISTER, 0x1143, DefRangeSubfieldRegisterSym)<br>
-SYMBOL_RECORD(S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE, 0x1144, DefRangeFramePointerRelFullScopeSym)<br>
-SYMBOL_RECORD(S_DEFRANGE_REGISTER_REL, 0x1145, DefRangeRegisterRelSym)<br>
-SYMBOL_RECORD(S_BLOCK32 , 0x1103, BlockSym)<br>
-SYMBOL_RECORD(S_LABEL32 , 0x1105, LabelSym)<br>
-SYMBOL_RECORD(S_OBJNAME , 0x1101, ObjNameSym)<br>
-SYMBOL_RECORD(S_COMPILE2 , 0x1116, Compile2Sym)<br>
-SYMBOL_RECORD(S_COMPILE3 , 0x113c, Compile3Sym)<br>
-SYMBOL_RECORD(S_FRAMEPROC , 0x1012, FrameProcSym)<br>
-SYMBOL_RECORD(S_CALLSITEINFO , 0x1139, CallSiteInfoSym)<br>
-SYMBOL_RECORD(S_FILESTATIC , 0x1153, FileStaticSym)<br>
-SYMBOL_RECORD(S_HEAPALLOCSITE , 0x115e, HeapAllocationSiteSym)<br>
-SYMBOL_RECORD(S_FRAMECOOKIE , 0x113a, FrameCookieSym)<br>
-<br>
-SYMBOL_RECORD(S_CALLEES , 0x115a, CallerSym)<br>
-SYMBOL_RECORD_ALIAS(S_CALLERS , 0x115b, CalleeSym, CallerSym)<br>
-<br>
-SYMBOL_RECORD(S_UDT , 0x1108, UDTSym)<br>
-SYMBOL_RECORD_ALIAS(S_COBOLUDT , 0x1109, CobolUDT, UDTSym)<br>
-<br>
-SYMBOL_RECORD(S_BUILDINFO , 0x114c, BuildInfoSym)<br>
-SYMBOL_RECORD(S_BPREL32 , 0x110b, BPRelativeSym)<br>
-SYMBOL_RECORD(S_REGREL32 , 0x1111, RegRelativeSym)<br>
-<br>
-SYMBOL_RECORD(S_CONSTANT , 0x1107, ConstantSym)<br>
-SYMBOL_RECORD_ALIAS(S_MANCONSTANT , 0x112d, ManagedConstant, ConstantSym)<br>
-<br>
-SYMBOL_RECORD(S_LDATA32 , 0x110c, DataSym)<br>
-SYMBOL_RECORD_ALIAS(S_GDATA32 , 0x110d, GlobalData, DataSym)<br>
-SYMBOL_RECORD_ALIAS(S_LMANDATA , 0x111c, ManagedLocalData, DataSym)<br>
-SYMBOL_RECORD_ALIAS(S_GMANDATA , 0x111d, ManagedGlobalData, DataSym)<br>
-<br>
-SYMBOL_RECORD(S_LTHREAD32 , 0x1112, ThreadLocalDataSym)<br>
-SYMBOL_RECORD_ALIAS(S_GTHREAD32 , 0x1113, GlobalTLS, ThreadLocalDataSym)<br>
-<br>
-<br>
-#undef CV_SYMBOL<br>
-#undef SYMBOL_RECORD<br>
-#undef SYMBOL_RECORD_ALIAS<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/CodeView.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/CodeView.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/CodeView.h?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/CodeView/CodeView.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/CodeView/CodeView.h Tue May 30 16:53:05 2017<br>
@@ -6,6 +6,10 @@<br>
// License. See LICENSE.TXT for details.<br>
//<br>
//===----------------------------------------------------------------------===//<br>
+//<br>
+// Defines constants and basic types describing CodeView debug information.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
<br>
#ifndef LLVM_DEBUGINFO_CODEVIEW_CODEVIEW_H<br>
#define LLVM_DEBUGINFO_CODEVIEW_CODEVIEW_H<br>
@@ -22,28 +26,28 @@ namespace codeview {<br>
/// documentation and headers talk about this as the "leaf" type.<br>
enum class TypeRecordKind : uint16_t {<br>
#define TYPE_RECORD(lf_ename, value, name) name = value,<br>
-#include "TypeRecords.def"<br>
+#include "CodeViewTypes.def"<br>
};<br>
<br>
/// Duplicate copy of the above enum, but using the official CV names. Useful<br>
/// for reference purposes and when dealing with unknown record types.<br>
enum TypeLeafKind : uint16_t {<br>
#define CV_TYPE(name, val) name = val,<br>
-#include "TypeRecords.def"<br>
+#include "CodeViewTypes.def"<br>
};<br>
<br>
/// Distinguishes individual records in the Symbols subsection of a .debug$S<br>
/// section. Equivalent to SYM_ENUM_e in cvinfo.h.<br>
enum class SymbolRecordKind : uint16_t {<br>
#define SYMBOL_RECORD(lf_ename, value, name) name = value,<br>
-#include "CVSymbolTypes.def"<br>
+#include "CodeViewSymbols.def"<br>
};<br>
<br>
/// Duplicate copy of the above enum, but using the official CV names. Useful<br>
/// for reference purposes and when dealing with unknown record types.<br>
enum SymbolKind : uint16_t {<br>
#define CV_SYMBOL(name, val) name = val,<br>
-#include "CVSymbolTypes.def"<br>
+#include "CodeViewSymbols.def"<br>
};<br>
<br>
#define CV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS(Class) \<br>
@@ -280,7 +284,7 @@ CV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS(Met<br>
/// Equivalent to CV_LABEL_TYPE_e.<br>
enum class LabelType : uint16_t {<br>
Near = 0x0,<br>
- Far = 0x4,<br>
+ Far = 0x4,<br>
};<br>
<br>
/// Equivalent to CV_modifier_t.<br>
<br>
Added: llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewSymbols.def<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewSymbols.def?rev=304248&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewSymbols.def?rev=304248&view=auto</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewSymbols.def (added)<br>
+++ llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewSymbols.def Tue May 30 16:53:05 2017<br>
@@ -0,0 +1,258 @@<br>
+//===-- CVLeafTypes.def - All CodeView leaf types ---------------*- C++ -*-===//<br>
+//<br>
+// The LLVM Compiler Infrastructure<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+//<br>
+// See LEAF_ENUM_e in cvinfo.h. This should match the constants there.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#ifndef CV_SYMBOL<br>
+#define CV_SYMBOL(ename, value)<br>
+#endif<br>
+<br>
+#ifndef SYMBOL_RECORD<br>
+#define SYMBOL_RECORD(lf_ename, value, name) CV_SYMBOL(lf_ename, value)<br>
+#endif<br>
+<br>
+#ifndef SYMBOL_RECORD_ALIAS<br>
+#define SYMBOL_RECORD_ALIAS(lf_ename, value, name, alias_name) \<br>
+ SYMBOL_RECORD(lf_ename, value, name)<br>
+#endif<br>
+<br>
+// 16 bit symbol types. Not very useful, provided only for reference.<br>
+CV_SYMBOL(S_COMPILE , 0x0001)<br>
+CV_SYMBOL(S_REGISTER_16t , 0x0002)<br>
+CV_SYMBOL(S_CONSTANT_16t , 0x0003)<br>
+CV_SYMBOL(S_UDT_16t , 0x0004)<br>
+CV_SYMBOL(S_SSEARCH , 0x0005)<br>
+CV_SYMBOL(S_SKIP , 0x0007)<br>
+CV_SYMBOL(S_CVRESERVE , 0x0008)<br>
+CV_SYMBOL(S_OBJNAME_ST , 0x0009)<br>
+CV_SYMBOL(S_ENDARG , 0x000a)<br>
+CV_SYMBOL(S_COBOLUDT_16t , 0x000b)<br>
+CV_SYMBOL(S_MANYREG_16t , 0x000c)<br>
+CV_SYMBOL(S_RETURN , 0x000d)<br>
+CV_SYMBOL(S_ENTRYTHIS , 0x000e)<br>
+CV_SYMBOL(S_BPREL16 , 0x0100)<br>
+CV_SYMBOL(S_LDATA16 , 0x0101)<br>
+CV_SYMBOL(S_GDATA16 , 0x0102)<br>
+CV_SYMBOL(S_PUB16 , 0x0103)<br>
+CV_SYMBOL(S_LPROC16 , 0x0104)<br>
+CV_SYMBOL(S_GPROC16 , 0x0105)<br>
+CV_SYMBOL(S_THUNK16 , 0x0106)<br>
+CV_SYMBOL(S_BLOCK16 , 0x0107)<br>
+CV_SYMBOL(S_WITH16 , 0x0108)<br>
+CV_SYMBOL(S_LABEL16 , 0x0109)<br>
+CV_SYMBOL(S_CEXMODEL16 , 0x010a)<br>
+CV_SYMBOL(S_VFTABLE16 , 0x010b)<br>
+CV_SYMBOL(S_REGREL16 , 0x010c)<br>
+CV_SYMBOL(S_BPREL32_16t , 0x0200)<br>
+CV_SYMBOL(S_LDATA32_16t , 0x0201)<br>
+CV_SYMBOL(S_GDATA32_16t , 0x0202)<br>
+CV_SYMBOL(S_PUB32_16t , 0x0203)<br>
+CV_SYMBOL(S_LPROC32_16t , 0x0204)<br>
+CV_SYMBOL(S_GPROC32_16t , 0x0205)<br>
+CV_SYMBOL(S_THUNK32_ST , 0x0206)<br>
+CV_SYMBOL(S_BLOCK32_ST , 0x0207)<br>
+CV_SYMBOL(S_WITH32_ST , 0x0208)<br>
+CV_SYMBOL(S_LABEL32_ST , 0x0209)<br>
+CV_SYMBOL(S_CEXMODEL32 , 0x020a)<br>
+CV_SYMBOL(S_VFTABLE32_16t , 0x020b)<br>
+CV_SYMBOL(S_REGREL32_16t , 0x020c)<br>
+CV_SYMBOL(S_LTHREAD32_16t , 0x020d)<br>
+CV_SYMBOL(S_GTHREAD32_16t , 0x020e)<br>
+CV_SYMBOL(S_SLINK32 , 0x020f)<br>
+CV_SYMBOL(S_LPROCMIPS_16t , 0x0300)<br>
+CV_SYMBOL(S_GPROCMIPS_16t , 0x0301)<br>
+CV_SYMBOL(S_PROCREF_ST , 0x0400)<br>
+CV_SYMBOL(S_DATAREF_ST , 0x0401)<br>
+CV_SYMBOL(S_ALIGN , 0x0402)<br>
+CV_SYMBOL(S_LPROCREF_ST , 0x0403)<br>
+CV_SYMBOL(S_OEM , 0x0404)<br>
+<br>
+// All post 16 bit symbol types have the 0x1000 bit set.<br>
+CV_SYMBOL(S_TI16_MAX , 0x1000)<br>
+<br>
+// Mostly unused "start" symbol types.<br>
+CV_SYMBOL(S_REGISTER_ST , 0x1001)<br>
+CV_SYMBOL(S_CONSTANT_ST , 0x1002)<br>
+CV_SYMBOL(S_UDT_ST , 0x1003)<br>
+CV_SYMBOL(S_COBOLUDT_ST , 0x1004)<br>
+CV_SYMBOL(S_MANYREG_ST , 0x1005)<br>
+CV_SYMBOL(S_BPREL32_ST , 0x1006)<br>
+CV_SYMBOL(S_LDATA32_ST , 0x1007)<br>
+CV_SYMBOL(S_GDATA32_ST , 0x1008)<br>
+CV_SYMBOL(S_PUB32_ST , 0x1009)<br>
+CV_SYMBOL(S_LPROC32_ST , 0x100a)<br>
+CV_SYMBOL(S_GPROC32_ST , 0x100b)<br>
+CV_SYMBOL(S_VFTABLE32 , 0x100c)<br>
+CV_SYMBOL(S_REGREL32_ST , 0x100d)<br>
+CV_SYMBOL(S_LTHREAD32_ST , 0x100e)<br>
+CV_SYMBOL(S_GTHREAD32_ST , 0x100f)<br>
+CV_SYMBOL(S_LPROCMIPS_ST , 0x1010)<br>
+CV_SYMBOL(S_GPROCMIPS_ST , 0x1011)<br>
+<br>
+CV_SYMBOL(S_COMPILE2_ST , 0x1013)<br>
+CV_SYMBOL(S_MANYREG2_ST , 0x1014)<br>
+CV_SYMBOL(S_LPROCIA64_ST , 0x1015)<br>
+CV_SYMBOL(S_GPROCIA64_ST , 0x1016)<br>
+CV_SYMBOL(S_LOCALSLOT_ST , 0x1017)<br>
+CV_SYMBOL(S_PARAMSLOT_ST , 0x1018)<br>
+CV_SYMBOL(S_ANNOTATION , 0x1019)<br>
+CV_SYMBOL(S_GMANPROC_ST , 0x101a)<br>
+CV_SYMBOL(S_LMANPROC_ST , 0x101b)<br>
+CV_SYMBOL(S_RESERVED1 , 0x101c)<br>
+CV_SYMBOL(S_RESERVED2 , 0x101d)<br>
+CV_SYMBOL(S_RESERVED3 , 0x101e)<br>
+CV_SYMBOL(S_RESERVED4 , 0x101f)<br>
+CV_SYMBOL(S_LMANDATA_ST , 0x1020)<br>
+CV_SYMBOL(S_GMANDATA_ST , 0x1021)<br>
+CV_SYMBOL(S_MANFRAMEREL_ST, 0x1022)<br>
+CV_SYMBOL(S_MANREGISTER_ST, 0x1023)<br>
+CV_SYMBOL(S_MANSLOT_ST , 0x1024)<br>
+CV_SYMBOL(S_MANMANYREG_ST , 0x1025)<br>
+CV_SYMBOL(S_MANREGREL_ST , 0x1026)<br>
+CV_SYMBOL(S_MANMANYREG2_ST, 0x1027)<br>
+CV_SYMBOL(S_MANTYPREF , 0x1028)<br>
+CV_SYMBOL(S_UNAMESPACE_ST , 0x1029)<br>
+<br>
+// End of S_*_ST symbols, which do not appear to be generated by modern<br>
+// compilers.<br>
+CV_SYMBOL(S_ST_MAX , 0x1100)<br>
+<br>
+<br>
+CV_SYMBOL(S_WITH32 , 0x1104)<br>
+CV_SYMBOL(S_MANYREG , 0x110a)<br>
+CV_SYMBOL(S_LPROCMIPS , 0x1114)<br>
+CV_SYMBOL(S_GPROCMIPS , 0x1115)<br>
+CV_SYMBOL(S_MANYREG2 , 0x1117)<br>
+CV_SYMBOL(S_LPROCIA64 , 0x1118)<br>
+CV_SYMBOL(S_GPROCIA64 , 0x1119)<br>
+CV_SYMBOL(S_LOCALSLOT , 0x111a)<br>
+CV_SYMBOL(S_PARAMSLOT , 0x111b)<br>
+<br>
+// Managed code symbols.<br>
+CV_SYMBOL(S_MANFRAMEREL , 0x111e)<br>
+CV_SYMBOL(S_MANREGISTER , 0x111f)<br>
+CV_SYMBOL(S_MANSLOT , 0x1120)<br>
+CV_SYMBOL(S_MANMANYREG , 0x1121)<br>
+CV_SYMBOL(S_MANREGREL , 0x1122)<br>
+CV_SYMBOL(S_MANMANYREG2 , 0x1123)<br>
+CV_SYMBOL(S_UNAMESPACE , 0x1124)<br>
+CV_SYMBOL(S_DATAREF , 0x1126)<br>
+CV_SYMBOL(S_ANNOTATIONREF , 0x1128)<br>
+CV_SYMBOL(S_TOKENREF , 0x1129)<br>
+CV_SYMBOL(S_GMANPROC , 0x112a)<br>
+CV_SYMBOL(S_LMANPROC , 0x112b)<br>
+CV_SYMBOL(S_ATTR_FRAMEREL , 0x112e)<br>
+CV_SYMBOL(S_ATTR_REGISTER , 0x112f)<br>
+CV_SYMBOL(S_ATTR_REGREL , 0x1130)<br>
+CV_SYMBOL(S_ATTR_MANYREG , 0x1131)<br>
+<br>
+<br>
+CV_SYMBOL(S_SEPCODE , 0x1132)<br>
+CV_SYMBOL(S_LOCAL_2005 , 0x1133)<br>
+CV_SYMBOL(S_DEFRANGE_2005 , 0x1134)<br>
+CV_SYMBOL(S_DEFRANGE2_2005, 0x1135)<br>
+CV_SYMBOL(S_DISCARDED , 0x113b)<br>
+<br>
+// Current symbol types for most procedures as of this writing.<br>
+CV_SYMBOL(S_LPROCMIPS_ID , 0x1148)<br>
+CV_SYMBOL(S_GPROCMIPS_ID , 0x1149)<br>
+CV_SYMBOL(S_LPROCIA64_ID , 0x114a)<br>
+CV_SYMBOL(S_GPROCIA64_ID , 0x114b)<br>
+<br>
+CV_SYMBOL(S_DEFRANGE_HLSL , 0x1150)<br>
+CV_SYMBOL(S_GDATA_HLSL , 0x1151)<br>
+CV_SYMBOL(S_LDATA_HLSL , 0x1152)<br>
+CV_SYMBOL(S_LOCAL_DPC_GROUPSHARED, 0x1154)<br>
+CV_SYMBOL(S_DEFRANGE_DPC_PTR_TAG, 0x1157)<br>
+CV_SYMBOL(S_DPC_SYM_TAG_MAP, 0x1158)<br>
+CV_SYMBOL(S_ARMSWITCHTABLE , 0x1159)<br>
+CV_SYMBOL(S_POGODATA , 0x115c)<br>
+CV_SYMBOL(S_INLINESITE2 , 0x115d)<br>
+CV_SYMBOL(S_MOD_TYPEREF , 0x115f)<br>
+CV_SYMBOL(S_REF_MINIPDB , 0x1160)<br>
+CV_SYMBOL(S_PDBMAP , 0x1161)<br>
+CV_SYMBOL(S_GDATA_HLSL32 , 0x1162)<br>
+CV_SYMBOL(S_LDATA_HLSL32 , 0x1163)<br>
+CV_SYMBOL(S_GDATA_HLSL32_EX, 0x1164)<br>
+CV_SYMBOL(S_LDATA_HLSL32_EX, 0x1165)<br>
+<br>
+// Known symbol types<br>
+SYMBOL_RECORD(S_END , 0x0006, ScopeEndSym)<br>
+SYMBOL_RECORD_ALIAS(S_INLINESITE_END , 0x114e, InlineSiteEnd, ScopeEndSym)<br>
+SYMBOL_RECORD_ALIAS(S_PROC_ID_END , 0x114f, ProcEnd, ScopeEndSym)<br>
+<br>
+SYMBOL_RECORD(S_THUNK32 , 0x1102, Thunk32Sym)<br>
+SYMBOL_RECORD(S_TRAMPOLINE , 0x112c, TrampolineSym)<br>
+SYMBOL_RECORD(S_SECTION , 0x1136, SectionSym)<br>
+SYMBOL_RECORD(S_COFFGROUP , 0x1137, CoffGroupSym)<br>
+SYMBOL_RECORD(S_EXPORT , 0x1138, ExportSym)<br>
+<br>
+SYMBOL_RECORD(S_LPROC32 , 0x110f, ProcSym)<br>
+SYMBOL_RECORD_ALIAS(S_GPROC32 , 0x1110, GlobalProcSym, ProcSym)<br>
+SYMBOL_RECORD_ALIAS(S_LPROC32_ID , 0x1146, ProcIdSym, ProcSym)<br>
+SYMBOL_RECORD_ALIAS(S_GPROC32_ID , 0x1147, GlobalProcIdSym, ProcSym)<br>
+SYMBOL_RECORD_ALIAS(S_LPROC32_DPC , 0x1155, DPCProcSym, ProcSym)<br>
+SYMBOL_RECORD_ALIAS(S_LPROC32_DPC_ID , 0x1156, DPCProcIdSym, ProcSym)<br>
+<br>
+SYMBOL_RECORD(S_REGISTER , 0x1106, RegisterSym)<br>
+SYMBOL_RECORD(S_PUB32 , 0x110e, PublicSym32)<br>
+<br>
+SYMBOL_RECORD(S_PROCREF , 0x1125, ProcRefSym)<br>
+SYMBOL_RECORD_ALIAS(S_LPROCREF, 0x1127, LocalProcRef, ProcRefSym)<br>
+<br>
+<br>
+SYMBOL_RECORD(S_ENVBLOCK , 0x113d, EnvBlockSym)<br>
+<br>
+SYMBOL_RECORD(S_INLINESITE , 0x114d, InlineSiteSym)<br>
+SYMBOL_RECORD(S_LOCAL , 0x113e, LocalSym)<br>
+SYMBOL_RECORD(S_DEFRANGE , 0x113f, DefRangeSym)<br>
+SYMBOL_RECORD(S_DEFRANGE_SUBFIELD, 0x1140, DefRangeSubfieldSym)<br>
+SYMBOL_RECORD(S_DEFRANGE_REGISTER, 0x1141, DefRangeRegisterSym)<br>
+SYMBOL_RECORD(S_DEFRANGE_FRAMEPOINTER_REL, 0x1142, DefRangeFramePointerRelSym)<br>
+SYMBOL_RECORD(S_DEFRANGE_SUBFIELD_REGISTER, 0x1143, DefRangeSubfieldRegisterSym)<br>
+SYMBOL_RECORD(S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE, 0x1144, DefRangeFramePointerRelFullScopeSym)<br>
+SYMBOL_RECORD(S_DEFRANGE_REGISTER_REL, 0x1145, DefRangeRegisterRelSym)<br>
+SYMBOL_RECORD(S_BLOCK32 , 0x1103, BlockSym)<br>
+SYMBOL_RECORD(S_LABEL32 , 0x1105, LabelSym)<br>
+SYMBOL_RECORD(S_OBJNAME , 0x1101, ObjNameSym)<br>
+SYMBOL_RECORD(S_COMPILE2 , 0x1116, Compile2Sym)<br>
+SYMBOL_RECORD(S_COMPILE3 , 0x113c, Compile3Sym)<br>
+SYMBOL_RECORD(S_FRAMEPROC , 0x1012, FrameProcSym)<br>
+SYMBOL_RECORD(S_CALLSITEINFO , 0x1139, CallSiteInfoSym)<br>
+SYMBOL_RECORD(S_FILESTATIC , 0x1153, FileStaticSym)<br>
+SYMBOL_RECORD(S_HEAPALLOCSITE , 0x115e, HeapAllocationSiteSym)<br>
+SYMBOL_RECORD(S_FRAMECOOKIE , 0x113a, FrameCookieSym)<br>
+<br>
+SYMBOL_RECORD(S_CALLEES , 0x115a, CallerSym)<br>
+SYMBOL_RECORD_ALIAS(S_CALLERS , 0x115b, CalleeSym, CallerSym)<br>
+<br>
+SYMBOL_RECORD(S_UDT , 0x1108, UDTSym)<br>
+SYMBOL_RECORD_ALIAS(S_COBOLUDT , 0x1109, CobolUDT, UDTSym)<br>
+<br>
+SYMBOL_RECORD(S_BUILDINFO , 0x114c, BuildInfoSym)<br>
+SYMBOL_RECORD(S_BPREL32 , 0x110b, BPRelativeSym)<br>
+SYMBOL_RECORD(S_REGREL32 , 0x1111, RegRelativeSym)<br>
+<br>
+SYMBOL_RECORD(S_CONSTANT , 0x1107, ConstantSym)<br>
+SYMBOL_RECORD_ALIAS(S_MANCONSTANT , 0x112d, ManagedConstant, ConstantSym)<br>
+<br>
+SYMBOL_RECORD(S_LDATA32 , 0x110c, DataSym)<br>
+SYMBOL_RECORD_ALIAS(S_GDATA32 , 0x110d, GlobalData, DataSym)<br>
+SYMBOL_RECORD_ALIAS(S_LMANDATA , 0x111c, ManagedLocalData, DataSym)<br>
+SYMBOL_RECORD_ALIAS(S_GMANDATA , 0x111d, ManagedGlobalData, DataSym)<br>
+<br>
+SYMBOL_RECORD(S_LTHREAD32 , 0x1112, ThreadLocalDataSym)<br>
+SYMBOL_RECORD_ALIAS(S_GTHREAD32 , 0x1113, GlobalTLS, ThreadLocalDataSym)<br>
+<br>
+<br>
+#undef CV_SYMBOL<br>
+#undef SYMBOL_RECORD<br>
+#undef SYMBOL_RECORD_ALIAS<br>
<br>
Added: llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewTypes.def<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewTypes.def?rev=304248&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewTypes.def?rev=304248&view=auto</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewTypes.def (added)<br>
+++ llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewTypes.def Tue May 30 16:53:05 2017<br>
@@ -0,0 +1,251 @@<br>
+<br>
+//===-- CVLeafTypes.def - All CodeView leaf types ---------------*- C++ -*-===//<br>
+//<br>
+// The LLVM Compiler Infrastructure<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+//<br>
+// See LEAF_ENUM_e in cvinfo.h. This should match the constants there.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+<br>
+// If the type is known, then we have a record describing it in TypeRecord.h.<br>
+<br>
+#ifndef CV_TYPE<br>
+#define CV_TYPE(lf_ename, value)<br>
+#endif<br>
+<br>
+// If the type is known, then we have a record describing it in TypeRecord.h.<br>
+#ifndef TYPE_RECORD<br>
+#define TYPE_RECORD(lf_ename, value, name) CV_TYPE(lf_ename, value)<br>
+#endif<br>
+<br>
+#ifndef TYPE_RECORD_ALIAS<br>
+#define TYPE_RECORD_ALIAS(lf_ename, value, name, alias_name) \<br>
+ TYPE_RECORD(lf_ename, value, name)<br>
+#endif<br>
+<br>
+#ifndef MEMBER_RECORD<br>
+#define MEMBER_RECORD(lf_ename, value, name) TYPE_RECORD(lf_ename, value, name)<br>
+#endif<br>
+<br>
+#ifndef MEMBER_RECORD_ALIAS<br>
+#define MEMBER_RECORD_ALIAS(lf_ename, value, name, alias_name) \<br>
+ MEMBER_RECORD(lf_ename, value, name)<br>
+#endif<br>
+<br>
+TYPE_RECORD(LF_POINTER, 0x1002, Pointer)<br>
+TYPE_RECORD(LF_MODIFIER, 0x1001, Modifier)<br>
+TYPE_RECORD(LF_PROCEDURE, 0x1008, Procedure)<br>
+TYPE_RECORD(LF_MFUNCTION, 0x1009, MemberFunction)<br>
+TYPE_RECORD(LF_LABEL, 0x000e, Label)<br>
+TYPE_RECORD(LF_ARGLIST, 0x1201, ArgList)<br>
+<br>
+TYPE_RECORD(LF_FIELDLIST, 0x1203, FieldList)<br>
+<br>
+TYPE_RECORD(LF_ARRAY, 0x1503, Array)<br>
+TYPE_RECORD(LF_CLASS, 0x1504, Class)<br>
+TYPE_RECORD_ALIAS(LF_STRUCTURE, 0x1505, Struct, Class)<br>
+TYPE_RECORD_ALIAS(LF_INTERFACE, 0x1519, Interface, Class)<br>
+TYPE_RECORD(LF_UNION, 0x1506, Union)<br>
+TYPE_RECORD(LF_ENUM, 0x1507, Enum)<br>
+TYPE_RECORD(LF_TYPESERVER2, 0x1515, TypeServer2)<br>
+TYPE_RECORD(LF_VFTABLE, 0x151d, VFTable)<br>
+TYPE_RECORD(LF_VTSHAPE, 0x000a, VFTableShape)<br>
+<br>
+TYPE_RECORD(LF_BITFIELD, 0x1205, BitField)<br>
+<br>
+// Member type records. These are generally not length prefixed, and appear<br>
+// inside of a field list record.<br>
+MEMBER_RECORD(LF_BCLASS, 0x1400, BaseClass)<br>
+MEMBER_RECORD_ALIAS(LF_BINTERFACE, 0x151a, BaseInterface, BaseClass)<br>
+<br>
+MEMBER_RECORD(LF_VBCLASS, 0x1401, VirtualBaseClass)<br>
+MEMBER_RECORD_ALIAS(LF_IVBCLASS, 0x1402, IndirectVirtualBaseClass,<br>
+ VirtualBaseClass)<br>
+<br>
+MEMBER_RECORD(LF_VFUNCTAB, 0x1409, VFPtr)<br>
+MEMBER_RECORD(LF_STMEMBER, 0x150e, StaticDataMember)<br>
+MEMBER_RECORD(LF_METHOD, 0x150f, OverloadedMethod)<br>
+MEMBER_RECORD(LF_MEMBER, 0x150d, DataMember)<br>
+MEMBER_RECORD(LF_NESTTYPE, 0x1510, NestedType)<br>
+MEMBER_RECORD(LF_ONEMETHOD, 0x1511, OneMethod)<br>
+MEMBER_RECORD(LF_ENUMERATE, 0x1502, Enumerator)<br>
+MEMBER_RECORD(LF_INDEX, 0x1404, ListContinuation)<br>
+<br>
+// ID leaf records. Subsequent leaf types may be referenced from .debug$S.<br>
+TYPE_RECORD(LF_FUNC_ID, 0x1601, FuncId)<br>
+TYPE_RECORD(LF_MFUNC_ID, 0x1602, MemberFuncId)<br>
+TYPE_RECORD(LF_BUILDINFO, 0x1603, BuildInfo)<br>
+TYPE_RECORD(LF_SUBSTR_LIST, 0x1604, StringList)<br>
+TYPE_RECORD(LF_STRING_ID, 0x1605, StringId)<br>
+TYPE_RECORD(LF_UDT_SRC_LINE, 0x1606, UdtSourceLine)<br>
+TYPE_RECORD(LF_UDT_MOD_SRC_LINE, 0x1607, UdtModSourceLine)<br>
+<br>
+<br>
+TYPE_RECORD(LF_METHODLIST, 0x1206, MethodOverloadList)<br>
+<br>
+<br>
+// 16 bit type records.<br>
+CV_TYPE(LF_MODIFIER_16t, 0x0001)<br>
+CV_TYPE(LF_POINTER_16t, 0x0002)<br>
+CV_TYPE(LF_ARRAY_16t, 0x0003)<br>
+CV_TYPE(LF_CLASS_16t, 0x0004)<br>
+CV_TYPE(LF_STRUCTURE_16t, 0x0005)<br>
+CV_TYPE(LF_UNION_16t, 0x0006)<br>
+CV_TYPE(LF_ENUM_16t, 0x0007)<br>
+CV_TYPE(LF_PROCEDURE_16t, 0x0008)<br>
+CV_TYPE(LF_MFUNCTION_16t, 0x0009)<br>
+CV_TYPE(LF_COBOL0_16t, 0x000b)<br>
+CV_TYPE(LF_COBOL1, 0x000c)<br>
+CV_TYPE(LF_BARRAY_16t, 0x000d)<br>
+CV_TYPE(LF_NULLLEAF, 0x000f) // LF_NULL<br>
+CV_TYPE(LF_NOTTRAN, 0x0010)<br>
+CV_TYPE(LF_DIMARRAY_16t, 0x0011)<br>
+CV_TYPE(LF_VFTPATH_16t, 0x0012)<br>
+CV_TYPE(LF_PRECOMP_16t, 0x0013)<br>
+CV_TYPE(LF_ENDPRECOMP, 0x0014)<br>
+CV_TYPE(LF_OEM_16t, 0x0015)<br>
+CV_TYPE(LF_TYPESERVER_ST, 0x0016)<br>
+<br>
+CV_TYPE(LF_SKIP_16t, 0x0200)<br>
+CV_TYPE(LF_ARGLIST_16t, 0x0201)<br>
+CV_TYPE(LF_DEFARG_16t, 0x0202)<br>
+CV_TYPE(LF_LIST, 0x0203)<br>
+CV_TYPE(LF_FIELDLIST_16t, 0x0204)<br>
+CV_TYPE(LF_DERIVED_16t, 0x0205)<br>
+CV_TYPE(LF_BITFIELD_16t, 0x0206)<br>
+CV_TYPE(LF_METHODLIST_16t, 0x0207)<br>
+CV_TYPE(LF_DIMCONU_16t, 0x0208)<br>
+CV_TYPE(LF_DIMCONLU_16t, 0x0209)<br>
+CV_TYPE(LF_DIMVARU_16t, 0x020a)<br>
+CV_TYPE(LF_DIMVARLU_16t, 0x020b)<br>
+CV_TYPE(LF_REFSYM, 0x020c)<br>
+<br>
+// 16 bit member types. Generally not length prefixed.<br>
+CV_TYPE(LF_BCLASS_16t, 0x0400)<br>
+CV_TYPE(LF_VBCLASS_16t, 0x0401)<br>
+CV_TYPE(LF_IVBCLASS_16t, 0x0402)<br>
+CV_TYPE(LF_ENUMERATE_ST, 0x0403)<br>
+CV_TYPE(LF_FRIENDFCN_16t, 0x0404)<br>
+CV_TYPE(LF_INDEX_16t, 0x0405)<br>
+CV_TYPE(LF_MEMBER_16t, 0x0406)<br>
+CV_TYPE(LF_STMEMBER_16t, 0x0407)<br>
+CV_TYPE(LF_METHOD_16t, 0x0408)<br>
+CV_TYPE(LF_NESTTYPE_16t, 0x0409)<br>
+CV_TYPE(LF_VFUNCTAB_16t, 0x040a)<br>
+CV_TYPE(LF_FRIENDCLS_16t, 0x040b)<br>
+CV_TYPE(LF_ONEMETHOD_16t, 0x040c)<br>
+CV_TYPE(LF_VFUNCOFF_16t, 0x040d)<br>
+<br>
+CV_TYPE(LF_TI16_MAX, 0x1000)<br>
+<br>
+CV_TYPE(LF_ARRAY_ST, 0x1003)<br>
+CV_TYPE(LF_CLASS_ST, 0x1004)<br>
+CV_TYPE(LF_STRUCTURE_ST, 0x1005)<br>
+CV_TYPE(LF_UNION_ST, 0x1006)<br>
+CV_TYPE(LF_ENUM_ST, 0x1007)<br>
+CV_TYPE(LF_COBOL0, 0x100a)<br>
+CV_TYPE(LF_BARRAY, 0x100b)<br>
+CV_TYPE(LF_DIMARRAY_ST, 0x100c)<br>
+CV_TYPE(LF_VFTPATH, 0x100d)<br>
+CV_TYPE(LF_PRECOMP_ST, 0x100e)<br>
+CV_TYPE(LF_OEM, 0x100f)<br>
+CV_TYPE(LF_ALIAS_ST, 0x1010)<br>
+CV_TYPE(LF_OEM2, 0x1011)<br>
+<br>
+CV_TYPE(LF_SKIP, 0x1200)<br>
+CV_TYPE(LF_DEFARG_ST, 0x1202)<br>
+CV_TYPE(LF_DERIVED, 0x1204)<br>
+CV_TYPE(LF_DIMCONU, 0x1207)<br>
+CV_TYPE(LF_DIMCONLU, 0x1208)<br>
+CV_TYPE(LF_DIMVARU, 0x1209)<br>
+CV_TYPE(LF_DIMVARLU, 0x120a)<br>
+<br>
+// Member type records. These are generally not length prefixed, and appear<br>
+// inside of a field list record.<br>
+CV_TYPE(LF_FRIENDFCN_ST, 0x1403)<br>
+CV_TYPE(LF_MEMBER_ST, 0x1405)<br>
+CV_TYPE(LF_STMEMBER_ST, 0x1406)<br>
+CV_TYPE(LF_METHOD_ST, 0x1407)<br>
+CV_TYPE(LF_NESTTYPE_ST, 0x1408)<br>
+CV_TYPE(LF_FRIENDCLS, 0x140a)<br>
+CV_TYPE(LF_ONEMETHOD_ST, 0x140b)<br>
+CV_TYPE(LF_VFUNCOFF, 0x140c)<br>
+CV_TYPE(LF_NESTTYPEEX_ST, 0x140d)<br>
+CV_TYPE(LF_MEMBERMODIFY_ST, 0x140e)<br>
+CV_TYPE(LF_MANAGED_ST, 0x140f)<br>
+<br>
+CV_TYPE(LF_ST_MAX, 0x1500)<br>
+CV_TYPE(LF_TYPESERVER, 0x1501)<br>
+CV_TYPE(LF_DIMARRAY, 0x1508)<br>
+CV_TYPE(LF_PRECOMP, 0x1509)<br>
+CV_TYPE(LF_ALIAS, 0x150a)<br>
+CV_TYPE(LF_DEFARG, 0x150b)<br>
+CV_TYPE(LF_FRIENDFCN, 0x150c)<br>
+CV_TYPE(LF_NESTTYPEEX, 0x1512)<br>
+CV_TYPE(LF_MEMBERMODIFY, 0x1513)<br>
+CV_TYPE(LF_MANAGED, 0x1514)<br>
+CV_TYPE(LF_STRIDED_ARRAY, 0x1516)<br>
+CV_TYPE(LF_HLSL, 0x1517)<br>
+CV_TYPE(LF_MODIFIER_EX, 0x1518)<br>
+CV_TYPE(LF_VECTOR, 0x151b)<br>
+CV_TYPE(LF_MATRIX, 0x151c)<br>
+<br>
+// ID leaf records. Subsequent leaf types may be referenced from .debug$S.<br>
+<br>
+// Numeric leaf types. These are generally contained in other records, and not<br>
+// encountered in the main type stream.<br>
+<br>
+CV_TYPE(LF_NUMERIC, 0x8000)<br>
+CV_TYPE(LF_CHAR, 0x8000)<br>
+CV_TYPE(LF_SHORT, 0x8001)<br>
+CV_TYPE(LF_USHORT, 0x8002)<br>
+CV_TYPE(LF_LONG, 0x8003)<br>
+CV_TYPE(LF_ULONG, 0x8004)<br>
+CV_TYPE(LF_REAL32, 0x8005)<br>
+CV_TYPE(LF_REAL64, 0x8006)<br>
+CV_TYPE(LF_REAL80, 0x8007)<br>
+CV_TYPE(LF_REAL128, 0x8008)<br>
+CV_TYPE(LF_QUADWORD, 0x8009)<br>
+CV_TYPE(LF_UQUADWORD, 0x800a)<br>
+CV_TYPE(LF_REAL48, 0x800b)<br>
+CV_TYPE(LF_COMPLEX32, 0x800c)<br>
+CV_TYPE(LF_COMPLEX64, 0x800d)<br>
+CV_TYPE(LF_COMPLEX80, 0x800e)<br>
+CV_TYPE(LF_COMPLEX128, 0x800f)<br>
+CV_TYPE(LF_VARSTRING, 0x8010)<br>
+CV_TYPE(LF_OCTWORD, 0x8017)<br>
+CV_TYPE(LF_UOCTWORD, 0x8018)<br>
+CV_TYPE(LF_DECIMAL, 0x8019)<br>
+CV_TYPE(LF_DATE, 0x801a)<br>
+CV_TYPE(LF_UTF8STRING, 0x801b)<br>
+CV_TYPE(LF_REAL16, 0x801c)<br>
+<br>
+// Padding bytes. These are emitted into alignment bytes in the type stream.<br>
+<br>
+CV_TYPE(LF_PAD0, 0xf0)<br>
+CV_TYPE(LF_PAD1, 0xf1)<br>
+CV_TYPE(LF_PAD2, 0xf2)<br>
+CV_TYPE(LF_PAD3, 0xf3)<br>
+CV_TYPE(LF_PAD4, 0xf4)<br>
+CV_TYPE(LF_PAD5, 0xf5)<br>
+CV_TYPE(LF_PAD6, 0xf6)<br>
+CV_TYPE(LF_PAD7, 0xf7)<br>
+CV_TYPE(LF_PAD8, 0xf8)<br>
+CV_TYPE(LF_PAD9, 0xf9)<br>
+CV_TYPE(LF_PAD10, 0xfa)<br>
+CV_TYPE(LF_PAD11, 0xfb)<br>
+CV_TYPE(LF_PAD12, 0xfc)<br>
+CV_TYPE(LF_PAD13, 0xfd)<br>
+CV_TYPE(LF_PAD14, 0xfe)<br>
+CV_TYPE(LF_PAD15, 0xff)<br>
+<br>
+#undef CV_TYPE<br>
+#undef TYPE_RECORD<br>
+#undef TYPE_RECORD_ALIAS<br>
+#undef MEMBER_RECORD<br>
+#undef MEMBER_RECORD_ALIAS<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h Tue May 30 16:53:05 2017<br>
@@ -54,7 +54,7 @@ public:<br>
return visitKnownRecordImpl(CVR, Record); \<br>
}<br>
#define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"<br>
<br>
private:<br>
template <typename T> Error visitKnownRecordImpl(CVSymbol &CVR, T &Record) {<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolRecordMapping.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolRecordMapping.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolRecordMapping.h?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolRecordMapping.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolRecordMapping.h Tue May 30 16:53:05 2017<br>
@@ -29,7 +29,7 @@ public:<br>
#define SYMBOL_RECORD(EnumName, EnumVal, Name) \<br>
Error visitKnownRecord(CVSymbol &CVR, Name &Record) override;<br>
#define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"<br>
<br>
private:<br>
Optional<SymbolKind> Kind;<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolSerializer.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolSerializer.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolSerializer.h?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolSerializer.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolSerializer.h Tue May 30 16:53:05 2017<br>
@@ -55,7 +55,7 @@ public:<br>
return visitKnownRecordImpl(CVR, Record); \<br>
}<br>
#define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"<br>
<br>
private:<br>
template <typename RecordKind><br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h Tue May 30 16:53:05 2017<br>
@@ -59,7 +59,7 @@ public:<br>
return Error::success(); \<br>
}<br>
#define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"<br>
<br>
private:<br>
std::vector<SymbolVisitorCallbacks *> Pipeline;<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h Tue May 30 16:53:05 2017<br>
@@ -39,7 +39,7 @@ public:<br>
return Error::success(); \<br>
}<br>
#define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"<br>
};<br>
<br>
} // end namespace codeview<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h Tue May 30 16:53:05 2017<br>
@@ -39,7 +39,7 @@ public:<br>
Error visitKnownMember(CVMemberRecord &CVR, Name##Record &Record) override;<br>
#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"<br>
<br>
private:<br>
StringRef getTypeName(TypeIndex Index) const;<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDeserializer.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDeserializer.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDeserializer.h?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDeserializer.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDeserializer.h Tue May 30 16:53:05 2017<br>
@@ -41,6 +41,7 @@ public:<br>
TypeDeserializer() = default;<br>
<br>
template <typename T> static Error deserializeAs(CVType &CVT, T &Record) {<br>
+ Record.Kind = static_cast<TypeRecordKind>(CVT.kind());<br>
MappingInfo I(CVT.content());<br>
if (auto EC = I.Mapping.visitTypeBegin(CVT))<br>
return EC;<br>
@@ -75,7 +76,7 @@ public:<br>
#define MEMBER_RECORD(EnumName, EnumVal, Name)<br>
#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"<br>
<br>
private:<br>
template <typename RecordType><br>
@@ -127,7 +128,7 @@ public:<br>
}<br>
#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"<br>
<br>
private:<br>
template <typename RecordType><br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h Tue May 30 16:53:05 2017<br>
@@ -58,7 +58,7 @@ public:<br>
Error visitKnownMember(CVMemberRecord &CVR, Name##Record &Record) override;<br>
#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"<br>
<br>
private:<br>
void printMemberAttributes(MemberAttributes Attrs);<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecord.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecord.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecord.h?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecord.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecord.h Tue May 30 16:53:05 2017<br>
@@ -123,13 +123,13 @@ protected:<br>
public:<br>
TypeRecordKind getKind() const { return Kind; }<br>
<br>
-private:<br>
TypeRecordKind Kind;<br>
};<br>
<br>
// LF_MODIFIER<br>
class ModifierRecord : public TypeRecord {<br>
public:<br>
+ ModifierRecord() = default;<br>
explicit ModifierRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
ModifierRecord(TypeIndex ModifiedType, ModifierOptions Modifiers)<br>
: TypeRecord(TypeRecordKind::Modifier), ModifiedType(ModifiedType),<br>
@@ -145,6 +145,7 @@ public:<br>
// LF_PROCEDURE<br>
class ProcedureRecord : public TypeRecord {<br>
public:<br>
+ ProcedureRecord() = default;<br>
explicit ProcedureRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
ProcedureRecord(TypeIndex ReturnType, CallingConvention CallConv,<br>
FunctionOptions Options, uint16_t ParameterCount,<br>
@@ -169,6 +170,7 @@ public:<br>
// LF_MFUNCTION<br>
class MemberFunctionRecord : public TypeRecord {<br>
public:<br>
+ MemberFunctionRecord() = default;<br>
explicit MemberFunctionRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
<br>
MemberFunctionRecord(TypeIndex ReturnType, TypeIndex ClassType,<br>
@@ -203,6 +205,7 @@ public:<br>
// LF_LABEL<br>
class LabelRecord : public TypeRecord {<br>
public:<br>
+ LabelRecord() = default;<br>
explicit LabelRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
<br>
LabelRecord(LabelType Mode) : TypeRecord(TypeRecordKind::Label), Mode(Mode) {}<br>
@@ -213,6 +216,7 @@ public:<br>
// LF_MFUNC_ID<br>
class MemberFuncIdRecord : public TypeRecord {<br>
public:<br>
+ MemberFuncIdRecord() = default;<br>
explicit MemberFuncIdRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
MemberFuncIdRecord(TypeIndex ClassType, TypeIndex FunctionType,<br>
StringRef Name)<br>
@@ -230,6 +234,7 @@ public:<br>
// LF_ARGLIST<br>
class ArgListRecord : public TypeRecord {<br>
public:<br>
+ ArgListRecord() = default;<br>
explicit ArgListRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
<br>
ArgListRecord(TypeRecordKind Kind, ArrayRef<TypeIndex> Indices)<br>
@@ -243,6 +248,7 @@ public:<br>
// LF_SUBSTR_LIST<br>
class StringListRecord : public TypeRecord {<br>
public:<br>
+ StringListRecord() = default;<br>
explicit StringListRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
<br>
StringListRecord(TypeRecordKind Kind, ArrayRef<TypeIndex> Indices)<br>
@@ -267,6 +273,7 @@ public:<br>
static const uint32_t PointerSizeShift = 13;<br>
static const uint32_t PointerSizeMask = 0xFF;<br>
<br>
+ PointerRecord() = default;<br>
explicit PointerRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
<br>
PointerRecord(TypeIndex ReferentType, uint32_t Attrs)<br>
@@ -341,6 +348,7 @@ private:<br>
// LF_NESTTYPE<br>
class NestedTypeRecord : public TypeRecord {<br>
public:<br>
+ NestedTypeRecord() = default;<br>
explicit NestedTypeRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
NestedTypeRecord(TypeIndex Type, StringRef Name)<br>
: TypeRecord(TypeRecordKind::NestedType), Type(Type), Name(Name) {}<br>
@@ -355,6 +363,7 @@ public:<br>
// LF_FIELDLIST<br>
class FieldListRecord : public TypeRecord {<br>
public:<br>
+ FieldListRecord() = default;<br>
explicit FieldListRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
explicit FieldListRecord(ArrayRef<uint8_t> Data)<br>
: TypeRecord(TypeRecordKind::FieldList), Data(Data) {}<br>
@@ -365,6 +374,7 @@ public:<br>
// LF_ARRAY<br>
class ArrayRecord : public TypeRecord {<br>
public:<br>
+ ArrayRecord() = default;<br>
explicit ArrayRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
ArrayRecord(TypeIndex ElementType, TypeIndex IndexType, uint64_t Size,<br>
StringRef Name)<br>
@@ -384,6 +394,7 @@ public:<br>
<br>
class TagRecord : public TypeRecord {<br>
protected:<br>
+ TagRecord() = default;<br>
explicit TagRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
TagRecord(TypeRecordKind Kind, uint16_t MemberCount, ClassOptions Options,<br>
TypeIndex FieldList, StringRef Name, StringRef UniqueName)<br>
@@ -416,6 +427,7 @@ public:<br>
// LF_CLASS, LF_STRUCTURE, LF_INTERFACE<br>
class ClassRecord : public TagRecord {<br>
public:<br>
+ ClassRecord() = default;<br>
explicit ClassRecord(TypeRecordKind Kind) : TagRecord(Kind) {}<br>
ClassRecord(TypeRecordKind Kind, uint16_t MemberCount, ClassOptions Options,<br>
TypeIndex FieldList, TypeIndex DerivationList,<br>
@@ -447,6 +459,7 @@ public:<br>
<br>
// LF_UNION<br>
struct UnionRecord : public TagRecord {<br>
+ UnionRecord() = default;<br>
explicit UnionRecord(TypeRecordKind Kind) : TagRecord(Kind) {}<br>
UnionRecord(uint16_t MemberCount, ClassOptions Options, TypeIndex FieldList,<br>
uint64_t Size, StringRef Name, StringRef UniqueName)<br>
@@ -468,6 +481,7 @@ struct UnionRecord : public TagRecord {<br>
// LF_ENUM<br>
class EnumRecord : public TagRecord {<br>
public:<br>
+ EnumRecord() = default;<br>
explicit EnumRecord(TypeRecordKind Kind) : TagRecord(Kind) {}<br>
EnumRecord(uint16_t MemberCount, ClassOptions Options, TypeIndex FieldList,<br>
StringRef Name, StringRef UniqueName, TypeIndex UnderlyingType)<br>
@@ -482,6 +496,7 @@ public:<br>
// LF_BITFIELD<br>
class BitFieldRecord : public TypeRecord {<br>
public:<br>
+ BitFieldRecord() = default;<br>
explicit BitFieldRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
BitFieldRecord(TypeIndex Type, uint8_t BitSize, uint8_t BitOffset)<br>
: TypeRecord(TypeRecordKind::BitField), Type(Type), BitSize(BitSize),<br>
@@ -498,6 +513,7 @@ public:<br>
// LF_VTSHAPE<br>
class VFTableShapeRecord : public TypeRecord {<br>
public:<br>
+ VFTableShapeRecord() = default;<br>
explicit VFTableShapeRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
explicit VFTableShapeRecord(ArrayRef<VFTableSlotKind> Slots)<br>
: TypeRecord(TypeRecordKind::VFTableShape), SlotsRef(Slots) {}<br>
@@ -518,6 +534,7 @@ public:<br>
// LF_TYPESERVER2<br>
class TypeServer2Record : public TypeRecord {<br>
public:<br>
+ TypeServer2Record() = default;<br>
explicit TypeServer2Record(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
TypeServer2Record(StringRef Guid, uint32_t Age, StringRef Name)<br>
: TypeRecord(TypeRecordKind::TypeServer2), Guid(Guid), Age(Age),<br>
@@ -537,6 +554,7 @@ public:<br>
// LF_STRING_ID<br>
class StringIdRecord : public TypeRecord {<br>
public:<br>
+ StringIdRecord() = default;<br>
explicit StringIdRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
StringIdRecord(TypeIndex Id, StringRef String)<br>
: TypeRecord(TypeRecordKind::StringId), Id(Id), String(String) {}<br>
@@ -551,6 +569,7 @@ public:<br>
// LF_FUNC_ID<br>
class FuncIdRecord : public TypeRecord {<br>
public:<br>
+ FuncIdRecord() = default;<br>
explicit FuncIdRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
FuncIdRecord(TypeIndex ParentScope, TypeIndex FunctionType, StringRef Name)<br>
: TypeRecord(TypeRecordKind::FuncId), ParentScope(ParentScope),<br>
@@ -570,6 +589,7 @@ public:<br>
// LF_UDT_SRC_LINE<br>
class UdtSourceLineRecord : public TypeRecord {<br>
public:<br>
+ UdtSourceLineRecord() = default;<br>
explicit UdtSourceLineRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
UdtSourceLineRecord(TypeIndex UDT, TypeIndex SourceFile, uint32_t LineNumber)<br>
: TypeRecord(TypeRecordKind::UdtSourceLine), UDT(UDT),<br>
@@ -587,6 +607,7 @@ public:<br>
// LF_UDT_MOD_SRC_LINE<br>
class UdtModSourceLineRecord : public TypeRecord {<br>
public:<br>
+ UdtModSourceLineRecord() = default;<br>
explicit UdtModSourceLineRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
UdtModSourceLineRecord(TypeIndex UDT, TypeIndex SourceFile,<br>
uint32_t LineNumber, uint16_t Module)<br>
@@ -607,6 +628,7 @@ public:<br>
// LF_BUILDINFO<br>
class BuildInfoRecord : public TypeRecord {<br>
public:<br>
+ BuildInfoRecord() = default;<br>
explicit BuildInfoRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
BuildInfoRecord(ArrayRef<TypeIndex> ArgIndices)<br>
: TypeRecord(TypeRecordKind::BuildInfo),<br>
@@ -619,6 +641,7 @@ public:<br>
// LF_VFTABLE<br>
class VFTableRecord : public TypeRecord {<br>
public:<br>
+ VFTableRecord() = default;<br>
explicit VFTableRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
VFTableRecord(TypeIndex CompleteClass, TypeIndex OverriddenVFTable,<br>
uint32_t VFPtrOffset, StringRef Name,<br>
@@ -646,7 +669,7 @@ public:<br>
// LF_ONEMETHOD<br>
class OneMethodRecord : public TypeRecord {<br>
public:<br>
- OneMethodRecord() : TypeRecord(TypeRecordKind::OneMethod) {}<br>
+ OneMethodRecord() = default;<br>
explicit OneMethodRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
OneMethodRecord(TypeIndex Type, MemberAttributes Attrs, int32_t VFTableOffset,<br>
StringRef Name)<br>
@@ -678,6 +701,7 @@ public:<br>
// LF_METHODLIST<br>
class MethodOverloadListRecord : public TypeRecord {<br>
public:<br>
+ MethodOverloadListRecord() = default;<br>
explicit MethodOverloadListRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
MethodOverloadListRecord(ArrayRef<OneMethodRecord> Methods)<br>
: TypeRecord(TypeRecordKind::MethodOverloadList), Methods(Methods) {}<br>
@@ -689,6 +713,7 @@ public:<br>
/// For method overload sets. LF_METHOD<br>
class OverloadedMethodRecord : public TypeRecord {<br>
public:<br>
+ OverloadedMethodRecord() = default;<br>
explicit OverloadedMethodRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
OverloadedMethodRecord(uint16_t NumOverloads, TypeIndex MethodList,<br>
StringRef Name)<br>
@@ -706,6 +731,7 @@ public:<br>
// LF_MEMBER<br>
class DataMemberRecord : public TypeRecord {<br>
public:<br>
+ DataMemberRecord() = default;<br>
explicit DataMemberRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
DataMemberRecord(MemberAttributes Attrs, TypeIndex Type, uint64_t Offset,<br>
StringRef Name)<br>
@@ -730,6 +756,7 @@ public:<br>
// LF_STMEMBER<br>
class StaticDataMemberRecord : public TypeRecord {<br>
public:<br>
+ StaticDataMemberRecord() = default;<br>
explicit StaticDataMemberRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
StaticDataMemberRecord(MemberAttributes Attrs, TypeIndex Type, StringRef Name)<br>
: TypeRecord(TypeRecordKind::StaticDataMember), Attrs(Attrs), Type(Type),<br>
@@ -750,6 +777,7 @@ public:<br>
// LF_ENUMERATE<br>
class EnumeratorRecord : public TypeRecord {<br>
public:<br>
+ EnumeratorRecord() = default;<br>
explicit EnumeratorRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
EnumeratorRecord(MemberAttributes Attrs, APSInt Value, StringRef Name)<br>
: TypeRecord(TypeRecordKind::Enumerator), Attrs(Attrs),<br>
@@ -770,6 +798,7 @@ public:<br>
// LF_VFUNCTAB<br>
class VFPtrRecord : public TypeRecord {<br>
public:<br>
+ VFPtrRecord() = default;<br>
explicit VFPtrRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
VFPtrRecord(TypeIndex Type)<br>
: TypeRecord(TypeRecordKind::VFPtr), Type(Type) {}<br>
@@ -782,6 +811,7 @@ public:<br>
// LF_BCLASS, LF_BINTERFACE<br>
class BaseClassRecord : public TypeRecord {<br>
public:<br>
+ BaseClassRecord() = default;<br>
explicit BaseClassRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
BaseClassRecord(MemberAttributes Attrs, TypeIndex Type, uint64_t Offset)<br>
: TypeRecord(TypeRecordKind::BaseClass), Attrs(Attrs), Type(Type),<br>
@@ -802,6 +832,7 @@ public:<br>
// LF_VBCLASS, LF_IVBCLASS<br>
class VirtualBaseClassRecord : public TypeRecord {<br>
public:<br>
+ VirtualBaseClassRecord() = default;<br>
explicit VirtualBaseClassRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
VirtualBaseClassRecord(TypeRecordKind Kind, MemberAttributes Attrs,<br>
TypeIndex BaseType, TypeIndex VBPtrType,<br>
@@ -831,6 +862,7 @@ public:<br>
/// together. The first will end in an LF_INDEX record that points to the next.<br>
class ListContinuationRecord : public TypeRecord {<br>
public:<br>
+ ListContinuationRecord() = default;<br>
explicit ListContinuationRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
ListContinuationRecord(TypeIndex ContinuationIndex)<br>
: TypeRecord(TypeRecordKind::ListContinuation),<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h Tue May 30 16:53:05 2017<br>
@@ -37,7 +37,7 @@ public:<br>
Error visitKnownMember(CVMemberRecord &CVR, Name##Record &Record) override;<br>
#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"<br>
<br>
private:<br>
Optional<TypeLeafKind> TypeKind;<br>
<br>
Removed: llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecords.def<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecords.def?rev=304247&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecords.def?rev=304247&view=auto</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecords.def (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecords.def (removed)<br>
@@ -1,251 +0,0 @@<br>
-<br>
-//===-- CVLeafTypes.def - All CodeView leaf types ---------------*- C++ -*-===//<br>
-//<br>
-// The LLVM Compiler Infrastructure<br>
-//<br>
-// This file is distributed under the University of Illinois Open Source<br>
-// License. See LICENSE.TXT for details.<br>
-//<br>
-//===----------------------------------------------------------------------===//<br>
-//<br>
-// See LEAF_ENUM_e in cvinfo.h. This should match the constants there.<br>
-//<br>
-//===----------------------------------------------------------------------===//<br>
-<br>
-// If the type is known, then we have a record describing it in TypeRecord.h.<br>
-<br>
-#ifndef CV_TYPE<br>
-#define CV_TYPE(lf_ename, value)<br>
-#endif<br>
-<br>
-// If the type is known, then we have a record describing it in TypeRecord.h.<br>
-#ifndef TYPE_RECORD<br>
-#define TYPE_RECORD(lf_ename, value, name) CV_TYPE(lf_ename, value)<br>
-#endif<br>
-<br>
-#ifndef TYPE_RECORD_ALIAS<br>
-#define TYPE_RECORD_ALIAS(lf_ename, value, name, alias_name) \<br>
- TYPE_RECORD(lf_ename, value, name)<br>
-#endif<br>
-<br>
-#ifndef MEMBER_RECORD<br>
-#define MEMBER_RECORD(lf_ename, value, name) TYPE_RECORD(lf_ename, value, name)<br>
-#endif<br>
-<br>
-#ifndef MEMBER_RECORD_ALIAS<br>
-#define MEMBER_RECORD_ALIAS(lf_ename, value, name, alias_name) \<br>
- MEMBER_RECORD(lf_ename, value, name)<br>
-#endif<br>
-<br>
-TYPE_RECORD(LF_POINTER, 0x1002, Pointer)<br>
-TYPE_RECORD(LF_MODIFIER, 0x1001, Modifier)<br>
-TYPE_RECORD(LF_PROCEDURE, 0x1008, Procedure)<br>
-TYPE_RECORD(LF_MFUNCTION, 0x1009, MemberFunction)<br>
-TYPE_RECORD(LF_LABEL, 0x000e, Label)<br>
-TYPE_RECORD(LF_ARGLIST, 0x1201, ArgList)<br>
-<br>
-TYPE_RECORD(LF_FIELDLIST, 0x1203, FieldList)<br>
-<br>
-TYPE_RECORD(LF_ARRAY, 0x1503, Array)<br>
-TYPE_RECORD(LF_CLASS, 0x1504, Class)<br>
-TYPE_RECORD_ALIAS(LF_STRUCTURE, 0x1505, Struct, Class)<br>
-TYPE_RECORD_ALIAS(LF_INTERFACE, 0x1519, Interface, Class)<br>
-TYPE_RECORD(LF_UNION, 0x1506, Union)<br>
-TYPE_RECORD(LF_ENUM, 0x1507, Enum)<br>
-TYPE_RECORD(LF_TYPESERVER2, 0x1515, TypeServer2)<br>
-TYPE_RECORD(LF_VFTABLE, 0x151d, VFTable)<br>
-TYPE_RECORD(LF_VTSHAPE, 0x000a, VFTableShape)<br>
-<br>
-TYPE_RECORD(LF_BITFIELD, 0x1205, BitField)<br>
-<br>
-// Member type records. These are generally not length prefixed, and appear<br>
-// inside of a field list record.<br>
-MEMBER_RECORD(LF_BCLASS, 0x1400, BaseClass)<br>
-MEMBER_RECORD_ALIAS(LF_BINTERFACE, 0x151a, BaseInterface, BaseClass)<br>
-<br>
-MEMBER_RECORD(LF_VBCLASS, 0x1401, VirtualBaseClass)<br>
-MEMBER_RECORD_ALIAS(LF_IVBCLASS, 0x1402, IndirectVirtualBaseClass,<br>
- VirtualBaseClass)<br>
-<br>
-MEMBER_RECORD(LF_VFUNCTAB, 0x1409, VFPtr)<br>
-MEMBER_RECORD(LF_STMEMBER, 0x150e, StaticDataMember)<br>
-MEMBER_RECORD(LF_METHOD, 0x150f, OverloadedMethod)<br>
-MEMBER_RECORD(LF_MEMBER, 0x150d, DataMember)<br>
-MEMBER_RECORD(LF_NESTTYPE, 0x1510, NestedType)<br>
-MEMBER_RECORD(LF_ONEMETHOD, 0x1511, OneMethod)<br>
-MEMBER_RECORD(LF_ENUMERATE, 0x1502, Enumerator)<br>
-MEMBER_RECORD(LF_INDEX, 0x1404, ListContinuation)<br>
-<br>
-// ID leaf records. Subsequent leaf types may be referenced from .debug$S.<br>
-TYPE_RECORD(LF_FUNC_ID, 0x1601, FuncId)<br>
-TYPE_RECORD(LF_MFUNC_ID, 0x1602, MemberFuncId)<br>
-TYPE_RECORD(LF_BUILDINFO, 0x1603, BuildInfo)<br>
-TYPE_RECORD(LF_SUBSTR_LIST, 0x1604, StringList)<br>
-TYPE_RECORD(LF_STRING_ID, 0x1605, StringId)<br>
-TYPE_RECORD(LF_UDT_SRC_LINE, 0x1606, UdtSourceLine)<br>
-TYPE_RECORD(LF_UDT_MOD_SRC_LINE, 0x1607, UdtModSourceLine)<br>
-<br>
-<br>
-TYPE_RECORD(LF_METHODLIST, 0x1206, MethodOverloadList)<br>
-<br>
-<br>
-// 16 bit type records.<br>
-CV_TYPE(LF_MODIFIER_16t, 0x0001)<br>
-CV_TYPE(LF_POINTER_16t, 0x0002)<br>
-CV_TYPE(LF_ARRAY_16t, 0x0003)<br>
-CV_TYPE(LF_CLASS_16t, 0x0004)<br>
-CV_TYPE(LF_STRUCTURE_16t, 0x0005)<br>
-CV_TYPE(LF_UNION_16t, 0x0006)<br>
-CV_TYPE(LF_ENUM_16t, 0x0007)<br>
-CV_TYPE(LF_PROCEDURE_16t, 0x0008)<br>
-CV_TYPE(LF_MFUNCTION_16t, 0x0009)<br>
-CV_TYPE(LF_COBOL0_16t, 0x000b)<br>
-CV_TYPE(LF_COBOL1, 0x000c)<br>
-CV_TYPE(LF_BARRAY_16t, 0x000d)<br>
-CV_TYPE(LF_NULLLEAF, 0x000f) // LF_NULL<br>
-CV_TYPE(LF_NOTTRAN, 0x0010)<br>
-CV_TYPE(LF_DIMARRAY_16t, 0x0011)<br>
-CV_TYPE(LF_VFTPATH_16t, 0x0012)<br>
-CV_TYPE(LF_PRECOMP_16t, 0x0013)<br>
-CV_TYPE(LF_ENDPRECOMP, 0x0014)<br>
-CV_TYPE(LF_OEM_16t, 0x0015)<br>
-CV_TYPE(LF_TYPESERVER_ST, 0x0016)<br>
-<br>
-CV_TYPE(LF_SKIP_16t, 0x0200)<br>
-CV_TYPE(LF_ARGLIST_16t, 0x0201)<br>
-CV_TYPE(LF_DEFARG_16t, 0x0202)<br>
-CV_TYPE(LF_LIST, 0x0203)<br>
-CV_TYPE(LF_FIELDLIST_16t, 0x0204)<br>
-CV_TYPE(LF_DERIVED_16t, 0x0205)<br>
-CV_TYPE(LF_BITFIELD_16t, 0x0206)<br>
-CV_TYPE(LF_METHODLIST_16t, 0x0207)<br>
-CV_TYPE(LF_DIMCONU_16t, 0x0208)<br>
-CV_TYPE(LF_DIMCONLU_16t, 0x0209)<br>
-CV_TYPE(LF_DIMVARU_16t, 0x020a)<br>
-CV_TYPE(LF_DIMVARLU_16t, 0x020b)<br>
-CV_TYPE(LF_REFSYM, 0x020c)<br>
-<br>
-// 16 bit member types. Generally not length prefixed.<br>
-CV_TYPE(LF_BCLASS_16t, 0x0400)<br>
-CV_TYPE(LF_VBCLASS_16t, 0x0401)<br>
-CV_TYPE(LF_IVBCLASS_16t, 0x0402)<br>
-CV_TYPE(LF_ENUMERATE_ST, 0x0403)<br>
-CV_TYPE(LF_FRIENDFCN_16t, 0x0404)<br>
-CV_TYPE(LF_INDEX_16t, 0x0405)<br>
-CV_TYPE(LF_MEMBER_16t, 0x0406)<br>
-CV_TYPE(LF_STMEMBER_16t, 0x0407)<br>
-CV_TYPE(LF_METHOD_16t, 0x0408)<br>
-CV_TYPE(LF_NESTTYPE_16t, 0x0409)<br>
-CV_TYPE(LF_VFUNCTAB_16t, 0x040a)<br>
-CV_TYPE(LF_FRIENDCLS_16t, 0x040b)<br>
-CV_TYPE(LF_ONEMETHOD_16t, 0x040c)<br>
-CV_TYPE(LF_VFUNCOFF_16t, 0x040d)<br>
-<br>
-CV_TYPE(LF_TI16_MAX, 0x1000)<br>
-<br>
-CV_TYPE(LF_ARRAY_ST, 0x1003)<br>
-CV_TYPE(LF_CLASS_ST, 0x1004)<br>
-CV_TYPE(LF_STRUCTURE_ST, 0x1005)<br>
-CV_TYPE(LF_UNION_ST, 0x1006)<br>
-CV_TYPE(LF_ENUM_ST, 0x1007)<br>
-CV_TYPE(LF_COBOL0, 0x100a)<br>
-CV_TYPE(LF_BARRAY, 0x100b)<br>
-CV_TYPE(LF_DIMARRAY_ST, 0x100c)<br>
-CV_TYPE(LF_VFTPATH, 0x100d)<br>
-CV_TYPE(LF_PRECOMP_ST, 0x100e)<br>
-CV_TYPE(LF_OEM, 0x100f)<br>
-CV_TYPE(LF_ALIAS_ST, 0x1010)<br>
-CV_TYPE(LF_OEM2, 0x1011)<br>
-<br>
-CV_TYPE(LF_SKIP, 0x1200)<br>
-CV_TYPE(LF_DEFARG_ST, 0x1202)<br>
-CV_TYPE(LF_DERIVED, 0x1204)<br>
-CV_TYPE(LF_DIMCONU, 0x1207)<br>
-CV_TYPE(LF_DIMCONLU, 0x1208)<br>
-CV_TYPE(LF_DIMVARU, 0x1209)<br>
-CV_TYPE(LF_DIMVARLU, 0x120a)<br>
-<br>
-// Member type records. These are generally not length prefixed, and appear<br>
-// inside of a field list record.<br>
-CV_TYPE(LF_FRIENDFCN_ST, 0x1403)<br>
-CV_TYPE(LF_MEMBER_ST, 0x1405)<br>
-CV_TYPE(LF_STMEMBER_ST, 0x1406)<br>
-CV_TYPE(LF_METHOD_ST, 0x1407)<br>
-CV_TYPE(LF_NESTTYPE_ST, 0x1408)<br>
-CV_TYPE(LF_FRIENDCLS, 0x140a)<br>
-CV_TYPE(LF_ONEMETHOD_ST, 0x140b)<br>
-CV_TYPE(LF_VFUNCOFF, 0x140c)<br>
-CV_TYPE(LF_NESTTYPEEX_ST, 0x140d)<br>
-CV_TYPE(LF_MEMBERMODIFY_ST, 0x140e)<br>
-CV_TYPE(LF_MANAGED_ST, 0x140f)<br>
-<br>
-CV_TYPE(LF_ST_MAX, 0x1500)<br>
-CV_TYPE(LF_TYPESERVER, 0x1501)<br>
-CV_TYPE(LF_DIMARRAY, 0x1508)<br>
-CV_TYPE(LF_PRECOMP, 0x1509)<br>
-CV_TYPE(LF_ALIAS, 0x150a)<br>
-CV_TYPE(LF_DEFARG, 0x150b)<br>
-CV_TYPE(LF_FRIENDFCN, 0x150c)<br>
-CV_TYPE(LF_NESTTYPEEX, 0x1512)<br>
-CV_TYPE(LF_MEMBERMODIFY, 0x1513)<br>
-CV_TYPE(LF_MANAGED, 0x1514)<br>
-CV_TYPE(LF_STRIDED_ARRAY, 0x1516)<br>
-CV_TYPE(LF_HLSL, 0x1517)<br>
-CV_TYPE(LF_MODIFIER_EX, 0x1518)<br>
-CV_TYPE(LF_VECTOR, 0x151b)<br>
-CV_TYPE(LF_MATRIX, 0x151c)<br>
-<br>
-// ID leaf records. Subsequent leaf types may be referenced from .debug$S.<br>
-<br>
-// Numeric leaf types. These are generally contained in other records, and not<br>
-// encountered in the main type stream.<br>
-<br>
-CV_TYPE(LF_NUMERIC, 0x8000)<br>
-CV_TYPE(LF_CHAR, 0x8000)<br>
-CV_TYPE(LF_SHORT, 0x8001)<br>
-CV_TYPE(LF_USHORT, 0x8002)<br>
-CV_TYPE(LF_LONG, 0x8003)<br>
-CV_TYPE(LF_ULONG, 0x8004)<br>
-CV_TYPE(LF_REAL32, 0x8005)<br>
-CV_TYPE(LF_REAL64, 0x8006)<br>
-CV_TYPE(LF_REAL80, 0x8007)<br>
-CV_TYPE(LF_REAL128, 0x8008)<br>
-CV_TYPE(LF_QUADWORD, 0x8009)<br>
-CV_TYPE(LF_UQUADWORD, 0x800a)<br>
-CV_TYPE(LF_REAL48, 0x800b)<br>
-CV_TYPE(LF_COMPLEX32, 0x800c)<br>
-CV_TYPE(LF_COMPLEX64, 0x800d)<br>
-CV_TYPE(LF_COMPLEX80, 0x800e)<br>
-CV_TYPE(LF_COMPLEX128, 0x800f)<br>
-CV_TYPE(LF_VARSTRING, 0x8010)<br>
-CV_TYPE(LF_OCTWORD, 0x8017)<br>
-CV_TYPE(LF_UOCTWORD, 0x8018)<br>
-CV_TYPE(LF_DECIMAL, 0x8019)<br>
-CV_TYPE(LF_DATE, 0x801a)<br>
-CV_TYPE(LF_UTF8STRING, 0x801b)<br>
-CV_TYPE(LF_REAL16, 0x801c)<br>
-<br>
-// Padding bytes. These are emitted into alignment bytes in the type stream.<br>
-<br>
-CV_TYPE(LF_PAD0, 0xf0)<br>
-CV_TYPE(LF_PAD1, 0xf1)<br>
-CV_TYPE(LF_PAD2, 0xf2)<br>
-CV_TYPE(LF_PAD3, 0xf3)<br>
-CV_TYPE(LF_PAD4, 0xf4)<br>
-CV_TYPE(LF_PAD5, 0xf5)<br>
-CV_TYPE(LF_PAD6, 0xf6)<br>
-CV_TYPE(LF_PAD7, 0xf7)<br>
-CV_TYPE(LF_PAD8, 0xf8)<br>
-CV_TYPE(LF_PAD9, 0xf9)<br>
-CV_TYPE(LF_PAD10, 0xfa)<br>
-CV_TYPE(LF_PAD11, 0xfb)<br>
-CV_TYPE(LF_PAD12, 0xfc)<br>
-CV_TYPE(LF_PAD13, 0xfd)<br>
-CV_TYPE(LF_PAD14, 0xfe)<br>
-CV_TYPE(LF_PAD15, 0xff)<br>
-<br>
-#undef CV_TYPE<br>
-#undef TYPE_RECORD<br>
-#undef TYPE_RECORD_ALIAS<br>
-#undef MEMBER_RECORD<br>
-#undef MEMBER_RECORD_ALIAS<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/TypeSerializer.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeSerializer.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeSerializer.h?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeSerializer.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeSerializer.h Tue May 30 16:53:05 2017<br>
@@ -106,7 +106,7 @@ public:<br>
return visitKnownMemberImpl<Name##Record>(CVR, Record); \<br>
}<br>
#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"<br>
<br>
private:<br>
template <typename RecordKind><br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/TypeTableBuilder.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeTableBuilder.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeTableBuilder.h?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeTableBuilder.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeTableBuilder.h Tue May 30 16:53:05 2017<br>
@@ -13,8 +13,8 @@<br>
#include "llvm/ADT/ArrayRef.h"<br>
#include "llvm/DebugInfo/CodeView/CodeView.h"<br>
#include "llvm/DebugInfo/CodeView/TypeIndex.h"<br>
-#include "llvm/DebugInfo/CodeView/TypeSerializer.h"<br>
#include "llvm/DebugInfo/CodeView/TypeRecord.h"<br>
+#include "llvm/DebugInfo/CodeView/TypeSerializer.h"<br>
#include "llvm/Support/Allocator.h"<br>
#include "llvm/Support/Error.h"<br>
#include <algorithm><br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h Tue May 30 16:53:05 2017<br>
@@ -94,7 +94,7 @@ public:<br>
}<br>
#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"<br>
<br>
private:<br>
template <typename T> Error visitKnownRecordImpl(CVType &CVR, T &Record) {<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h Tue May 30 16:53:05 2017<br>
@@ -58,7 +58,11 @@ public:<br>
<br>
#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"<br>
+#undef TYPE_RECORD<br>
+#undef TYPE_RECORD_ALIAS<br>
+#undef MEMBER_RECORD<br>
+#undef MEMBER_RECORD_ALIAS<br>
};<br>
<br>
} // end namespace codeview<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/PDB/Native/RawConstants.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/Native/RawConstants.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/Native/RawConstants.h?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/PDB/Native/RawConstants.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/PDB/Native/RawConstants.h Tue May 30 16:53:05 2017<br>
@@ -12,7 +12,6 @@<br>
<br>
#include "llvm/ADT/BitmaskEnum.h"<br>
#include "llvm/DebugInfo/CodeView/CodeView.h"<br>
-<br>
#include <cstdint><br>
<br>
namespace llvm {<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/PDB/Native/TpiHashing.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/Native/TpiHashing.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/Native/TpiHashing.h?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/PDB/Native/TpiHashing.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/PDB/Native/TpiHashing.h Tue May 30 16:53:05 2017<br>
@@ -38,7 +38,7 @@ public:<br>
#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
#define MEMBER_RECORD(EnumName, EnumVal, Name)<br>
#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"<br>
<br>
private:<br>
template <typename RecordKind><br>
<br>
Added: llvm/trunk/include/llvm/ObjectYAML/CodeViewYAML.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ObjectYAML/CodeViewYAML.h?rev=304248&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ObjectYAML/CodeViewYAML.h?rev=304248&view=auto</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/ObjectYAML/CodeViewYAML.h (added)<br>
+++ llvm/trunk/include/llvm/ObjectYAML/CodeViewYAML.h Tue May 30 16:53:05 2017<br>
@@ -0,0 +1,141 @@<br>
+//===- CodeViewYAML.cpp - CodeView YAMLIO implementation ------------------===//<br>
+//<br>
+// The LLVM Compiler Infrastructure<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+//<br>
+// This file defines classes for handling the YAML representation of CodeView<br>
+// Debug Info.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#ifndef LLVM_OBJECTYAML_CODEVIEWYAML_H<br>
+#define LLVM_OBJECTYAML_CODEVIEWYAML_H<br>
+<br>
+#include "llvm/DebugInfo/CodeView/CodeView.h"<br>
+#include "llvm/DebugInfo/CodeView/TypeDeserializer.h"<br>
+#include "llvm/DebugInfo/CodeView/TypeRecord.h"<br>
+#include "llvm/DebugInfo/CodeView/TypeSerializer.h"<br>
+#include "llvm/DebugInfo/CodeView/TypeTableBuilder.h"<br>
+#include "llvm/ObjectYAML/YAML.h"<br>
+<br>
+namespace llvm {<br>
+namespace CodeViewYAML {<br>
+<br>
+namespace detail {<br>
+struct MemberRecordBase;<br>
+struct LeafRecordBase;<br>
+}<br>
+<br>
+struct SourceLineEntry {<br>
+ uint32_t Offset;<br>
+ uint32_t LineStart;<br>
+ uint32_t EndDelta;<br>
+ bool IsStatement;<br>
+};<br>
+<br>
+struct SourceColumnEntry {<br>
+ uint16_t StartColumn;<br>
+ uint16_t EndColumn;<br>
+};<br>
+<br>
+struct SourceLineBlock {<br>
+ StringRef FileName;<br>
+ std::vector<SourceLineEntry> Lines;<br>
+ std::vector<SourceColumnEntry> Columns;<br>
+};<br>
+<br>
+struct HexFormattedString {<br>
+ std::vector<uint8_t> Bytes;<br>
+};<br>
+<br>
+struct SourceFileChecksumEntry {<br>
+ StringRef FileName;<br>
+ codeview::FileChecksumKind Kind;<br>
+ HexFormattedString ChecksumBytes;<br>
+};<br>
+<br>
+struct SourceLineInfo {<br>
+ uint32_t RelocOffset;<br>
+ uint32_t RelocSegment;<br>
+ codeview::LineFlags Flags;<br>
+ uint32_t CodeSize;<br>
+<br>
+ std::vector<SourceLineBlock> Blocks;<br>
+};<br>
+<br>
+struct InlineeSite {<br>
+ uint32_t Inlinee;<br>
+ StringRef FileName;<br>
+ uint32_t SourceLineNum;<br>
+ std::vector<StringRef> ExtraFiles;<br>
+};<br>
+<br>
+struct InlineeInfo {<br>
+ bool HasExtraFiles;<br>
+ std::vector<InlineeSite> Sites;<br>
+};<br>
+<br>
+struct SourceFileInfo {<br>
+ std::vector<SourceFileChecksumEntry> FileChecksums;<br>
+ std::vector<SourceLineInfo> LineFragments;<br>
+ std::vector<InlineeInfo> Inlinees;<br>
+};<br>
+<br>
+struct MemberRecord {<br>
+ std::shared_ptr<detail::MemberRecordBase> Member;<br>
+};<br>
+<br>
+struct LeafRecord {<br>
+ std::shared_ptr<detail::LeafRecordBase> Leaf;<br>
+<br>
+ codeview::CVType toCodeViewRecord(BumpPtrAllocator &Allocator) const;<br>
+ static Expected<LeafRecord> fromCodeViewRecord(codeview::CVType Type);<br>
+};<br>
+<br>
+} // namespace CodeViewYAML<br>
+} // namespace llvm<br>
+<br>
+LLVM_YAML_DECLARE_SCALAR_TRAITS(codeview::TypeIndex, false)<br>
+LLVM_YAML_DECLARE_SCALAR_TRAITS(CodeViewYAML::HexFormattedString, false)<br>
+LLVM_YAML_DECLARE_SCALAR_TRAITS(APSInt, false)<br>
+<br>
+LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::SourceLineEntry)<br>
+LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::SourceColumnEntry)<br>
+LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::SourceFileChecksumEntry)<br>
+LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::SourceLineInfo)<br>
+LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::SourceLineBlock)<br>
+LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::SourceFileInfo)<br>
+LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::InlineeInfo)<br>
+LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::InlineeSite)<br>
+<br>
+LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::LeafRecord)<br>
+LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::MemberRecord)<br>
+<br>
+LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::TypeLeafKind)<br>
+LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::PointerToMemberRepresentation)<br>
+LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::VFTableSlotKind)<br>
+LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::CallingConvention)<br>
+LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::PointerKind)<br>
+LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::PointerMode)<br>
+LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::HfaKind)<br>
+LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::MemberAccess)<br>
+LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::MethodKind)<br>
+LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::WindowsRTClassKind)<br>
+LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::LabelType)<br></blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::FileChecksumKind)<br>
+<br>
+LLVM_YAML_DECLARE_BITSET_TRAITS(codeview::PointerOptions)<br>
+LLVM_YAML_DECLARE_BITSET_TRAITS(codeview::LineFlags)<br>
+LLVM_YAML_DECLARE_BITSET_TRAITS(codeview::ModifierOptions)<br>
+LLVM_YAML_DECLARE_BITSET_TRAITS(codeview::FunctionOptions)<br>
+LLVM_YAML_DECLARE_BITSET_TRAITS(codeview::ClassOptions)<br>
+LLVM_YAML_DECLARE_BITSET_TRAITS(codeview::MethodOptions)<br>
+<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(CodeViewYAML::LeafRecord)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(CodeViewYAML::MemberRecord)<br>
+<br>
+#endif<br>
<br>
Modified: llvm/trunk/include/llvm/Support/YAMLTraits.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/YAMLTraits.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/YAMLTraits.h?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/Support/YAMLTraits.h (original)<br>
+++ llvm/trunk/include/llvm/Support/YAMLTraits.h Tue May 30 16:53:05 2017<br>
@@ -1606,6 +1606,44 @@ template <typename T> struct StdMapStrin<br>
} \<br>
}<br>
<br>
+#define LLVM_YAML_DECLARE_MAPPING_TRAITS(Type) \<br>
+ namespace llvm { \<br>
+ namespace yaml { \<br>
+ template <> struct MappingTraits<Type> { \<br>
+ static void mapping(IO &IO, Type &Obj); \<br>
+ }; \<br>
+ } \<br>
+ }<br>
+<br>
+#define LLVM_YAML_DECLARE_ENUM_TRAITS(Type) \<br>
+ namespace llvm { \<br>
+ namespace yaml { \<br>
+ template <> struct ScalarEnumerationTraits<Type> { \<br>
+ static void enumeration(IO &io, Type &Value); \<br>
+ }; \<br>
+ } \<br>
+ }<br>
+<br>
+#define LLVM_YAML_DECLARE_BITSET_TRAITS(Type) \<br>
+ namespace llvm { \<br>
+ namespace yaml { \<br>
+ template <> struct ScalarBitSetTraits<Type> { \<br>
+ static void bitset(IO &IO, Type &Options); \<br>
+ }; \<br>
+ } \<br>
+ }<br>
+<br>
+#define LLVM_YAML_DECLARE_SCALAR_TRAITS(Type, MustQuote) \<br>
+ namespace llvm { \<br>
+ namespace yaml { \<br>
+ template <> struct ScalarTraits<Type> { \<br>
+ static void output(const Type &Value, void *ctx, llvm::raw_ostream &Out); \<br>
+ static StringRef input(StringRef Scalar, void *ctxt, Type &Value); \<br>
+ static bool mustQuote(StringRef) { return MustQuote; } \<br>
+ }; \<br>
+ } \<br>
+ }<br>
+<br>
/// Utility for declaring that a std::vector of a particular type<br>
/// should be considered a YAML document list.<br>
#define LLVM_YAML_IS_DOCUMENT_LIST_VECTOR(_type) \<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp Tue May 30 16:53:05 2017<br>
@@ -46,7 +46,7 @@ Error CVSymbolVisitor::visitSymbolRecord<br>
}<br>
#define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName) \<br>
SYMBOL_RECORD(EnumVal, EnumVal, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"<br>
}<br>
<br>
if (auto EC = Callbacks.visitSymbolEnd(Record))<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/CodeView/CVTypeVisitor.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/CVTypeVisitor.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/CVTypeVisitor.cpp?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/DebugInfo/CodeView/CVTypeVisitor.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/CodeView/CVTypeVisitor.cpp Tue May 30 16:53:05 2017<br>
@@ -71,7 +71,7 @@ static Error visitMemberRecord(CVMemberR<br>
MEMBER_RECORD(EnumVal, EnumVal, AliasName)<br>
#define TYPE_RECORD(EnumName, EnumVal, Name)</blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br></blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
-#include "llvm/DebugInfo/CodeView/TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"<br>
}<br>
<br>
if (auto EC = Callbacks.visitMemberEnd(Record))<br>
@@ -155,7 +155,7 @@ Error CVTypeVisitor::finishVisitation(CV<br>
TYPE_RECORD(EnumVal, EnumVal, AliasName)</blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
#define MEMBER_RECORD(EnumName, EnumVal, Name)<br>
#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"<br>
}<br>
<br></blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
if (auto EC = Callbacks.visitTypeEnd(Record))<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/CodeView/EnumTables.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/EnumTables.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/EnumTables.cpp?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/DebugInfo/CodeView/EnumTables.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/CodeView/EnumTables.cpp Tue May 30 16:53:05 2017<br>
@@ -20,13 +20,13 @@ using namespace codeview;<br>
<br>
static const EnumEntry<SymbolKind> SymbolTypeNames[] = {<br>
#define CV_SYMBOL(enum, val) {#enum, enum},<br>
-#include "llvm/DebugInfo/CodeView/CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"<br>
#undef CV_SYMBOL<br>
};<br>
<br>
static const EnumEntry<TypeLeafKind> TypeLeafNames[] = {<br>
#define CV_TYPE(name, val) {#name, name},<br>
-#include "llvm/DebugInfo/CodeView/TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"<br>
#undef CV_TYPE<br>
};<br>
<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/CodeView/SymbolDumper.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/SymbolDumper.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/SymbolDumper.cpp?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/DebugInfo/CodeView/SymbolDumper.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/CodeView/SymbolDumper.cpp Tue May 30 16:53:05 2017<br>
@@ -41,7 +41,7 @@ public:</blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
#define SYMBOL_RECORD(EnumName, EnumVal, Name) \<br>
Error visitKnownRecord(CVSymbol &CVR, Name &Record) override;<br>
#define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br></blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
-#include "llvm/DebugInfo/CodeView/CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"<br>
<br>
Error visitSymbolBegin(CVSymbol &Record) override;<br>
Error visitSymbolEnd(CVSymbol &Record) override;<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp?rev=304248&r1=304247&r2=304248&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp Tue May 30 16:53:05 2017<br>
@@ -26,7 +26,7 @@ using namespace llvm::codeview;<br>
<br>
static const EnumEntry<TypeLeafKind> LeafTypeNames[] = {<br>
#define CV_TYPE(enum, val) {#enum, enum},<br>
-#include "llvm/DebugInfo/CodeView/TypeRecords.def"<br>
+#include "l</blockquote></div></div></blockquote></div>