<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">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">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">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><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-<wbr>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/<wbr>DebugInfo/CodeView/<wbr>CodeViewSymbols.def<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>CodeViewTypes.def<br>
llvm/trunk/include/llvm/<wbr>ObjectYAML/CodeViewYAML.h<br>
llvm/trunk/lib/ObjectYAML/<wbr>CodeViewYAML.cpp<br>
Removed:<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>CVSymbolTypes.def<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeRecords.def<br>
llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSerializationContext.h<br>
llvm/trunk/tools/llvm-pdbdump/<wbr>YamlTypeDumper.cpp<br>
llvm/trunk/tools/llvm-pdbdump/<wbr>YamlTypeDumper.h<br>
Modified:<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/CodeView.h<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolDeserializer.h<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolRecordMapping.h<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolSerializer.h<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolVisitorCallbackPipeline.<wbr>h<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolVisitorCallbacks.h<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDatabaseVisitor.h<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDeserializer.h<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDumpVisitor.h<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/TypeRecord.<wbr>h<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeRecordMapping.h<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeSerializer.h<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeTableBuilder.h<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeVisitorCallbackPipeline.h<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeVisitorCallbacks.h<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/PDB/Native/<wbr>RawConstants.h<br>
llvm/trunk/include/llvm/<wbr>DebugInfo/PDB/Native/<wbr>TpiHashing.h<br>
llvm/trunk/include/llvm/<wbr>Support/YAMLTraits.h<br>
llvm/trunk/lib/DebugInfo/<wbr>CodeView/CVSymbolVisitor.cpp<br>
llvm/trunk/lib/DebugInfo/<wbr>CodeView/CVTypeVisitor.cpp<br>
llvm/trunk/lib/DebugInfo/<wbr>CodeView/EnumTables.cpp<br>
llvm/trunk/lib/DebugInfo/<wbr>CodeView/SymbolDumper.cpp<br>
llvm/trunk/lib/DebugInfo/<wbr>CodeView/TypeDumpVisitor.cpp<br>
llvm/trunk/lib/MC/MCCodeView.<wbr>cpp<br>
llvm/trunk/lib/ObjectYAML/<wbr>CMakeLists.txt<br>
llvm/trunk/lib/ObjectYAML/<wbr>LLVMBuild.txt<br>
llvm/trunk/tools/llvm-pdbdump/<wbr>Analyze.cpp<br>
llvm/trunk/tools/llvm-pdbdump/<wbr>CMakeLists.txt<br>
llvm/trunk/tools/llvm-pdbdump/<wbr>CompactTypeDumpVisitor.cpp<br>
llvm/trunk/tools/llvm-pdbdump/<wbr>PdbYaml.cpp<br>
llvm/trunk/tools/llvm-pdbdump/<wbr>PdbYaml.h<br>
llvm/trunk/tools/llvm-pdbdump/<wbr>YAMLOutputStyle.cpp<br>
llvm/trunk/tools/llvm-pdbdump/<wbr>YAMLOutputStyle.h<br>
llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSymbolDumper.cpp<br>
llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSymbolDumper.h<br>
llvm/trunk/tools/llvm-pdbdump/<wbr>llvm-pdbdump.cpp<br>
<br>
Removed: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>CVSymbolTypes.def?rev=304247&<wbr>view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>CVSymbolTypes.def (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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>
-//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
-//<br>
-// See LEAF_ENUM_e in cvinfo.h. This should match the constants there.<br>
-//<br>
-//===------------------------<wbr>------------------------------<wbr>----------------===//<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_<wbr>GROUPSHARED, 0x1154)<br>
-CV_SYMBOL(S_DEFRANGE_DPC_PTR_<wbr>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_<wbr>INLINESITE_END , 0x114e, InlineSiteEnd, ScopeEndSym)<br>
-SYMBOL_RECORD_ALIAS(S_PROC_<wbr>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_<wbr>LPROC32_ID , 0x1146, ProcIdSym, ProcSym)<br>
-SYMBOL_RECORD_ALIAS(S_<wbr>GPROC32_ID , 0x1147, GlobalProcIdSym, ProcSym)<br>
-SYMBOL_RECORD_ALIAS(S_<wbr>LPROC32_DPC , 0x1155, DPCProcSym, ProcSym)<br>
-SYMBOL_RECORD_ALIAS(S_<wbr>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_<wbr>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_<wbr>SUBFIELD, 0x1140, DefRangeSubfieldSym)<br>
-SYMBOL_RECORD(S_DEFRANGE_<wbr>REGISTER, 0x1141, DefRangeRegisterSym)<br>
-SYMBOL_RECORD(S_DEFRANGE_<wbr>FRAMEPOINTER_REL, 0x1142, DefRangeFramePointerRelSym)<br>
-SYMBOL_RECORD(S_DEFRANGE_<wbr>SUBFIELD_REGISTER, 0x1143, DefRangeSubfieldRegisterSym)<br>
-SYMBOL_RECORD(S_DEFRANGE_<wbr>FRAMEPOINTER_REL_FULL_SCOPE, 0x1144, DefRangeFramePointerRelFullSco<wbr>peSym)<br>
-SYMBOL_RECORD(S_DEFRANGE_<wbr>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_<wbr>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_<wbr>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_<wbr>LMANDATA , 0x111c, ManagedLocalData, DataSym)<br>
-SYMBOL_RECORD_ALIAS(S_<wbr>GMANDATA , 0x111d, ManagedGlobalData, DataSym)<br>
-<br>
-SYMBOL_RECORD(S_LTHREAD32 , 0x1112, ThreadLocalDataSym)<br>
-SYMBOL_RECORD_ALIAS(S_<wbr>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/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>CodeView.h?rev=304248&r1=<wbr>304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/CodeView.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>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>
//===-------------------------<wbr>------------------------------<wbr>---------------===//<br>
+//<br>
+// Defines constants and basic types describing CodeView debug information.<br>
+//<br>
+//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
<br>
#ifndef LLVM_DEBUGINFO_CODEVIEW_<wbr>CODEVIEW_H<br>
#define LLVM_DEBUGINFO_CODEVIEW_<wbr>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_<wbr>OPERATORS(Class) \<br>
@@ -280,7 +284,7 @@ CV_DEFINE_ENUM_CLASS_FLAGS_<wbr>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/<wbr>DebugInfo/CodeView/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>CodeViewSymbols.def?rev=<wbr>304248&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>CodeViewSymbols.def (added)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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>
+//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
+//<br>
+// See LEAF_ENUM_e in cvinfo.h. This should match the constants there.<br>
+//<br>
+//===------------------------<wbr>------------------------------<wbr>----------------===//<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_<wbr>GROUPSHARED, 0x1154)<br>
+CV_SYMBOL(S_DEFRANGE_DPC_PTR_<wbr>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_<wbr>INLINESITE_END , 0x114e, InlineSiteEnd, ScopeEndSym)<br>
+SYMBOL_RECORD_ALIAS(S_PROC_<wbr>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_<wbr>LPROC32_ID , 0x1146, ProcIdSym, ProcSym)<br>
+SYMBOL_RECORD_ALIAS(S_<wbr>GPROC32_ID , 0x1147, GlobalProcIdSym, ProcSym)<br>
+SYMBOL_RECORD_ALIAS(S_<wbr>LPROC32_DPC , 0x1155, DPCProcSym, ProcSym)<br>
+SYMBOL_RECORD_ALIAS(S_<wbr>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_<wbr>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_<wbr>SUBFIELD, 0x1140, DefRangeSubfieldSym)<br>
+SYMBOL_RECORD(S_DEFRANGE_<wbr>REGISTER, 0x1141, DefRangeRegisterSym)<br>
+SYMBOL_RECORD(S_DEFRANGE_<wbr>FRAMEPOINTER_REL, 0x1142, DefRangeFramePointerRelSym)<br>
+SYMBOL_RECORD(S_DEFRANGE_<wbr>SUBFIELD_REGISTER, 0x1143, DefRangeSubfieldRegisterSym)<br>
+SYMBOL_RECORD(S_DEFRANGE_<wbr>FRAMEPOINTER_REL_FULL_SCOPE, 0x1144, DefRangeFramePointerRelFullSco<wbr>peSym)<br>
+SYMBOL_RECORD(S_DEFRANGE_<wbr>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_<wbr>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_<wbr>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_<wbr>LMANDATA , 0x111c, ManagedLocalData, DataSym)<br>
+SYMBOL_RECORD_ALIAS(S_<wbr>GMANDATA , 0x111d, ManagedGlobalData, DataSym)<br>
+<br>
+SYMBOL_RECORD(S_LTHREAD32 , 0x1112, ThreadLocalDataSym)<br>
+SYMBOL_RECORD_ALIAS(S_<wbr>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/<wbr>DebugInfo/CodeView/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def?rev=304248&<wbr>view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>CodeViewTypes.def (added)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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>
+//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
+//<br>
+// See LEAF_ENUM_e in cvinfo.h. This should match the constants there.<br>
+//<br>
+//===------------------------<wbr>------------------------------<wbr>----------------===//<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_<wbr>STRUCTURE, 0x1505, Struct, Class)<br>
+TYPE_RECORD_ALIAS(LF_<wbr>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_<wbr>BINTERFACE, 0x151a, BaseInterface, BaseClass)<br>
+<br>
+MEMBER_RECORD(LF_VBCLASS, 0x1401, VirtualBaseClass)<br>
+MEMBER_RECORD_ALIAS(LF_<wbr>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_<wbr>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/<wbr>DebugInfo/CodeView/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>SymbolDeserializer.h?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolDeserializer.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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/<wbr>CodeViewSymbols.def"<br>
<br>
private:<br>
template <typename T> Error visitKnownRecordImpl(CVSymbol &CVR, T &Record) {<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>SymbolRecordMapping.h?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolRecordMapping.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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/<wbr>CodeViewSymbols.def"<br>
<br>
private:<br>
Optional<SymbolKind> Kind;<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>SymbolSerializer.h?rev=304248&<wbr>r1=304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolSerializer.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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/<wbr>CodeViewSymbols.def"<br>
<br>
private:<br>
template <typename RecordKind><br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolVisitorCallbackPipeline.<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>SymbolVisitorCallbackPipeline.<wbr>h?rev=304248&r1=304247&r2=<wbr>304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolVisitorCallbackPipeline.<wbr>h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolVisitorCallbackPipeline.<wbr>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/<wbr>CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewSymbols.def"<br>
<br>
private:<br>
std::vector<<wbr>SymbolVisitorCallbacks *> Pipeline;<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>SymbolVisitorCallbacks.h?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolVisitorCallbacks.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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/<wbr>CodeViewSymbols.def"<br>
};<br>
<br>
} // end namespace codeview<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeDatabaseVisitor.h?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDatabaseVisitor.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDatabaseVisitor.h Tue May 30 16:53:05 2017<br>
@@ -39,7 +39,7 @@ public:<br>
Error visitKnownMember(<wbr>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/<wbr>CodeViewTypes.def"<br>
<br>
private:<br>
StringRef getTypeName(TypeIndex Index) const;<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeDeserializer.h?rev=304248&<wbr>r1=304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDeserializer.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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>(<wbr>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/<wbr>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/<wbr>CodeViewTypes.def"<br>
<br>
private:<br>
template <typename RecordType><br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeDumpVisitor.h?rev=304248&<wbr>r1=304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDumpVisitor.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDumpVisitor.h Tue May 30 16:53:05 2017<br>
@@ -58,7 +58,7 @@ public:<br>
Error visitKnownMember(<wbr>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/<wbr>CodeViewTypes.def"<br>
<br>
private:<br>
void printMemberAttributes(<wbr>MemberAttributes Attrs);<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/TypeRecord.<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeRecord.h?rev=304248&r1=<wbr>304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/TypeRecord.<wbr>h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/TypeRecord.<wbr>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::<wbr>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(<wbr>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::<wbr>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(<wbr>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(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
<br>
StringListRecord(<wbr>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(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
NestedTypeRecord(TypeIndex Type, StringRef Name)<br>
: TypeRecord(TypeRecordKind::<wbr>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<<wbr>uint8_t> Data)<br>
: TypeRecord(TypeRecordKind::<wbr>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::<wbr>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(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
explicit VFTableShapeRecord(ArrayRef<<wbr>VFTableSlotKind> Slots)<br>
: TypeRecord(TypeRecordKind::<wbr>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(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
TypeServer2Record(StringRef Guid, uint32_t Age, StringRef Name)<br>
: TypeRecord(TypeRecordKind::<wbr>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::<wbr>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::<wbr>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(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
UdtSourceLineRecord(TypeIndex UDT, TypeIndex SourceFile, uint32_t LineNumber)<br>
: TypeRecord(TypeRecordKind::<wbr>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(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
UdtModSourceLineRecord(<wbr>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<<wbr>TypeIndex> ArgIndices)<br>
: TypeRecord(TypeRecordKind::<wbr>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::<wbr>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(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
MethodOverloadListRecord(<wbr>ArrayRef<OneMethodRecord> Methods)<br>
: TypeRecord(TypeRecordKind::<wbr>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(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
OverloadedMethodRecord(uint16_<wbr>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(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
DataMemberRecord(<wbr>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(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
StaticDataMemberRecord(<wbr>MemberAttributes Attrs, TypeIndex Type, StringRef Name)<br>
: TypeRecord(TypeRecordKind::<wbr>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(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
EnumeratorRecord(<wbr>MemberAttributes Attrs, APSInt Value, StringRef Name)<br>
: TypeRecord(TypeRecordKind::<wbr>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::<wbr>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(<wbr>MemberAttributes Attrs, TypeIndex Type, uint64_t Offset)<br>
: TypeRecord(TypeRecordKind::<wbr>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(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
VirtualBaseClassRecord(<wbr>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(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
ListContinuationRecord(<wbr>TypeIndex ContinuationIndex)<br>
: TypeRecord(TypeRecordKind::<wbr>ListContinuation),<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeRecordMapping.h?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeRecordMapping.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeRecordMapping.h Tue May 30 16:53:05 2017<br>
@@ -37,7 +37,7 @@ public:<br>
Error visitKnownMember(<wbr>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/<wbr>CodeViewTypes.def"<br>
<br>
private:<br>
Optional<TypeLeafKind> TypeKind;<br>
<br>
Removed: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeRecords.def?rev=304247&<wbr>view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeRecords.def (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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>
-//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
-//<br>
-// See LEAF_ENUM_e in cvinfo.h. This should match the constants there.<br>
-//<br>
-//===------------------------<wbr>------------------------------<wbr>----------------===//<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_<wbr>STRUCTURE, 0x1505, Struct, Class)<br>
-TYPE_RECORD_ALIAS(LF_<wbr>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_<wbr>BINTERFACE, 0x151a, BaseInterface, BaseClass)<br>
-<br>
-MEMBER_RECORD(LF_VBCLASS, 0x1401, VirtualBaseClass)<br>
-MEMBER_RECORD_ALIAS(LF_<wbr>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_<wbr>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/<wbr>DebugInfo/CodeView/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeSerializer.h?rev=304248&<wbr>r1=304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeSerializer.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeSerializer.h Tue May 30 16:53:05 2017<br>
@@ -106,7 +106,7 @@ public:<br>
return visitKnownMemberImpl<Name##<wbr>Record>(CVR, Record); \<br>
}<br>
#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
<br>
private:<br>
template <typename RecordKind><br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeTableBuilder.h?rev=304248&<wbr>r1=304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeTableBuilder.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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/<wbr>CodeView.h"<br>
#include "llvm/DebugInfo/CodeView/<wbr>TypeIndex.h"<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeSerializer.h"<br>
#include "llvm/DebugInfo/CodeView/<wbr>TypeRecord.h"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>TypeSerializer.h"<br>
#include "llvm/Support/Allocator.h"<br>
#include "llvm/Support/Error.h"<br>
#include <algorithm><br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeVisitorCallbackPipeline.h?<wbr>rev=304248&r1=304247&r2=<wbr>304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeVisitorCallbackPipeline.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
<br>
private:<br>
template <typename T> Error visitKnownRecordImpl(CVType &CVR, T &Record) {<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeVisitorCallbacks.h?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeVisitorCallbacks.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>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/<wbr>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/<wbr>DebugInfo/PDB/Native/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/PDB/Native/<wbr>RawConstants.h?rev=304248&r1=<wbr>304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/PDB/Native/<wbr>RawConstants.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/PDB/Native/<wbr>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/<wbr>CodeView.h"<br>
-<br>
#include <cstdint><br>
<br>
namespace llvm {<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/PDB/Native/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/PDB/Native/<wbr>TpiHashing.h?rev=304248&r1=<wbr>304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/PDB/Native/<wbr>TpiHashing.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/PDB/Native/<wbr>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/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
<br>
private:<br>
template <typename RecordKind><br>
<br>
Added: llvm/trunk/include/llvm/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/ObjectYAML/CodeViewYAML.<wbr>h?rev=304248&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>ObjectYAML/CodeViewYAML.h (added)<br>
+++ llvm/trunk/include/llvm/<wbr>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>
+//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
+//<br>
+// This file defines classes for handling the YAML representation of CodeView<br>
+// Debug Info.<br>
+//<br>
+//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
+<br>
+#ifndef LLVM_OBJECTYAML_CODEVIEWYAML_H<br>
+#define LLVM_OBJECTYAML_CODEVIEWYAML_H<br>
+<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeView.h"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>TypeDeserializer.h"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>TypeRecord.h"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>TypeSerializer.h"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>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<<wbr>SourceFileChecksumEntry> FileChecksums;<br>
+ std::vector<SourceLineInfo> LineFragments;<br>
+ std::vector<InlineeInfo> Inlinees;<br>
+};<br>
+<br>
+struct MemberRecord {<br>
+ std::shared_ptr<detail::<wbr>MemberRecordBase> Member;<br>
+};<br>
+<br>
+struct LeafRecord {<br>
+ std::shared_ptr<detail::<wbr>LeafRecordBase> Leaf;<br>
+<br>
+ codeview::CVType toCodeViewRecord(<wbr>BumpPtrAllocator &Allocator) const;<br>
+ static Expected<LeafRecord> fromCodeViewRecord(codeview::<wbr>CVType Type);<br>
+};<br>
+<br>
+} // namespace CodeViewYAML<br>
+} // namespace llvm<br>
+<br>
+LLVM_YAML_DECLARE_SCALAR_<wbr>TRAITS(codeview::TypeIndex, false)<br>
+LLVM_YAML_DECLARE_SCALAR_<wbr>TRAITS(CodeViewYAML::<wbr>HexFormattedString, false)<br>
+LLVM_YAML_DECLARE_SCALAR_<wbr>TRAITS(APSInt, false)<br>
+<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>SourceLineEntry)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>SourceColumnEntry)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>SourceFileChecksumEntry)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>SourceLineInfo)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>SourceLineBlock)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>SourceFileInfo)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>InlineeInfo)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>InlineeSite)<br>
+<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>LeafRecord)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>MemberRecord)<br>
+<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::TypeLeafKind)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::<wbr>PointerToMemberRepresentation)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::<wbr>VFTableSlotKind)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::<wbr>CallingConvention)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::PointerKind)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::PointerMode)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::HfaKind)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::MemberAccess)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::MethodKind)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::<wbr>WindowsRTClassKind)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::LabelType)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::<wbr>FileChecksumKind)<br>
+<br>
+LLVM_YAML_DECLARE_BITSET_<wbr>TRAITS(codeview::<wbr>PointerOptions)<br>
+LLVM_YAML_DECLARE_BITSET_<wbr>TRAITS(codeview::LineFlags)<br>
+LLVM_YAML_DECLARE_BITSET_<wbr>TRAITS(codeview::<wbr>ModifierOptions)<br>
+LLVM_YAML_DECLARE_BITSET_<wbr>TRAITS(codeview::<wbr>FunctionOptions)<br>
+LLVM_YAML_DECLARE_BITSET_<wbr>TRAITS(codeview::ClassOptions)<br>
+LLVM_YAML_DECLARE_BITSET_<wbr>TRAITS(codeview::<wbr>MethodOptions)<br>
+<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>CodeViewYAML::LeafRecord)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>CodeViewYAML::MemberRecord)<br>
+<br>
+#endif<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>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-<wbr>project/llvm/trunk/include/<wbr>llvm/Support/YAMLTraits.h?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>Support/YAMLTraits.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>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_<wbr>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(<wbr>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_<wbr>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_<wbr>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_<wbr>VECTOR(_type) \<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/<wbr>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-<wbr>project/llvm/trunk/lib/<wbr>DebugInfo/CodeView/<wbr>CVSymbolVisitor.cpp?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/DebugInfo/<wbr>CodeView/CVSymbolVisitor.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/<wbr>CodeView/CVSymbolVisitor.cpp Tue May 30 16:53:05 2017<br>
@@ -46,7 +46,7 @@ Error CVSymbolVisitor::<wbr>visitSymbolRecord<br>
}<br>
#define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName) \<br>
SYMBOL_RECORD(EnumVal, EnumVal, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewSymbols.def"<br>
}<br>
<br>
if (auto EC = Callbacks.visitSymbolEnd(<wbr>Record))<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/<wbr>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-<wbr>project/llvm/trunk/lib/<wbr>DebugInfo/CodeView/<wbr>CVTypeVisitor.cpp?rev=304248&<wbr>r1=304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/DebugInfo/<wbr>CodeView/CVTypeVisitor.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/<wbr>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)<br>
#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
}<br>
<br>
if (auto EC = Callbacks.visitMemberEnd(<wbr>Record))<br>
@@ -155,7 +155,7 @@ Error CVTypeVisitor::<wbr>finishVisitation(CV<br>
TYPE_RECORD(EnumVal, EnumVal, AliasName)<br>
#define MEMBER_RECORD(EnumName, EnumVal, Name)<br>
#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
}<br>
<br>
if (auto EC = Callbacks.visitTypeEnd(Record)<wbr>)<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/<wbr>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-<wbr>project/llvm/trunk/lib/<wbr>DebugInfo/CodeView/EnumTables.<wbr>cpp?rev=304248&r1=304247&r2=<wbr>304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/DebugInfo/<wbr>CodeView/EnumTables.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/<wbr>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/<wbr>CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>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/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
#undef CV_TYPE<br>
};<br>
<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/<wbr>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-<wbr>project/llvm/trunk/lib/<wbr>DebugInfo/CodeView/<wbr>SymbolDumper.cpp?rev=304248&<wbr>r1=304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/DebugInfo/<wbr>CodeView/SymbolDumper.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/<wbr>CodeView/SymbolDumper.cpp Tue May 30 16:53:05 2017<br>
@@ -41,7 +41,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 "llvm/DebugInfo/CodeView/<wbr>CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewSymbols.def"<br>
<br>
Error visitSymbolBegin(CVSymbol &Record) override;<br>
Error visitSymbolEnd(CVSymbol &Record) override;<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/<wbr>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-<wbr>project/llvm/trunk/lib/<wbr>DebugInfo/CodeView/<wbr>TypeDumpVisitor.cpp?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/DebugInfo/<wbr>CodeView/TypeDumpVisitor.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/<wbr>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/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
};<br>
<br>
#define ENUM_ENTRY(enum_class, enum) \<br>
@@ -155,7 +155,7 @@ static StringRef getLeafTypeName(TypeLea<br>
#define TYPE_RECORD(ename, value, name) \<br>
case ename: \<br>
return #name;<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
default:<br>
break;<br>
}<br>
<br>
Modified: llvm/trunk/lib/MC/MCCodeView.<wbr>cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCCodeView.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/MC/<wbr>MCCodeView.cpp?rev=304248&r1=<wbr>304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/MC/MCCodeView.<wbr>cpp (original)<br>
+++ llvm/trunk/lib/MC/MCCodeView.<wbr>cpp Tue May 30 16:53:05 2017<br>
@@ -12,11 +12,11 @@<br>
//===-------------------------<wbr>------------------------------<wbr>---------------===//<br>
<br>
#include "llvm/MC/MCCodeView.h"<br>
-#include "llvm/MC/MCAsmLayout.h"<br>
#include "llvm/ADT/STLExtras.h"<br>
#include "llvm/DebugInfo/CodeView/<wbr>CodeView.h"<br>
#include "llvm/DebugInfo/CodeView/Line.<wbr>h"<br>
#include "llvm/DebugInfo/CodeView/<wbr>SymbolRecord.h"<br>
+#include "llvm/MC/MCAsmLayout.h"<br>
#include "llvm/MC/MCContext.h"<br>
#include "llvm/MC/MCObjectStreamer.h"<br>
#include "llvm/MC/MCValue.h"<br>
<br>
Modified: llvm/trunk/lib/ObjectYAML/<wbr>CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ObjectYAML/CMakeLists.txt?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>ObjectYAML/CMakeLists.txt?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/ObjectYAML/<wbr>CMakeLists.txt (original)<br>
+++ llvm/trunk/lib/ObjectYAML/<wbr>CMakeLists.txt Tue May 30 16:53:05 2017<br>
@@ -1,4 +1,5 @@<br>
add_llvm_library(<wbr>LLVMObjectYAML<br>
+ CodeViewYAML.cpp<br>
COFFYAML.cpp<br>
DWARFEmitter.cpp<br>
DWARFVisitor.cpp<br>
<br>
Added: llvm/trunk/lib/ObjectYAML/<wbr>CodeViewYAML.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ObjectYAML/CodeViewYAML.cpp?rev=304248&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>ObjectYAML/CodeViewYAML.cpp?<wbr>rev=304248&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/ObjectYAML/<wbr>CodeViewYAML.cpp (added)<br>
+++ llvm/trunk/lib/ObjectYAML/<wbr>CodeViewYAML.cpp Tue May 30 16:53:05 2017<br>
@@ -0,0 +1,759 @@<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>
+//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
+//<br>
+// This file defines classes for handling the YAML representation of CodeView<br>
+// Debug Info.<br>
+//<br>
+//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
+<br>
+#include "llvm/ObjectYAML/CodeViewYAML.<wbr>h"<br>
+#include "llvm/ADT/StringExtras.h"<br>
+#include "llvm/ADT/StringSwitch.h"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CVTypeVisitor.h"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewError.h"<br>
+<br>
+using namespace llvm;<br>
+using namespace llvm::codeview;<br>
+using namespace llvm::CodeViewYAML;<br>
+using namespace llvm::CodeViewYAML::detail;<br>
+using namespace llvm::yaml;<br>
+<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>SourceFileChecksumEntry)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>SourceLineEntry)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>SourceColumnEntry)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>SourceLineBlock)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>SourceLineInfo)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>InlineeSite)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>InlineeInfo)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>OneMethodRecord)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>StringRef)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>uint32_t)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>VFTableSlotKind)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>TypeIndex)<br>
+<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(llvm::codeview::<wbr>OneMethodRecord)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(llvm::codeview::<wbr>MemberPointerInfo)<br>
+<br>
+namespace llvm {<br>
+namespace CodeViewYAML {<br>
+namespace detail {<br>
+<br>
+struct LeafRecordBase {<br>
+ TypeLeafKind Kind;<br>
+ explicit LeafRecordBase(TypeLeafKind K) : Kind(K) {}<br>
+<br>
+ virtual ~LeafRecordBase() {}<br>
+ virtual void map(yaml::IO &io) = 0;<br>
+ virtual CVType toCodeViewRecord(<wbr>BumpPtrAllocator &Allocator) const = 0;<br>
+ virtual Error fromCodeViewRecord(CVType Type) = 0;<br>
+};<br>
+<br>
+template <typename T> struct LeafRecordImpl : public LeafRecordBase {<br>
+ explicit LeafRecordImpl(TypeLeafKind K)<br>
+ : LeafRecordBase(K), Record(static_cast<<wbr>TypeRecordKind>(K)) {}<br>
+<br>
+ void map(yaml::IO &io) override;<br>
+<br>
+ Error fromCodeViewRecord(CVType Type) override {<br>
+ return TypeDeserializer::<wbr>deserializeAs<T>(Type, Record);<br>
+ }<br>
+<br>
+ CVType toCodeViewRecord(<wbr>BumpPtrAllocator &Allocator) const override {<br>
+ TypeTableBuilder Table(Allocator);<br>
+ Table.writeKnownType(Record);<br>
+ return CVType(Kind, Table.records().front());<br>
+ }<br>
+<br>
+ mutable T Record;<br>
+};<br>
+<br>
+template <> struct LeafRecordImpl<<wbr>FieldListRecord> : public LeafRecordBase {<br>
+ explicit LeafRecordImpl(TypeLeafKind K) : LeafRecordBase(K) {}<br>
+<br>
+ void map(yaml::IO &io) override;<br>
+ CVType toCodeViewRecord(<wbr>BumpPtrAllocator &Allocator) const override;<br>
+ Error fromCodeViewRecord(CVType Type) override;<br>
+<br>
+ std::vector<MemberRecord> Members;<br>
+};<br>
+<br>
+struct MemberRecordBase {<br>
+ TypeLeafKind Kind;<br>
+ explicit MemberRecordBase(TypeLeafKind K) : Kind(K) {}<br>
+<br>
+ virtual ~MemberRecordBase() {}<br>
+ virtual void map(yaml::IO &io) = 0;<br>
+ virtual void writeTo(FieldListRecordBuilder &FLRB) = 0;<br>
+};<br>
+<br>
+template <typename T> struct MemberRecordImpl : public MemberRecordBase {<br>
+ explicit MemberRecordImpl(TypeLeafKind K)<br>
+ : MemberRecordBase(K), Record(static_cast<<wbr>TypeRecordKind>(K)) {}<br>
+ void map(yaml::IO &io) override;<br>
+<br>
+ void writeTo(FieldListRecordBuilder &FLRB) override {<br>
+ FLRB.writeMemberType(Record);<br>
+ }<br>
+<br>
+ mutable T Record;<br>
+};<br>
+}<br>
+}<br>
+}<br>
+<br>
+void ScalarTraits<TypeIndex>::<wbr>output(const TypeIndex &S, void *,<br>
+ llvm::raw_ostream &OS) {<br>
+ OS << S.getIndex();<br>
+}<br>
+<br>
+StringRef ScalarTraits<TypeIndex>::<wbr>input(StringRef Scalar, void *Ctx,<br>
+ TypeIndex &S) {<br>
+ uint32_t I;<br>
+ StringRef Result = ScalarTraits<uint32_t>::input(<wbr>Scalar, Ctx, I);<br>
+ S.setIndex(I);<br>
+ return Result;<br>
+}<br>
+<br>
+void ScalarTraits<APSInt>::output(<wbr>const APSInt &S, void *,<br>
+ llvm::raw_ostream &OS) {<br>
+ S.print(OS, true);<br>
+}<br>
+<br>
+StringRef ScalarTraits<APSInt>::input(<wbr>StringRef Scalar, void *Ctx, APSInt &S) {<br>
+ S = APSInt(Scalar);<br>
+ return "";<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>TypeLeafKind>::enumeration(IO &io,<br>
+ TypeLeafKind &Value) {<br>
+#define CV_TYPE(name, val) io.enumCase(Value, #name, name);<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
+#undef CV_TYPE<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>PointerToMemberRepresentation><wbr>::enumeration(<br>
+ IO &IO, PointerToMemberRepresentation &Value) {<br>
+ IO.enumCase(Value, "Unknown", PointerToMemberRepresentation:<wbr>:Unknown);<br>
+ IO.enumCase(Value, "SingleInheritanceData",<br>
+ PointerToMemberRepresentation:<wbr>:SingleInheritanceData);<br>
+ IO.enumCase(Value, "MultipleInheritanceData",<br>
+ PointerToMemberRepresentation:<wbr>:MultipleInheritanceData);<br>
+ IO.enumCase(Value, "VirtualInheritanceData",<br>
+ PointerToMemberRepresentation:<wbr>:VirtualInheritanceData);<br>
+ IO.enumCase(Value, "GeneralData", PointerToMemberRepresentation:<wbr>:GeneralData);<br>
+ IO.enumCase(Value, "SingleInheritanceFunction",<br>
+ PointerToMemberRepresentation:<wbr>:SingleInheritanceFunction);<br>
+ IO.enumCase(Value, "MultipleInheritanceFunction",<br>
+ PointerToMemberRepresentation:<wbr>:MultipleInheritanceFunction);<br>
+ IO.enumCase(Value, "VirtualInheritanceFunction",<br>
+ PointerToMemberRepresentation:<wbr>:VirtualInheritanceFunction);<br>
+ IO.enumCase(Value, "GeneralFunction",<br>
+ PointerToMemberRepresentation:<wbr>:GeneralFunction);<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>VFTableSlotKind>::enumeration(<br>
+ IO &IO, VFTableSlotKind &Kind) {<br>
+ IO.enumCase(Kind, "Near16", VFTableSlotKind::Near16);<br>
+ IO.enumCase(Kind, "Far16", VFTableSlotKind::Far16);<br>
+ IO.enumCase(Kind, "This", VFTableSlotKind::This);<br>
+ IO.enumCase(Kind, "Outer", VFTableSlotKind::Outer);<br>
+ IO.enumCase(Kind, "Meta", VFTableSlotKind::Meta);<br>
+ IO.enumCase(Kind, "Near", VFTableSlotKind::Near);<br>
+ IO.enumCase(Kind, "Far", VFTableSlotKind::Far);<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>CallingConvention>::<wbr>enumeration(<br>
+ IO &IO, CallingConvention &Value) {<br>
+ IO.enumCase(Value, "NearC", CallingConvention::NearC);<br>
+ IO.enumCase(Value, "FarC", CallingConvention::FarC);<br>
+ IO.enumCase(Value, "NearPascal", CallingConvention::NearPascal)<wbr>;<br>
+ IO.enumCase(Value, "FarPascal", CallingConvention::FarPascal);<br>
+ IO.enumCase(Value, "NearFast", CallingConvention::NearFast);<br>
+ IO.enumCase(Value, "FarFast", CallingConvention::FarFast);<br>
+ IO.enumCase(Value, "NearStdCall", CallingConvention::<wbr>NearStdCall);<br>
+ IO.enumCase(Value, "FarStdCall", CallingConvention::FarStdCall)<wbr>;<br>
+ IO.enumCase(Value, "NearSysCall", CallingConvention::<wbr>NearSysCall);<br>
+ IO.enumCase(Value, "FarSysCall", CallingConvention::FarSysCall)<wbr>;<br>
+ IO.enumCase(Value, "ThisCall", CallingConvention::ThisCall);<br>
+ IO.enumCase(Value, "MipsCall", CallingConvention::MipsCall);<br>
+ IO.enumCase(Value, "Generic", CallingConvention::Generic);<br>
+ IO.enumCase(Value, "AlphaCall", CallingConvention::AlphaCall);<br>
+ IO.enumCase(Value, "PpcCall", CallingConvention::PpcCall);<br>
+ IO.enumCase(Value, "SHCall", CallingConvention::SHCall);<br>
+ IO.enumCase(Value, "ArmCall", CallingConvention::ArmCall);<br>
+ IO.enumCase(Value, "AM33Call", CallingConvention::AM33Call);<br>
+ IO.enumCase(Value, "TriCall", CallingConvention::TriCall);<br>
+ IO.enumCase(Value, "SH5Call", CallingConvention::SH5Call);<br>
+ IO.enumCase(Value, "M32RCall", CallingConvention::M32RCall);<br>
+ IO.enumCase(Value, "ClrCall", CallingConvention::ClrCall);<br>
+ IO.enumCase(Value, "Inline", CallingConvention::Inline);<br>
+ IO.enumCase(Value, "NearVector", CallingConvention::NearVector)<wbr>;<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>PointerKind>::enumeration(IO &IO,<br>
+ PointerKind &Kind) {<br>
+ IO.enumCase(Kind, "Near16", PointerKind::Near16);<br>
+ IO.enumCase(Kind, "Far16", PointerKind::Far16);<br>
+ IO.enumCase(Kind, "Huge16", PointerKind::Huge16);<br>
+ IO.enumCase(Kind, "BasedOnSegment", PointerKind::BasedOnSegment);<br>
+ IO.enumCase(Kind, "BasedOnValue", PointerKind::BasedOnValue);<br>
+ IO.enumCase(Kind, "BasedOnSegmentValue", PointerKind::<wbr>BasedOnSegmentValue);<br>
+ IO.enumCase(Kind, "BasedOnAddress", PointerKind::BasedOnAddress);<br>
+ IO.enumCase(Kind, "BasedOnSegmentAddress",<br>
+ PointerKind::<wbr>BasedOnSegmentAddress);<br>
+ IO.enumCase(Kind, "BasedOnType", PointerKind::BasedOnType);<br>
+ IO.enumCase(Kind, "BasedOnSelf", PointerKind::BasedOnSelf);<br>
+ IO.enumCase(Kind, "Near32", PointerKind::Near32);<br>
+ IO.enumCase(Kind, "Far32", PointerKind::Far32);<br>
+ IO.enumCase(Kind, "Near64", PointerKind::Near64);<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>PointerMode>::enumeration(IO &IO,<br>
+ PointerMode &Mode) {<br>
+ IO.enumCase(Mode, "Pointer", PointerMode::Pointer);<br>
+ IO.enumCase(Mode, "LValueReference", PointerMode::LValueReference);<br>
+ IO.enumCase(Mode, "PointerToDataMember", PointerMode::<wbr>PointerToDataMember);<br>
+ IO.enumCase(Mode, "PointerToMemberFunction",<br>
+ PointerMode::<wbr>PointerToMemberFunction);<br>
+ IO.enumCase(Mode, "RValueReference", PointerMode::RValueReference);<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>HfaKind>::enumeration(IO &IO, HfaKind &Value) {<br>
+ IO.enumCase(Value, "None", HfaKind::None);<br>
+ IO.enumCase(Value, "Float", HfaKind::Float);<br>
+ IO.enumCase(Value, "Double", HfaKind::Double);<br>
+ IO.enumCase(Value, "Other", HfaKind::Other);<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>MemberAccess>::enumeration(IO &IO,<br>
+ MemberAccess &Access) {<br>
+ IO.enumCase(Access, "None", MemberAccess::None);<br>
+ IO.enumCase(Access, "Private", MemberAccess::Private);<br>
+ IO.enumCase(Access, "Protected", MemberAccess::Protected);<br>
+ IO.enumCase(Access, "Public", MemberAccess::Public);<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>MethodKind>::enumeration(IO &IO,<br>
+ MethodKind &Kind) {<br>
+ IO.enumCase(Kind, "Vanilla", MethodKind::Vanilla);<br>
+ IO.enumCase(Kind, "Virtual", MethodKind::Virtual);<br>
+ IO.enumCase(Kind, "Static", MethodKind::Static);<br>
+ IO.enumCase(Kind, "Friend", MethodKind::Friend);<br>
+ IO.enumCase(Kind, "IntroducingVirtual", MethodKind::<wbr>IntroducingVirtual);<br>
+ IO.enumCase(Kind, "PureVirtual", MethodKind::PureVirtual);<br>
+ IO.enumCase(Kind, "PureIntroducingVirtual",<br>
+ MethodKind::<wbr>PureIntroducingVirtual);<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>WindowsRTClassKind>::<wbr>enumeration(<br>
+ IO &IO, WindowsRTClassKind &Value) {<br>
+ IO.enumCase(Value, "None", WindowsRTClassKind::None);<br>
+ IO.enumCase(Value, "Ref", WindowsRTClassKind::RefClass);<br>
+ IO.enumCase(Value, "Value", WindowsRTClassKind::<wbr>ValueClass);<br>
+ IO.enumCase(Value, "Interface", WindowsRTClassKind::Interface)<wbr>;<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>LabelType>::enumeration(IO &IO, LabelType &Value) {<br>
+ IO.enumCase(Value, "Near", LabelType::Near);<br>
+ IO.enumCase(Value, "Far", LabelType::Far);<br>
+}<br>
+<br>
+void ScalarBitSetTraits<<wbr>PointerOptions>::bitset(IO &IO,<br>
+ PointerOptions &Options) {<br>
+ IO.bitSetCase(Options, "None", PointerOptions::None);<br>
+ IO.bitSetCase(Options, "Flat32", PointerOptions::Flat32);<br>
+ IO.bitSetCase(Options, "Volatile", PointerOptions::Volatile);<br>
+ IO.bitSetCase(Options, "Const", PointerOptions::Const);<br>
+ IO.bitSetCase(Options, "Unaligned", PointerOptions::Unaligned);<br>
+ IO.bitSetCase(Options, "Restrict", PointerOptions::Restrict);<br>
+ IO.bitSetCase(Options, "WinRTSmartPointer",<br>
+ PointerOptions::<wbr>WinRTSmartPointer);<br>
+}<br>
+<br>
+void ScalarBitSetTraits<<wbr>ModifierOptions>::bitset(IO &IO,<br>
+ ModifierOptions &Options) {<br>
+ IO.bitSetCase(Options, "None", ModifierOptions::None);<br>
+ IO.bitSetCase(Options, "Const", ModifierOptions::Const);<br>
+ IO.bitSetCase(Options, "Volatile", ModifierOptions::Volatile);<br>
+ IO.bitSetCase(Options, "Unaligned", ModifierOptions::Unaligned);<br>
+}<br>
+<br>
+void ScalarBitSetTraits<<wbr>FunctionOptions>::bitset(IO &IO,<br>
+ FunctionOptions &Options) {<br>
+ IO.bitSetCase(Options, "None", FunctionOptions::None);<br>
+ IO.bitSetCase(Options, "CxxReturnUdt", FunctionOptions::CxxReturnUdt)<wbr>;<br>
+ IO.bitSetCase(Options, "Constructor", FunctionOptions::Constructor);<br>
+ IO.bitSetCase(Options, "ConstructorWithVirtualBases",<br>
+ FunctionOptions::<wbr>ConstructorWithVirtualBases);<br>
+}<br>
+<br>
+void ScalarBitSetTraits<<wbr>ClassOptions>::bitset(IO &IO, ClassOptions &Options) {<br>
+ IO.bitSetCase(Options, "None", ClassOptions::None);<br>
+ IO.bitSetCase(Options, "HasConstructorOrDestructor",<br>
+ ClassOptions::<wbr>HasConstructorOrDestructor);<br>
+ IO.bitSetCase(Options, "HasOverloadedOperator",<br>
+ ClassOptions::<wbr>HasOverloadedOperator);<br>
+ IO.bitSetCase(Options, "Nested", ClassOptions::Nested);<br>
+ IO.bitSetCase(Options, "ContainsNestedClass",<br>
+ ClassOptions::<wbr>ContainsNestedClass);<br>
+ IO.bitSetCase(Options, "<wbr>HasOverloadedAssignmentOperato<wbr>r",<br>
+ ClassOptions::<wbr>HasOverloadedAssignmentOperato<wbr>r);<br>
+ IO.bitSetCase(Options, "HasConversionOperator",<br>
+ ClassOptions::<wbr>HasConversionOperator);<br>
+ IO.bitSetCase(Options, "ForwardReference", ClassOptions::<wbr>ForwardReference);<br>
+ IO.bitSetCase(Options, "Scoped", ClassOptions::Scoped);<br>
+ IO.bitSetCase(Options, "HasUniqueName", ClassOptions::HasUniqueName);<br>
+ IO.bitSetCase(Options, "Sealed", ClassOptions::Sealed);<br>
+ IO.bitSetCase(Options, "Intrinsic", ClassOptions::Intrinsic);<br>
+}<br>
+<br>
+void ScalarBitSetTraits<<wbr>MethodOptions>::bitset(IO &IO, MethodOptions &Options) {<br>
+ IO.bitSetCase(Options, "None", MethodOptions::None);<br>
+ IO.bitSetCase(Options, "Pseudo", MethodOptions::Pseudo);<br>
+ IO.bitSetCase(Options, "NoInherit", MethodOptions::NoInherit);<br>
+ IO.bitSetCase(Options, "NoConstruct", MethodOptions::NoConstruct);<br>
+ IO.bitSetCase(Options, "CompilerGenerated", MethodOptions::<wbr>CompilerGenerated);<br>
+ IO.bitSetCase(Options, "Sealed", MethodOptions::Sealed);<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>FileChecksumKind>::<wbr>enumeration(<br>
+ IO &io, FileChecksumKind &Kind) {<br>
+ io.enumCase(Kind, "None", FileChecksumKind::None);<br>
+ io.enumCase(Kind, "MD5", FileChecksumKind::MD5);<br>
+ io.enumCase(Kind, "SHA1", FileChecksumKind::SHA1);<br>
+ io.enumCase(Kind, "SHA256", FileChecksumKind::SHA256);<br>
+}<br>
+<br>
+void ScalarBitSetTraits<LineFlags>:<wbr>:bitset(IO &io, LineFlags &Flags) {<br>
+ io.bitSetCase(Flags, "HasColumnInfo", LF_HaveColumns);<br>
+ io.enumFallback<Hex16>(Flags);<br>
+}<br>
+<br>
+void ScalarTraits<<wbr>HexFormattedString>::output(<wbr>const HexFormattedString &Value,<br>
+ void *ctx, raw_ostream &Out) {<br>
+ StringRef Bytes(reinterpret_cast<const char *>(Value.Bytes.data()),<br>
+ Value.Bytes.size());<br>
+ Out << toHex(Bytes);<br>
+}<br>
+<br>
+StringRef ScalarTraits<<wbr>HexFormattedString>::input(<wbr>StringRef Scalar, void *ctxt,<br>
+ HexFormattedString &Value) {<br>
+ std::string H = fromHex(Scalar);<br>
+ Value.Bytes.assign(H.begin(), H.end());<br>
+ return StringRef();<br>
+}<br>
+<br>
+void MappingTraits<SourceLineEntry><wbr>::mapping(IO &IO, SourceLineEntry &Obj) {<br>
+ IO.mapRequired("Offset", Obj.Offset);<br>
+ IO.mapRequired("LineStart", Obj.LineStart);<br>
+ IO.mapRequired("IsStatement", Obj.IsStatement);<br>
+ IO.mapRequired("EndDelta", Obj.EndDelta);<br>
+}<br>
+<br>
+void MappingTraits<<wbr>SourceColumnEntry>::mapping(IO &IO, SourceColumnEntry &Obj) {<br>
+ IO.mapRequired("StartColumn", Obj.StartColumn);<br>
+ IO.mapRequired("EndColumn", Obj.EndColumn);<br>
+}<br>
+<br>
+void MappingTraits<SourceLineBlock><wbr>::mapping(IO &IO, SourceLineBlock &Obj) {<br>
+ IO.mapRequired("FileName", Obj.FileName);<br>
+ IO.mapRequired("Lines", Obj.Lines);<br>
+ IO.mapRequired("Columns", Obj.Columns);<br>
+}<br>
+<br>
+void MappingTraits<<wbr>SourceFileChecksumEntry>::<wbr>mapping(<br>
+ IO &IO, SourceFileChecksumEntry &Obj) {<br>
+ IO.mapRequired("FileName", Obj.FileName);<br>
+ IO.mapRequired("Kind", Obj.Kind);<br>
+ IO.mapRequired("Checksum", Obj.ChecksumBytes);<br>
+}<br>
+<br>
+void MappingTraits<SourceLineInfo>:<wbr>:mapping(IO &IO, SourceLineInfo &Obj) {<br>
+ IO.mapRequired("CodeSize", Obj.CodeSize);<br>
+<br>
+ IO.mapRequired("Flags", Obj.Flags);<br>
+ IO.mapRequired("RelocOffset", Obj.RelocOffset);<br>
+ IO.mapRequired("RelocSegment", Obj.RelocSegment);<br>
+ IO.mapRequired("Blocks", Obj.Blocks);<br>
+}<br>
+<br>
+void MappingTraits<SourceFileInfo>:<wbr>:mapping(IO &IO, SourceFileInfo &Obj) {<br>
+ IO.mapOptional("Checksums", Obj.FileChecksums);<br>
+ IO.mapOptional("Lines", Obj.LineFragments);<br>
+ IO.mapOptional("InlineeLines", Obj.Inlinees);<br>
+}<br>
+<br>
+void MappingTraits<InlineeSite>::<wbr>mapping(IO &IO, InlineeSite &Obj) {<br>
+ IO.mapRequired("FileName", Obj.FileName);<br>
+ IO.mapRequired("LineNum", Obj.SourceLineNum);<br>
+ IO.mapRequired("Inlinee", Obj.Inlinee);<br>
+ IO.mapOptional("ExtraFiles", Obj.ExtraFiles);<br>
+}<br>
+<br>
+void MappingTraits<InlineeInfo>::<wbr>mapping(IO &IO, InlineeInfo &Obj) {<br>
+ IO.mapRequired("HasExtraFiles"<wbr>, Obj.HasExtraFiles);<br>
+ IO.mapRequired("Sites", Obj.Sites);<br>
+}<br>
+<br>
+void MappingTraits<<wbr>MemberPointerInfo>::mapping(IO &IO, MemberPointerInfo &MPI) {<br>
+ IO.mapRequired("<wbr>ContainingType", MPI.ContainingType);<br>
+ IO.mapRequired("<wbr>Representation", MPI.Representation);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<ModifierRecord><wbr>::map(IO &IO) {<br>
+ IO.mapRequired("ModifiedType", Record.ModifiedType);<br>
+ IO.mapRequired("Modifiers", Record.Modifiers);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>ProcedureRecord>::map(IO &IO) {<br>
+ IO.mapRequired("ReturnType", Record.ReturnType);<br>
+ IO.mapRequired("CallConv", Record.CallConv);<br>
+ IO.mapRequired("Options", Record.Options);<br>
+ IO.mapRequired("<wbr>ParameterCount", Record.ParameterCount);<br>
+ IO.mapRequired("ArgumentList", Record.ArgumentList);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>MemberFunctionRecord>::map(IO &IO) {<br>
+ IO.mapRequired("ReturnType", Record.ReturnType);<br>
+ IO.mapRequired("ClassType", Record.ClassType);<br>
+ IO.mapRequired("ThisType", Record.ThisType);<br>
+ IO.mapRequired("CallConv", Record.CallConv);<br>
+ IO.mapRequired("Options", Record.Options);<br>
+ IO.mapRequired("<wbr>ParameterCount", Record.ParameterCount);<br>
+ IO.mapRequired("ArgumentList", Record.ArgumentList);<br>
+ IO.mapRequired("<wbr>ThisPointerAdjustment", Record.ThisPointerAdjustment);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<LabelRecord>::<wbr>map(IO &IO) {<br>
+ IO.mapRequired("Mode", Record.Mode);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>MemberFuncIdRecord>::map(IO &IO) {<br>
+ IO.mapRequired("ClassType", Record.ClassType);<br>
+ IO.mapRequired("FunctionType", Record.FunctionType);<br>
+ IO.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<ArgListRecord>:<wbr>:map(IO &IO) {<br>
+ IO.mapRequired("ArgIndices", Record.ArgIndices);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>StringListRecord>::map(IO &IO) {<br>
+ IO.mapRequired("StringIndices"<wbr>, Record.StringIndices);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<PointerRecord>:<wbr>:map(IO &IO) {<br>
+ IO.mapRequired("ReferentType", Record.ReferentType);<br>
+ IO.mapRequired("Attrs", Record.Attrs);<br>
+ IO.mapOptional("MemberInfo", Record.MemberInfo);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<ArrayRecord>::<wbr>map(IO &IO) {<br>
+ IO.mapRequired("ElementType", Record.ElementType);<br>
+ IO.mapRequired("IndexType", Record.IndexType);<br>
+ IO.mapRequired("Size", Record.Size);<br>
+ IO.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+void LeafRecordImpl<<wbr>FieldListRecord>::map(IO &IO) {<br>
+ IO.mapRequired("FieldList", Members);<br>
+}<br>
+<br>
+namespace {<br>
+class MemberRecordConversionVisitor : public TypeVisitorCallbacks {<br>
+public:<br>
+ explicit MemberRecordConversionVisitor(<wbr>std::vector<MemberRecord> &Records)<br>
+ : Records(Records) {}<br>
+<br>
+#define TYPE_RECORD(EnumName, EnumVal, Name)<br>
+#define MEMBER_RECORD(EnumName, EnumVal, Name) \<br>
+ Error visitKnownMember(<wbr>CVMemberRecord &CVR, Name##Record &Record) override { \<br>
+ return visitKnownMemberImpl(Record); \<br>
+ }<br>
+#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
+#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
+private:<br>
+ template <typename T> Error visitKnownMemberImpl(T &Record) {<br>
+ TypeLeafKind K = static_cast<TypeLeafKind>(<wbr>Record.getKind());<br>
+ auto Impl = std::make_shared<<wbr>MemberRecordImpl<T>>(K);<br>
+ Impl->Record = Record;<br>
+ Records.push_back(<wbr>MemberRecord{Impl});<br>
+ return Error::success();<br>
+ }<br>
+<br>
+ std::vector<MemberRecord> &Records;<br>
+};<br>
+}<br>
+<br>
+Error LeafRecordImpl<<wbr>FieldListRecord>::<wbr>fromCodeViewRecord(CVType Type) {<br>
+ MemberRecordConversionVisitor V(Members);<br>
+ return visitMemberRecordStream(Type.<wbr>content(), V);<br>
+}<br>
+<br>
+CVType LeafRecordImpl<<wbr>FieldListRecord>::<wbr>toCodeViewRecord(<br>
+ BumpPtrAllocator &Allocator) const {<br>
+ TypeTableBuilder TTB(Allocator);<br>
+ FieldListRecordBuilder FLRB(TTB);<br>
+ FLRB.begin();<br>
+ for (const auto &Member : Members) {<br>
+ Member.Member->writeTo(FLRB);<br>
+ }<br>
+ FLRB.end(true);<br>
+ return CVType(Kind, TTB.records().front());<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<ClassRecord>::<wbr>map(IO &IO) {<br>
+ IO.mapRequired("MemberCount", Record.MemberCount);<br>
+ IO.mapRequired("Options", Record.Options);<br>
+ IO.mapRequired("FieldList", Record.FieldList);<br>
+ IO.mapRequired("Name", Record.Name);<br>
+ IO.mapRequired("UniqueName", Record.UniqueName);<br>
+<br>
+ IO.mapRequired("<wbr>DerivationList", Record.DerivationList);<br>
+ IO.mapRequired("VTableShape", Record.VTableShape);<br>
+ IO.mapRequired("Size", Record.Size);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<UnionRecord>::<wbr>map(IO &IO) {<br>
+ IO.mapRequired("MemberCount", Record.MemberCount);<br>
+ IO.mapRequired("Options", Record.Options);<br>
+ IO.mapRequired("FieldList", Record.FieldList);<br>
+ IO.mapRequired("Name", Record.Name);<br>
+ IO.mapRequired("UniqueName", Record.UniqueName);<br>
+<br>
+ IO.mapRequired("Size", Record.Size);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<EnumRecord>::<wbr>map(IO &IO) {<br>
+ IO.mapRequired("<wbr>NumEnumerators", Record.MemberCount);<br>
+ IO.mapRequired("Options", Record.Options);<br>
+ IO.mapRequired("FieldList", Record.FieldList);<br>
+ IO.mapRequired("Name", Record.Name);<br>
+ IO.mapRequired("UniqueName", Record.UniqueName);<br>
+<br>
+ IO.mapRequired("<wbr>UnderlyingType", Record.UnderlyingType);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<BitFieldRecord><wbr>::map(IO &IO) {<br>
+ IO.mapRequired("Type", Record.Type);<br>
+ IO.mapRequired("BitSize", Record.BitSize);<br>
+ IO.mapRequired("BitOffset", Record.BitOffset);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>VFTableShapeRecord>::map(IO &IO) {<br>
+ IO.mapRequired("Slots", Record.Slots);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>TypeServer2Record>::map(IO &IO) {<br>
+ IO.mapRequired("Guid", Record.Guid);<br>
+ IO.mapRequired("Age", Record.Age);<br>
+ IO.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<StringIdRecord><wbr>::map(IO &IO) {<br>
+ IO.mapRequired("Id", Record.Id);<br>
+ IO.mapRequired("String", Record.String);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<FuncIdRecord>::<wbr>map(IO &IO) {<br>
+ IO.mapRequired("ParentScope", Record.ParentScope);<br>
+ IO.mapRequired("FunctionType", Record.FunctionType);<br>
+ IO.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>UdtSourceLineRecord>::map(IO &IO) {<br>
+ IO.mapRequired("UDT", Record.UDT);<br>
+ IO.mapRequired("SourceFile", Record.SourceFile);<br>
+ IO.mapRequired("LineNumber", Record.LineNumber);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>UdtModSourceLineRecord>::map(<wbr>IO &IO) {<br>
+ IO.mapRequired("UDT", Record.UDT);<br>
+ IO.mapRequired("SourceFile", Record.SourceFile);<br>
+ IO.mapRequired("LineNumber", Record.LineNumber);<br>
+ IO.mapRequired("Module", Record.Module);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>BuildInfoRecord>::map(IO &IO) {<br>
+ IO.mapRequired("ArgIndices", Record.ArgIndices);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<VFTableRecord>:<wbr>:map(IO &IO) {<br>
+ IO.mapRequired("CompleteClass"<wbr>, Record.CompleteClass);<br>
+ IO.mapRequired("<wbr>OverriddenVFTable", Record.OverriddenVFTable);<br>
+ IO.mapRequired("VFPtrOffset", Record.VFPtrOffset);<br>
+ IO.mapRequired("MethodNames", Record.MethodNames);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>MethodOverloadListRecord>::<wbr>map(IO &IO) {<br>
+ IO.mapRequired("Methods", Record.Methods);<br>
+}<br>
+<br>
+void MappingTraits<OneMethodRecord><wbr>::mapping(IO &io, OneMethodRecord &Record) {<br>
+ io.mapRequired("Type", Record.Type);<br>
+ io.mapRequired("Attrs", Record.Attrs.Attrs);<br>
+ io.mapRequired("VFTableOffset"<wbr>, Record.VFTableOffset);<br>
+ io.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<<wbr>OneMethodRecord>::map(IO &IO) {<br>
+ MappingTraits<OneMethodRecord><wbr>::mapping(IO, Record);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<<wbr>OverloadedMethodRecord>::map(<wbr>IO &IO) {<br>
+ IO.mapRequired("NumOverloads", Record.NumOverloads);<br>
+ IO.mapRequired("MethodList", Record.MethodList);<br>
+ IO.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<<wbr>NestedTypeRecord>::map(IO &IO) {<br>
+ IO.mapRequired("Type", Record.Type);<br>
+ IO.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<<wbr>DataMemberRecord>::map(IO &IO) {<br>
+ IO.mapRequired("Attrs", Record.Attrs.Attrs);<br>
+ IO.mapRequired("Type", Record.Type);<br>
+ IO.mapRequired("FieldOffset", Record.FieldOffset);<br>
+ IO.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<<wbr>StaticDataMemberRecord>::map(<wbr>IO &IO) {<br>
+ IO.mapRequired("Attrs", Record.Attrs.Attrs);<br>
+ IO.mapRequired("Type", Record.Type);<br>
+ IO.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<<wbr>EnumeratorRecord>::map(IO &IO) {<br>
+ IO.mapRequired("Attrs", Record.Attrs.Attrs);<br>
+ IO.mapRequired("Value", Record.Value);<br>
+ IO.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<VFPtrRecord>:<wbr>:map(IO &IO) {<br>
+ IO.mapRequired("Type", Record.Type);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<<wbr>BaseClassRecord>::map(IO &IO) {<br>
+ IO.mapRequired("Attrs", Record.Attrs.Attrs);<br>
+ IO.mapRequired("Type", Record.Type);<br>
+ IO.mapRequired("Offset", Record.Offset);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<<wbr>VirtualBaseClassRecord>::map(<wbr>IO &IO) {<br>
+ IO.mapRequired("Attrs", Record.Attrs.Attrs);<br>
+ IO.mapRequired("BaseType", Record.BaseType);<br>
+ IO.mapRequired("VBPtrType", Record.VBPtrType);<br>
+ IO.mapRequired("VBPtrOffset", Record.VBPtrOffset);<br>
+ IO.mapRequired("VTableIndex", Record.VTableIndex);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<<wbr>ListContinuationRecord>::map(<wbr>IO &IO) {<br>
+ IO.mapRequired("<wbr>ContinuationIndex", Record.ContinuationIndex);<br>
+}<br>
+<br>
+template <typename T><br>
+static inline Expected<LeafRecord> fromCodeViewRecordImpl(CVType Type) {<br>
+ LeafRecord Result;<br>
+<br>
+ auto Impl = std::make_shared<<wbr>LeafRecordImpl<T>>(Type.kind()<wbr>);<br>
+ if (auto EC = Impl->fromCodeViewRecord(Type)<wbr>)<br>
+ return std::move(EC);<br>
+ Result.Leaf = Impl;<br>
+ return Result;<br>
+}<br>
+<br>
+Expected<LeafRecord> LeafRecord::<wbr>fromCodeViewRecord(CVType Type) {<br>
+#define TYPE_RECORD(EnumName, EnumVal, ClassName) \<br>
+ case EnumName: \<br>
+ return fromCodeViewRecordImpl<<wbr>ClassName##Record>(Type);<br>
+#define TYPE_RECORD_ALIAS(EnumName, EnumVal, AliasName, ClassName) \<br>
+ TYPE_RECORD(EnumName, EnumVal, ClassName)<br>
+#define MEMBER_RECORD(EnumName, EnumVal, ClassName)<br>
+#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, AliasName, ClassName)<br>
+ switch (Type.kind()) {<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
+ default: { llvm_unreachable("Unknown leaf kind!"); }<br>
+ }<br>
+ return make_error<CodeViewError>(cv_<wbr>error_code::corrupt_record);<br>
+}<br>
+<br>
+CVType LeafRecord::toCodeViewRecord(<wbr>BumpPtrAllocator &Allocator) const {<br>
+ return Leaf->toCodeViewRecord(<wbr>Allocator);<br>
+}<br>
+<br>
+template <> struct MappingTraits<LeafRecordBase> {<br>
+ static void mapping(IO &io, LeafRecordBase &Record) { Record.map(io); }<br>
+};<br>
+<br>
+template <typename ConcreteType><br>
+static void mapLeafRecordImpl(IO &IO, const char *Class, TypeLeafKind Kind,<br>
+ LeafRecord &Obj) {<br>
+ if (!IO.outputting())<br>
+ Obj.Leaf = std::make_shared<<wbr>LeafRecordImpl<ConcreteType>>(<wbr>Kind);<br>
+<br>
+ if (Kind == LF_FIELDLIST)<br>
+ Obj.Leaf->map(IO);<br>
+ else<br>
+ IO.mapRequired(Class, *Obj.Leaf);<br>
+}<br>
+<br>
+void MappingTraits<LeafRecord>::<wbr>mapping(IO &IO, LeafRecord &Obj) {<br>
+ TypeLeafKind Kind;<br>
+ if (IO.outputting())<br>
+ Kind = Obj.Leaf->Kind;<br>
+ IO.mapRequired("Kind", Kind);<br>
+<br>
+#define TYPE_RECORD(EnumName, EnumVal, ClassName) \<br>
+ case EnumName: \<br>
+ mapLeafRecordImpl<ClassName##<wbr>Record>(IO, #ClassName, Kind, Obj); \<br>
+ break;<br>
+#define TYPE_RECORD_ALIAS(EnumName, EnumVal, AliasName, ClassName) \<br>
+ TYPE_RECORD(EnumName, EnumVal, ClassName)<br>
+#define MEMBER_RECORD(EnumName, EnumVal, ClassName)<br>
+#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, AliasName, ClassName)<br>
+ switch (Kind) {<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
+ default: { llvm_unreachable("Unknown leaf kind!"); }<br>
+ }<br>
+}<br>
+<br>
+template <> struct MappingTraits<<wbr>MemberRecordBase> {<br>
+ static void mapping(IO &io, MemberRecordBase &Record) { Record.map(io); }<br>
+};<br>
+<br>
+template <typename ConcreteType><br>
+static void mapMemberRecordImpl(IO &IO, const char *Class, TypeLeafKind Kind,<br>
+ MemberRecord &Obj) {<br>
+ if (!IO.outputting())<br>
+ Obj.Member = std::make_shared<<wbr>MemberRecordImpl<ConcreteType><wbr>>(Kind);<br>
+<br>
+ IO.mapRequired(Class, *Obj.Member);<br>
+}<br>
+<br>
+void MappingTraits<MemberRecord>::<wbr>mapping(IO &IO, MemberRecord &Obj) {<br>
+ TypeLeafKind Kind;<br>
+ if (IO.outputting())<br>
+ Kind = Obj.Member->Kind;<br>
+ IO.mapRequired("Kind", Kind);<br>
+<br>
+#define MEMBER_RECORD(EnumName, EnumVal, ClassName) \<br>
+ case EnumName: \<br>
+ mapMemberRecordImpl<ClassName#<wbr>#Record>(IO, #ClassName, Kind, Obj); \<br>
+ break;<br>
+#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, AliasName, ClassName) \<br>
+ MEMBER_RECORD(EnumName, EnumVal, ClassName)<br>
+#define TYPE_RECORD(EnumName, EnumVal, ClassName)<br>
+#define TYPE_RECORD_ALIAS(EnumName, EnumVal, AliasName, ClassName)<br>
+ switch (Kind) {<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
+ default: { llvm_unreachable("Unknown member kind!"); }<br>
+ }<br>
+}<br>
<br>
Modified: llvm/trunk/lib/ObjectYAML/<wbr>LLVMBuild.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ObjectYAML/LLVMBuild.txt?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>ObjectYAML/LLVMBuild.txt?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/ObjectYAML/<wbr>LLVMBuild.txt (original)<br>
+++ llvm/trunk/lib/ObjectYAML/<wbr>LLVMBuild.txt Tue May 30 16:53:05 2017<br>
@@ -11,4 +11,4 @@<br>
type = Library<br>
name = ObjectYAML<br>
parent = Libraries<br>
-required_libraries = Support<br>
+required_libraries = Support DebugInfoCodeView<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>Analyze.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/Analyze.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/Analyze.cpp?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>Analyze.cpp (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>Analyze.cpp Tue May 30 16:53:05 2017<br>
@@ -35,7 +35,7 @@ static StringRef getLeafTypeName(TypeLea<br>
#define TYPE_RECORD(ename, value, name) \<br>
case ename: \<br>
return #name;<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
default:<br>
break;<br>
}<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/CMakeLists.txt?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/CMakeLists.txt?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>CMakeLists.txt (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>CMakeLists.txt Tue May 30 16:53:05 2017<br>
@@ -3,6 +3,7 @@ set(LLVM_LINK_COMPONENTS<br>
DebugInfoMSF<br>
DebugInfoPDB<br>
Object<br>
+ ObjectYAML<br>
Support<br>
)<br>
<br>
@@ -12,8 +13,6 @@ add_llvm_tool(llvm-pdbdump<br>
CompactTypeDumpVisitor.cpp<br>
Diff.cpp<br>
llvm-pdbdump.cpp<br>
- YamlSymbolDumper.cpp<br>
- YamlTypeDumper.cpp<br>
LinePrinter.cpp<br>
LLVMOutputStyle.cpp<br>
PdbYaml.cpp<br>
@@ -29,6 +28,7 @@ add_llvm_tool(llvm-pdbdump<br>
PrettyVariableDumper.cpp<br>
StreamUtil.cpp<br>
YAMLOutputStyle.cpp<br>
+ YamlSymbolDumper.cpp<br>
)<br>
<br>
if(LLVM_USE_SANITIZE_COVERAGE)<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>CompactTypeDumpVisitor.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/CompactTypeDumpVisitor.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/<wbr>CompactTypeDumpVisitor.cpp?<wbr>rev=304248&r1=304247&r2=<wbr>304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>CompactTypeDumpVisitor.cpp (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>CompactTypeDumpVisitor.cpp Tue May 30 16:53:05 2017<br>
@@ -18,7 +18,7 @@ using namespace llvm::pdb;<br>
<br>
static const EnumEntry<TypeLeafKind> LeafTypeNames[] = {<br>
#define CV_TYPE(enum, val) {#enum, enum},<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
};<br>
<br>
static StringRef getLeafName(TypeLeafKind K) {<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>PdbYaml.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/PdbYaml.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/PdbYaml.cpp?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>PdbYaml.cpp (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>PdbYaml.cpp Tue May 30 16:53:05 2017<br>
@@ -9,9 +9,7 @@<br>
<br>
#include "PdbYaml.h"<br>
<br>
-#include "YamlSerializationContext.h"<br>
#include "YamlSymbolDumper.h"<br>
-#include "YamlTypeDumper.h"<br>
<br>
#include "llvm/ADT/StringExtras.h"<br>
#include "llvm/DebugInfo/CodeView/<wbr>CVSymbolVisitor.h"<br>
@@ -22,6 +20,7 @@<br>
#include "llvm/DebugInfo/CodeView/<wbr>TypeSerializer.h"<br>
#include "llvm/DebugInfo/CodeView/<wbr>TypeVisitorCallbackPipeline.h"<br>
#include "llvm/DebugInfo/PDB/Native/<wbr>PDBFile.h"<br>
+#include "llvm/DebugInfo/PDB/Native/<wbr>RawTypes.h"<br>
#include "llvm/DebugInfo/PDB/Native/<wbr>TpiHashing.h"<br>
#include "llvm/DebugInfo/PDB/PDBExtras.<wbr>h"<br>
#include "llvm/DebugInfo/PDB/PDBTypes.<wbr>h"<br>
@@ -35,15 +34,7 @@ LLVM_YAML_IS_FLOW_SEQUENCE_<wbr>VECTOR(uint32<br>
LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::StringRef)<br>
LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>NamedStreamMapping)<br>
LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbDbiModuleInfo)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbSourceFileChecksumEntry)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbSourceLineEntry)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbSourceColumnEntry)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbSourceLineBlock)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbSourceLineInfo)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbInlineeSite)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbInlineeInfo)<br>
LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbSymbolRecord)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::PdbTpiRecord)<br>
LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>StreamBlockList)<br>
LLVM_YAML_IS_FLOW_SEQUENCE_<wbr>VECTOR(llvm::pdb::PdbRaw_<wbr>FeatureSig)<br>
<br>
@@ -152,57 +143,18 @@ template <> struct ScalarEnumerationTrai<br>
io.enumCase(Features, "VC140", PdbRaw_FeatureSig::VC140);<br>
}<br>
};<br>
-<br>
-template <> struct ScalarEnumerationTraits<llvm::<wbr>codeview::FileChecksumKind> {<br>
- static void enumeration(IO &io, llvm::codeview::<wbr>FileChecksumKind &Kind) {<br>
- io.enumCase(Kind, "None", llvm::codeview::<wbr>FileChecksumKind::None);<br>
- io.enumCase(Kind, "MD5", llvm::codeview::<wbr>FileChecksumKind::MD5);<br>
- io.enumCase(Kind, "SHA1", llvm::codeview::<wbr>FileChecksumKind::SHA1);<br>
- io.enumCase(Kind, "SHA256", llvm::codeview::<wbr>FileChecksumKind::SHA256);<br>
- }<br>
-};<br>
-<br>
-template <> struct ScalarBitSetTraits<llvm::<wbr>codeview::LineFlags> {<br>
- static void bitset(IO &io, llvm::codeview::LineFlags &Flags) {<br>
- io.bitSetCase(Flags, "HasColumnInfo", llvm::codeview::LF_<wbr>HaveColumns);<br>
- io.enumFallback<Hex16>(Flags);<br>
- }<br>
-};<br>
-}<br>
}<br>
-<br>
-void ScalarTraits<<wbr>HexFormattedString>::output(<wbr>const HexFormattedString &Value,<br>
- void *ctx, raw_ostream &Out) {<br>
- StringRef Bytes(reinterpret_cast<const char *>(Value.Bytes.data()),<br>
- Value.Bytes.size());<br>
- Out << toHex(Bytes);<br>
-}<br>
-<br>
-StringRef ScalarTraits<<wbr>HexFormattedString>::input(<wbr>StringRef Scalar, void *ctxt,<br>
- HexFormattedString &Value) {<br>
- std::string H = fromHex(Scalar);<br>
- Value.Bytes.assign(H.begin(), H.end());<br>
- return StringRef();<br>
}<br>
<br>
void MappingTraits<PdbObject>::<wbr>mapping(IO &IO, PdbObject &Obj) {<br>
- // Create a single serialization context that will be passed through the<br>
- // entire process of serializing / deserializing a Tpi Stream. This is<br>
- // especially important when we are going from Pdb -> Yaml because we need<br>
- // to maintain state in a TypeTableBuilder across mappings, and at the end of<br>
- // the entire process, we need to have one TypeTableBuilder that has every<br>
- // record.<br>
- pdb::yaml::<wbr>SerializationContext Context(IO, Obj.Allocator);<br>
-<br>
-<br>
IO.mapOptional("MSF", Obj.Headers);<br>
IO.mapOptional("StreamSizes", Obj.StreamSizes);<br>
IO.mapOptional("StreamMap", Obj.StreamMap);<br>
IO.mapOptional("StringTable", Obj.StringTable);<br>
IO.mapOptional("PdbStream", Obj.PdbStream);<br>
- IO.mapOptionalWithContext("<wbr>DbiStream", Obj.DbiStream, Context);<br>
- IO.mapOptionalWithContext("<wbr>TpiStream", Obj.TpiStream, Context);<br>
- IO.mapOptionalWithContext("<wbr>IpiStream", Obj.IpiStream, Context);<br>
+ IO.mapOptional("DbiStream", Obj.DbiStream);<br>
+ IO.mapOptional("TpiStream", Obj.TpiStream);<br>
+ IO.mapOptional("IpiStream", Obj.IpiStream);<br>
}<br>
<br>
void MappingTraits<MSFHeaders>::<wbr>mapping(IO &IO, MSFHeaders &Obj) {<br>
@@ -239,7 +191,7 @@ void MappingTraits<PdbInfoStream>::<wbr>mappi<br>
IO.mapOptional("Version", Obj.Version, PdbImplVC70);<br>
}<br>
<br>
-void MappingContextTraits<<wbr>PdbDbiStream, pdb::yaml::<wbr>SerializationContext>::<wbr>mapping(IO &IO, PdbDbiStream &Obj, pdb::yaml::<wbr>SerializationContext &Context) {<br>
+void MappingTraits<PdbDbiStream>::<wbr>mapping(IO &IO, PdbDbiStream &Obj) {<br>
IO.mapOptional("VerHeader", Obj.VerHeader, PdbDbiV70);<br>
IO.mapOptional("Age", Obj.Age, 1U);<br>
IO.mapOptional("BuildNumber", Obj.BuildNumber, uint16_t(0U));<br>
@@ -247,13 +199,13 @@ void MappingContextTraits<<wbr>PdbDbiStream,<br>
IO.mapOptional("PdbDllRbld", Obj.PdbDllRbld, uint16_t(0U));<br>
IO.mapOptional("Flags", Obj.Flags, uint16_t(1U));<br>
IO.mapOptional("MachineType", Obj.MachineType, PDB_Machine::x86);<br>
- IO.mapOptionalWithContext("<wbr>Modules", Obj.ModInfos, Context);<br>
+ IO.mapOptional("Modules", Obj.ModInfos);<br>
}<br>
<br>
-void MappingContextTraits<<wbr>PdbTpiStream, pdb::yaml::<wbr>SerializationContext>::<wbr>mapping(<br>
- IO &IO, pdb::yaml::PdbTpiStream &Obj, pdb::yaml::<wbr>SerializationContext &Context) {<br>
+void MappingTraits<PdbTpiStream>::<wbr>mapping(IO &IO,<br>
+ pdb::yaml::PdbTpiStream &Obj) {<br>
IO.mapOptional("Version", Obj.Version, PdbTpiV80);<br>
- IO.mapRequired("Records", Obj.Records, Context);<br>
+ IO.mapRequired("Records", Obj.Records);<br>
}<br>
<br>
void MappingTraits<<wbr>NamedStreamMapping>::mapping(<wbr>IO &IO,<br>
@@ -262,9 +214,11 @@ void MappingTraits<<wbr>NamedStreamMapping>::<br>
IO.mapRequired("StreamNum", Obj.StreamNumber);<br>
}<br>
<br>
-void MappingContextTraits<<wbr>PdbSymbolRecord, pdb::yaml::<wbr>SerializationContext>::<wbr>mapping(IO &IO, PdbSymbolRecord &Obj, pdb::yaml::<wbr>SerializationContext &Context) {<br>
+void MappingTraits<PdbSymbolRecord><wbr>::mapping(IO &IO, PdbSymbolRecord &Obj) {<br>
+ BumpPtrAllocator *Alloc =<br>
+ reinterpret_cast<<wbr>BumpPtrAllocator *>(IO.getContext());<br>
codeview::<wbr>SymbolVisitorCallbackPipeline Pipeline;<br>
- codeview::SymbolSerializer Serializer(Context.Allocator);<br>
+ codeview::SymbolSerializer Serializer(*Alloc);<br>
codeview::SymbolDeserializer Deserializer(nullptr);<br>
codeview::yaml::<wbr>YamlSymbolDumper Dumper(IO);<br>
<br>
@@ -283,113 +237,15 @@ void MappingContextTraits<<wbr>PdbSymbolRecor<br>
consumeError(Visitor.<wbr>visitSymbolRecord(Obj.Record))<wbr>;<br>
}<br>
<br>
-void MappingContextTraits<<wbr>PdbModiStream, pdb::yaml::<wbr>SerializationContext>::<wbr>mapping(IO &IO, PdbModiStream &Obj, pdb::yaml::<wbr>SerializationContext &Context) {<br>
+void MappingTraits<PdbModiStream>::<wbr>mapping(IO &IO, PdbModiStream &Obj) {<br>
IO.mapOptional("Signature", Obj.Signature, 4U);<br>
- IO.mapRequired("Records", Obj.Symbols, Context);<br>
+ IO.mapRequired("Records", Obj.Symbols);<br>
}<br>
<br>
-void MappingContextTraits<<wbr>PdbDbiModuleInfo, pdb::yaml::<wbr>SerializationContext>::<wbr>mapping(IO &IO, PdbDbiModuleInfo &Obj, pdb::yaml::<wbr>SerializationContext &Context) {<br>
+void MappingTraits<<wbr>PdbDbiModuleInfo>::mapping(IO &IO, PdbDbiModuleInfo &Obj) {<br>
IO.mapRequired("Module", Obj.Mod);<br>
IO.mapOptional("ObjFile", Obj.Obj, Obj.Mod);<br>
IO.mapOptional("SourceFiles", Obj.SourceFiles);<br>
- IO.mapOptionalWithContext("<wbr>LineInfo", Obj.FileLineInfo, Context);<br>
- IO.mapOptionalWithContext("<wbr>Modi", Obj.Modi, Context);<br>
-}<br>
-<br>
-void MappingContextTraits<pdb::<wbr>yaml::PdbSourceLineEntry,<br>
- pdb::yaml::<wbr>SerializationContext>::<br>
- mapping(IO &IO, PdbSourceLineEntry &Obj,<br>
- pdb::yaml::<wbr>SerializationContext &Context) {<br>
- IO.mapRequired("Offset", Obj.Offset);<br>
- IO.mapRequired("LineStart", Obj.LineStart);<br>
- IO.mapRequired("IsStatement", Obj.IsStatement);<br>
- IO.mapRequired("EndDelta", Obj.EndDelta);<br>
-}<br>
-<br>
-void MappingContextTraits<pdb::<wbr>yaml::PdbSourceColumnEntry,<br>
- pdb::yaml::<wbr>SerializationContext>::<br>
- mapping(IO &IO, PdbSourceColumnEntry &Obj,<br>
- pdb::yaml::<wbr>SerializationContext &Context) {<br>
- IO.mapRequired("StartColumn", Obj.StartColumn);<br>
- IO.mapRequired("EndColumn", Obj.EndColumn);<br>
-}<br>
-<br>
-void MappingContextTraits<pdb::<wbr>yaml::PdbSourceLineBlock,<br>
- pdb::yaml::<wbr>SerializationContext>::<br>
- mapping(IO &IO, PdbSourceLineBlock &Obj,<br>
- pdb::yaml::<wbr>SerializationContext &Context) {<br>
- IO.mapRequired("FileName", Obj.FileName);<br>
- IO.mapRequired("Lines", Obj.Lines, Context);<br>
- IO.mapRequired("Columns", Obj.Columns, Context);<br>
-}<br>
-<br>
-void MappingContextTraits<pdb::<wbr>yaml::<wbr>PdbSourceFileChecksumEntry,<br>
- pdb::yaml::<wbr>SerializationContext>::<br>
- mapping(IO &IO, PdbSourceFileChecksumEntry &Obj,<br>
- pdb::yaml::<wbr>SerializationContext &Context) {<br>
- IO.mapRequired("FileName", Obj.FileName);<br>
- IO.mapRequired("Kind", Obj.Kind);<br>
- IO.mapRequired("Checksum", Obj.ChecksumBytes);<br>
-}<br>
-<br>
-void MappingContextTraits<pdb::<wbr>yaml::PdbSourceLineInfo,<br>
- pdb::yaml::<wbr>SerializationContext>::<br>
- mapping(IO &IO, PdbSourceLineInfo &Obj,<br>
- pdb::yaml::<wbr>SerializationContext &Context) {<br>
- IO.mapRequired("CodeSize", Obj.CodeSize);<br>
-<br>
- IO.mapRequired("Flags", Obj.Flags);<br>
- IO.mapRequired("RelocOffset", Obj.RelocOffset);<br>
- IO.mapRequired("RelocSegment", Obj.RelocSegment);<br>
- IO.mapRequired("Blocks", Obj.Blocks, Context);<br>
-}<br>
-<br>
-void MappingContextTraits<pdb::<wbr>yaml::PdbSourceFileInfo,<br>
- pdb::yaml::<wbr>SerializationContext>::<br>
- mapping(IO &IO, PdbSourceFileInfo &Obj,<br>
- pdb::yaml::<wbr>SerializationContext &Context) {<br>
- IO.mapOptionalWithContext("<wbr>Checksums", Obj.FileChecksums, Context);<br>
- IO.mapOptionalWithContext("<wbr>Lines", Obj.LineFragments, Context);<br>
- IO.mapOptionalWithContext("<wbr>InlineeLines", Obj.Inlinees, Context);<br>
-}<br>
-<br>
-void MappingContextTraits<<wbr>PdbInlineeSite, SerializationContext>::<wbr>mapping(<br>
- IO &IO, PdbInlineeSite &Obj, SerializationContext &Context) {<br>
- IO.mapRequired("FileName", Obj.FileName);<br>
- IO.mapRequired("LineNum", Obj.SourceLineNum);<br>
- IO.mapRequired("Inlinee", Obj.Inlinee);<br>
- IO.mapOptional("ExtraFiles", Obj.ExtraFiles);<br>
-}<br>
-<br>
-void MappingContextTraits<<wbr>PdbInlineeInfo, SerializationContext>::<wbr>mapping(<br>
- IO &IO, PdbInlineeInfo &Obj, SerializationContext &Context) {<br>
- IO.mapRequired("HasExtraFiles"<wbr>, Obj.HasExtraFiles);<br>
- IO.mapRequired("Sites", Obj.Sites, Context);<br>
-}<br>
-<br>
-void MappingContextTraits<<wbr>PdbTpiRecord, pdb::yaml::<wbr>SerializationContext>::<br>
- mapping(IO &IO, pdb::yaml::PdbTpiRecord &Obj,<br>
- pdb::yaml::<wbr>SerializationContext &Context) {<br>
- if (IO.outputting()) {<br>
- // For PDB to Yaml, deserialize into a high level record type, then dump it.<br>
- consumeError(codeview::<wbr>visitTypeRecord(Obj.Record, Context.Dumper));<br>
- } else {<br>
- codeview::<wbr>TypeVisitorCallbackPipeline Pipeline;<br>
- codeview::TypeSerializer Serializer(Context.Allocator);<br>
- pdb::TpiHashUpdater Hasher;<br>
- // For Yaml to PDB, extract from the high level record type, then write it<br>
- // to bytes.<br>
-<br>
- // This might be interpreted as a hack, but serializing FieldList<br>
- // sub-records requires having access to the same serializer being used by<br>
- // the FieldList itself.<br>
- Context.ActiveSerializer = &Serializer;<br>
- Pipeline.<wbr>addCallbackToPipeline(Context.<wbr>Dumper);<br>
- Pipeline.<wbr>addCallbackToPipeline(<wbr>Serializer);<br>
- Pipeline.<wbr>addCallbackToPipeline(Hasher);<br>
- consumeError(codeview::<wbr>visitTypeRecord(Obj.Record, Pipeline,<br>
- codeview::VDS_BytesExternal));<br>
- }<br>
-<br>
- Context.ActiveSerializer = nullptr;<br>
+ IO.mapOptional("LineInfo", Obj.FileLineInfo);<br>
+ IO.mapOptional("Modi", Obj.Modi);<br>
}<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>PdbYaml.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/PdbYaml.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/PdbYaml.h?rev=304248&<wbr>r1=304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>PdbYaml.h (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>PdbYaml.h Tue May 30 16:53:05 2017<br>
@@ -19,6 +19,7 @@<br>
#include "llvm/DebugInfo/PDB/Native/<wbr>PDBFile.h"<br>
#include "llvm/DebugInfo/PDB/Native/<wbr>RawConstants.h"<br>
#include "llvm/DebugInfo/PDB/PDBTypes.<wbr>h"<br>
+#include "llvm/ObjectYAML/CodeViewYAML.<wbr>h"<br>
#include "llvm/Support/Endian.h"<br>
#include "llvm/Support/YAMLTraits.h"<br>
<br>
@@ -65,66 +66,11 @@ struct PdbModiStream {<br>
std::vector<PdbSymbolRecord> Symbols;<br>
};<br>
<br>
-struct PdbSourceLineEntry {<br>
- uint32_t Offset;<br>
- uint32_t LineStart;<br>
- uint32_t EndDelta;<br>
- bool IsStatement;<br>
-};<br>
-<br>
-struct PdbSourceColumnEntry {<br>
- uint16_t StartColumn;<br>
- uint16_t EndColumn;<br>
-};<br>
-<br>
-struct PdbSourceLineBlock {<br>
- StringRef FileName;<br>
- std::vector<<wbr>PdbSourceLineEntry> Lines;<br>
- std::vector<<wbr>PdbSourceColumnEntry> Columns;<br>
-};<br>
-<br>
-struct HexFormattedString {<br>
- std::vector<uint8_t> Bytes;<br>
-};<br>
-<br>
-struct PdbSourceFileChecksumEntry {<br>
- StringRef FileName;<br>
- codeview::FileChecksumKind Kind;<br>
- HexFormattedString ChecksumBytes;<br>
-};<br>
-<br>
-struct PdbSourceLineInfo {<br>
- uint32_t RelocOffset;<br>
- uint32_t RelocSegment;<br>
- codeview::LineFlags Flags;<br>
- uint32_t CodeSize;<br>
-<br>
- std::vector<<wbr>PdbSourceLineBlock> Blocks;<br>
-};<br>
-<br>
-struct PdbInlineeSite {<br>
- codeview::TypeIndex Inlinee;<br>
- StringRef FileName;<br>
- uint32_t SourceLineNum;<br>
- std::vector<StringRef> ExtraFiles;<br>
-};<br>
-<br>
-struct PdbInlineeInfo {<br>
- bool HasExtraFiles;<br>
- std::vector<PdbInlineeSite> Sites;<br>
-};<br>
-<br>
-struct PdbSourceFileInfo {<br>
- std::vector<<wbr>PdbSourceFileChecksumEntry> FileChecksums;<br>
- std::vector<PdbSourceLineInfo> LineFragments;<br>
- std::vector<PdbInlineeInfo> Inlinees;<br>
-};<br>
-<br>
struct PdbDbiModuleInfo {<br>
StringRef Obj;<br>
StringRef Mod;<br>
std::vector<StringRef> SourceFiles;<br>
- Optional<PdbSourceFileInfo> FileLineInfo;<br>
+ Optional<CodeViewYAML::<wbr>SourceFileInfo> FileLineInfo;<br>
Optional<PdbModiStream> Modi;<br>
};<br>
<br>
@@ -140,17 +86,9 @@ struct PdbDbiStream {<br>
std::vector<PdbDbiModuleInfo> ModInfos;<br>
};<br>
<br>
-struct PdbTpiRecord {<br>
- codeview::CVType Record;<br>
-};<br>
-<br>
-struct PdbTpiFieldListRecord {<br>
- codeview::CVMemberRecord Record;<br>
-};<br>
-<br>
struct PdbTpiStream {<br>
PdbRaw_TpiVer Version = PdbTpiV80;<br>
- std::vector<PdbTpiRecord> Records;<br>
+ std::vector<CodeViewYAML::<wbr>LeafRecord> Records;<br>
};<br>
<br>
struct PdbObject {<br>
@@ -172,126 +110,16 @@ struct PdbObject {<br>
}<br>
}<br>
<br>
-namespace llvm {<br>
-namespace yaml {<br>
-<br>
-template <> struct MappingTraits<pdb::yaml::<wbr>PdbObject> {<br>
- static void mapping(IO &IO, pdb::yaml::PdbObject &Obj);<br>
-};<br>
-<br>
-template <> struct MappingTraits<pdb::yaml::<wbr>MSFHeaders> {<br>
- static void mapping(IO &IO, pdb::yaml::MSFHeaders &Obj);<br>
-};<br>
-<br>
-template <> struct MappingTraits<msf::SuperBlock> {<br>
- static void mapping(IO &IO, msf::SuperBlock &SB);<br>
-};<br>
-<br>
-template <> struct MappingTraits<pdb::yaml::<wbr>StreamBlockList> {<br>
- static void mapping(IO &IO, pdb::yaml::StreamBlockList &SB);<br>
-};<br>
-<br>
-template <> struct MappingTraits<pdb::yaml::<wbr>PdbInfoStream> {<br>
- static void mapping(IO &IO, pdb::yaml::PdbInfoStream &Obj);<br>
-};<br>
-<br>
-template <> struct MappingContextTraits<pdb::<wbr>yaml::PdbDbiStream, pdb::yaml::<wbr>SerializationContext> {<br>
- static void mapping(IO &IO, pdb::yaml::PdbDbiStream &Obj, pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbTpiStream, pdb::yaml::<wbr>SerializationContext> {<br>
- static void mapping(IO &IO, pdb::yaml::PdbTpiStream &Obj,<br>
- pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <> struct MappingTraits<pdb::yaml::<wbr>NamedStreamMapping> {<br>
- static void mapping(IO &IO, pdb::yaml::NamedStreamMapping &Obj);<br>
-};<br>
-<br>
-template <> struct MappingContextTraits<pdb::<wbr>yaml::PdbSymbolRecord, pdb::yaml::<wbr>SerializationContext> {<br>
- static void mapping(IO &IO, pdb::yaml::PdbSymbolRecord &Obj, pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <> struct MappingContextTraits<pdb::<wbr>yaml::PdbModiStream, pdb::yaml::<wbr>SerializationContext> {<br>
- static void mapping(IO &IO, pdb::yaml::PdbModiStream &Obj, pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <> struct MappingContextTraits<pdb::<wbr>yaml::PdbDbiModuleInfo, pdb::yaml::<wbr>SerializationContext> {<br>
- static void mapping(IO &IO, pdb::yaml::PdbDbiModuleInfo &Obj, pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbSourceLineEntry,<br>
- pdb::yaml::<wbr>SerializationContext> {<br>
- static void mapping(IO &IO, pdb::yaml::PdbSourceLineEntry &Obj,<br>
- pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbSourceColumnEntry,<br>
- pdb::yaml::<wbr>SerializationContext> {<br>
- static void mapping(IO &IO, pdb::yaml::<wbr>PdbSourceColumnEntry &Obj,<br>
- pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbSourceLineBlock,<br>
- pdb::yaml::<wbr>SerializationContext> {<br>
- static void mapping(IO &IO, pdb::yaml::PdbSourceLineBlock &Obj,<br>
- pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::<wbr>PdbSourceFileChecksumEntry,<br>
- pdb::yaml::<wbr>SerializationContext> {<br>
- static void mapping(IO &IO, pdb::yaml::<wbr>PdbSourceFileChecksumEntry &Obj,<br>
- pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <> struct ScalarTraits<pdb::yaml::<wbr>HexFormattedString> {<br>
- static void output(const pdb::yaml::HexFormattedString &Value, void *ctx,<br>
- llvm::raw_ostream &Out);<br>
- static StringRef input(StringRef Scalar, void *ctxt,<br>
- pdb::yaml::HexFormattedString &Value);<br>
- static bool mustQuote(StringRef) { return false; }<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbSourceLineInfo,<br>
- pdb::yaml::<wbr>SerializationContext> {<br>
- static void mapping(IO &IO, pdb::yaml::PdbSourceLineInfo &Obj,<br>
- pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbSourceFileInfo,<br>
- pdb::yaml::<wbr>SerializationContext> {<br>
- static void mapping(IO &IO, pdb::yaml::PdbSourceFileInfo &Obj,<br>
- pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbInlineeInfo,<br>
- pdb::yaml::<wbr>SerializationContext> {<br>
- static void mapping(IO &IO, pdb::yaml::PdbInlineeInfo &Obj,<br>
- pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbInlineeSite,<br>
- pdb::yaml::<wbr>SerializationContext> {<br>
- static void mapping(IO &IO, pdb::yaml::PdbInlineeSite &Obj,<br>
- pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbTpiRecord,<br>
- pdb::yaml::<wbr>SerializationContext> {<br>
- static void mapping(IO &IO, pdb::yaml::PdbTpiRecord &Obj,<br>
- pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-}<br>
-}<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::PdbObject)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::MSFHeaders)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(msf::SuperBlock)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::<wbr>StreamBlockList)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::<wbr>PdbInfoStream)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::<wbr>PdbDbiStream)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::<wbr>PdbTpiStream)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::<wbr>NamedStreamMapping)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::<wbr>PdbSymbolRecord)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::<wbr>PdbModiStream)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::<wbr>PdbDbiModuleInfo)<br>
<br>
#endif // LLVM_TOOLS_LLVMPDBDUMP_<wbr>PDBYAML_H<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>YAMLOutputStyle.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/YAMLOutputStyle.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/YAMLOutputStyle.cpp?<wbr>rev=304248&r1=304247&r2=<wbr>304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>YAMLOutputStyle.cpp (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>YAMLOutputStyle.cpp Tue May 30 16:53:05 2017<br>
@@ -28,6 +28,7 @@<br>
#include "llvm/DebugInfo/PDB/Native/<wbr>RawConstants.h"<br>
#include "llvm/DebugInfo/PDB/Native/<wbr>RawError.h"<br>
#include "llvm/DebugInfo/PDB/Native/<wbr>TpiStream.h"<br>
+#include "llvm/ObjectYAML/CodeViewYAML.<wbr>h"<br>
<br>
using namespace llvm;<br>
using namespace llvm::codeview;<br>
@@ -104,12 +105,12 @@ Error YAMLOutputStyle::dump() {<br>
namespace {<br>
class C13YamlVisitor : public C13DebugFragmentVisitor {<br>
public:<br>
- C13YamlVisitor(llvm::pdb::<wbr>yaml::PdbSourceFileInfo &Info, PDBFile &F)<br>
+ C13YamlVisitor(CodeViewYAML::<wbr>SourceFileInfo &Info, PDBFile &F)<br>
: C13DebugFragmentVisitor(F), Info(Info) {}<br>
<br>
Error handleFileChecksums() override {<br>
for (const auto &C : *Checksums) {<br>
- llvm::pdb::yaml::<wbr>PdbSourceFileChecksumEntry Entry;<br>
+ CodeViewYAML::<wbr>SourceFileChecksumEntry Entry;<br>
if (auto Result = getNameFromStringTable(C.<wbr>FileNameOffset))<br>
Entry.FileName = *Result;<br>
else<br>
@@ -143,7 +144,7 @@ public:<br>
return Result.takeError();<br>
<br>
for (const auto &N : L.LineNumbers) {<br>
- llvm::pdb::yaml::<wbr>PdbSourceLineEntry Line;<br>
+ CodeViewYAML::SourceLineEntry Line;<br>
Line.Offset = N.Offset;<br>
codeview::LineInfo LI(N.Flags);<br>
Line.LineStart = LI.getStartLine();<br>
@@ -154,7 +155,7 @@ public:<br>
<br>
if (LF.hasColumnInfo()) {<br>
for (const auto &C : L.Columns) {<br>
- llvm::pdb::yaml::<wbr>PdbSourceColumnEntry Column;<br>
+ CodeViewYAML::<wbr>SourceColumnEntry Column;<br>
Column.StartColumn = C.StartColumn;<br>
Column.EndColumn = C.EndColumn;<br>
Block.Columns.push_back(<wbr>Column);<br>
@@ -179,7 +180,7 @@ public:<br>
else<br>
return Result.takeError();<br>
<br>
- Site.Inlinee = IL.Header->Inlinee;<br>
+ Site.Inlinee = IL.Header->Inlinee.getIndex();<br>
Site.SourceLineNum = IL.Header->SourceLineNum;<br>
if (ILF.hasExtraFiles()) {<br>
for (const auto &EF : IL.ExtraFiles) {<br>
@@ -195,17 +196,16 @@ public:<br>
}<br>
<br>
private:<br>
-<br>
- llvm::pdb::yaml::<wbr>PdbSourceFileInfo &Info;<br>
+ CodeViewYAML::SourceFileInfo &Info;<br>
};<br>
}<br>
<br>
-Expected<Optional<llvm::pdb::<wbr>yaml::PdbSourceFileInfo>><br>
+Expected<Optional<<wbr>CodeViewYAML::SourceFileInfo>><br>
YAMLOutputStyle::<wbr>getFileLineInfo(const pdb::ModuleDebugStreamRef &ModS) {<br>
if (!ModS.hasLineInfo())<br>
return None;<br>
<br>
- yaml::PdbSourceFileInfo Info;<br>
+ CodeViewYAML::SourceFileInfo Info;<br>
C13YamlVisitor Visitor(Info, File);<br>
if (auto EC =<br>
codeview::<wbr>visitDebugSubsections(ModS.<wbr>linesAndChecksums(), Visitor))<br>
@@ -378,13 +378,10 @@ Error YAMLOutputStyle::<wbr>dumpTpiStream() {<br>
Obj.TpiStream.emplace();<br>
Obj.TpiStream->Version = TS.getTpiVersion();<br>
for (auto &Record : TS.types(nullptr)) {<br>
- yaml::PdbTpiRecord R;<br>
- // It's not necessary to set R.RecordData here. That only exists as a<br>
- // way to have the `PdbTpiRecord` structure own the memory that `R.Record`<br>
- // references. In the case of reading an existing PDB though, that memory<br>
- // is owned by the backing stream.<br>
- R.Record = Record;<br>
- Obj.TpiStream->Records.push_<wbr>back(R);<br>
+ auto ExpectedRecord = CodeViewYAML::LeafRecord::<wbr>fromCodeViewRecord(Record);<br>
+ if (!ExpectedRecord)<br>
+ return ExpectedRecord.takeError();<br>
+ Obj.TpiStream->Records.push_<wbr>back(*ExpectedRecord);<br>
}<br>
<br>
return Error::success();<br>
@@ -402,9 +399,11 @@ Error YAMLOutputStyle::<wbr>dumpIpiStream() {<br>
Obj.IpiStream.emplace();<br>
Obj.IpiStream->Version = IS.getTpiVersion();<br>
for (auto &Record : IS.types(nullptr)) {<br>
- yaml::PdbTpiRecord R;<br>
- R.Record = Record;<br>
- Obj.IpiStream->Records.push_<wbr>back(R);<br>
+ auto ExpectedRecord = CodeViewYAML::LeafRecord::<wbr>fromCodeViewRecord(Record);<br>
+ if (!ExpectedRecord)<br>
+ return ExpectedRecord.takeError();<br>
+<br>
+ Obj.IpiStream->Records.push_<wbr>back(*ExpectedRecord);<br>
}<br>
<br>
return Error::success();<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>YAMLOutputStyle.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/YAMLOutputStyle.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/YAMLOutputStyle.h?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>YAMLOutputStyle.h (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>YAMLOutputStyle.h Tue May 30 16:53:05 2017<br>
@@ -27,7 +27,7 @@ public:<br>
Error dump() override;<br>
<br>
private:<br>
- Expected<Optional<llvm::pdb::<wbr>yaml::PdbSourceFileInfo>><br>
+ Expected<Optional<<wbr>CodeViewYAML::SourceFileInfo>><br>
getFileLineInfo(const pdb::ModuleDebugStreamRef &ModS);<br>
<br>
Error dumpStringTable();<br>
<br>
Removed: llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSerializationContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/YamlSerializationContext.h?rev=304247&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/<wbr>YamlSerializationContext.h?<wbr>rev=304247&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSerializationContext.h (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSerializationContext.h (removed)<br>
@@ -1,39 +0,0 @@<br>
-//===- YamlSerializationContext.h ----------------------------- *- 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>
-//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
-<br>
-#ifndef LLVM_TOOLS_LLVMPDBDUMP_<wbr>YAMLSERIALIZATIONCONTEXT_H<br>
-#define LLVM_TOOLS_LLVMPDBDUMP_<wbr>YAMLSERIALIZATIONCONTEXT_H<br>
-<br>
-#include "PdbYaml.h"<br>
-#include "YamlTypeDumper.h"<br>
-#include "llvm/Support/Allocator.h"<br>
-<br>
-namespace llvm {<br>
-namespace codeview {<br>
-class TypeSerializer;<br>
-}<br>
-namespace yaml {<br>
-class IO;<br>
-}<br>
-<br>
-namespace pdb {<br>
-namespace yaml {<br>
-struct SerializationContext {<br>
- explicit SerializationContext(llvm::<wbr>yaml::IO &IO, BumpPtrAllocator &Allocator)<br>
- : Dumper(IO, *this), Allocator(Allocator) {}<br>
-<br>
- codeview::yaml::<wbr>YamlTypeDumperCallbacks Dumper;<br>
- BumpPtrAllocator &Allocator;<br>
- codeview::TypeSerializer *ActiveSerializer = nullptr;<br>
-};<br>
-}<br>
-}<br>
-}<br>
-<br>
-#endif<br>
\ No newline at end of file<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSymbolDumper.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/YamlSymbolDumper.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/YamlSymbolDumper.cpp?<wbr>rev=304248&r1=304247&r2=<wbr>304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSymbolDumper.cpp (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSymbolDumper.cpp Tue May 30 16:53:05 2017<br>
@@ -9,7 +9,6 @@<br>
<br>
#include "YamlSymbolDumper.h"<br>
#include "PdbYaml.h"<br>
-#include "YamlTypeDumper.h"<br>
<br>
#include "llvm/DebugInfo/CodeView/<wbr>CVSymbolVisitor.h"<br>
#include "llvm/DebugInfo/CodeView/<wbr>EnumTables.h"<br>
@@ -27,10 +26,10 @@ LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>OneMethodRe<br>
LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>VFTableSlotKind)<br>
LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>StringRef)<br>
LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>CVType)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbTpiFieldListRecord)<br>
<br>
namespace llvm {<br>
namespace yaml {<br>
+<br>
void ScalarEnumerationTraits<<wbr>SymbolKind>::enumeration(IO &io,<br>
SymbolKind &Value) {<br>
auto SymbolNames = getSymbolTypeNames();<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSymbolDumper.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/YamlSymbolDumper.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/YamlSymbolDumper.h?<wbr>rev=304248&r1=304247&r2=<wbr>304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSymbolDumper.h (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSymbolDumper.h Tue May 30 16:53:05 2017<br>
@@ -34,7 +34,7 @@ public:<br>
return Error::success(); \<br>
}<br>
#define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewSymbols.def"<br>
<br>
private:<br>
template <typename T><br>
@@ -59,7 +59,7 @@ template <> struct ScalarEnumerationTrai<br>
static void mapping(IO &IO, codeview::Name &Obj); \<br>
};<br>
#define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewSymbols.def"<br>
}<br>
}<br>
<br>
<br>
Removed: llvm/trunk/tools/llvm-pdbdump/<wbr>YamlTypeDumper.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/YamlTypeDumper.cpp?rev=304247&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/YamlTypeDumper.cpp?<wbr>rev=304247&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>YamlTypeDumper.cpp (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>YamlTypeDumper.cpp (removed)<br>
@@ -1,589 +0,0 @@<br>
-//===- YamlTypeDumper.cpp ------------------------------<wbr>------- *- 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>
-//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
-<br>
-#include "YamlTypeDumper.h"<br>
-#include "PdbYaml.h"<br>
-#include "YamlSerializationContext.h"<br>
-<br>
-#include "llvm/DebugInfo/CodeView/<wbr>CVTypeVisitor.h"<br>
-#include "llvm/DebugInfo/CodeView/<wbr>EnumTables.h"<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecord.h"<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeSerializer.h"<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeVisitorCallbackPipeline.h"<br>
-#include "llvm/DebugInfo/PDB/Native/<wbr>TpiHashing.h"<br>
-<br>
-using namespace llvm;<br>
-using namespace llvm::codeview;<br>
-using namespace llvm::codeview::yaml;<br>
-<br>
-LLVM_YAML_IS_FLOW_SEQUENCE_<wbr>VECTOR(TypeIndex)<br>
-LLVM_YAML_IS_FLOW_SEQUENCE_<wbr>VECTOR(uint64_t)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>OneMethodRecord)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>VFTableSlotKind)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>StringRef)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>CVType)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbTpiFieldListRecord)<br>
-<br>
-namespace {<br>
-struct FieldListRecordSplitter : public TypeVisitorCallbacks {<br>
-public:<br>
- explicit FieldListRecordSplitter(<br>
- std::vector<llvm::pdb::yaml::<wbr>PdbTpiFieldListRecord> &Records)<br>
- : Records(Records) {}<br>
-<br>
-#define TYPE_RECORD(EnumName, EnumVal, Name)<br>
-#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#define MEMBER_RECORD(EnumName, EnumVal, Name) \<br>
- Error visitKnownMember(<wbr>CVMemberRecord &CVT, Name##Record &Record) override { \<br>
- visitKnownMemberImpl(CVT); \<br>
- return Error::success(); \<br>
- }<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
-<br>
-private:<br>
- void visitKnownMemberImpl(<wbr>CVMemberRecord &CVT) {<br>
- llvm::pdb::yaml::<wbr>PdbTpiFieldListRecord R;<br>
- R.Record = CVT;<br>
- Records.push_back(std::move(R)<wbr>);<br>
- }<br>
-<br>
- std::vector<llvm::pdb::yaml::<wbr>PdbTpiFieldListRecord> &Records;<br>
-};<br>
-}<br>
-<br>
-namespace llvm {<br>
-namespace yaml {<br>
-template <> struct ScalarEnumerationTraits<<wbr>PointerToMemberRepresentation> {<br>
- static void enumeration(IO &IO, PointerToMemberRepresentation &Value) {<br>
- IO.enumCase(Value, "Unknown", PointerToMemberRepresentation:<wbr>:Unknown);<br>
- IO.enumCase(Value, "SingleInheritanceData",<br>
- PointerToMemberRepresentation:<wbr>:SingleInheritanceData);<br>
- IO.enumCase(Value, "MultipleInheritanceData",<br>
- PointerToMemberRepresentation:<wbr>:MultipleInheritanceData);<br>
- IO.enumCase(Value, "VirtualInheritanceData",<br>
- PointerToMemberRepresentation:<wbr>:VirtualInheritanceData);<br>
- IO.enumCase(Value, "GeneralData",<br>
- PointerToMemberRepresentation:<wbr>:GeneralData);<br>
- IO.enumCase(Value, "SingleInheritanceFunction",<br>
- PointerToMemberRepresentation:<wbr>:SingleInheritanceFunction);<br>
- IO.enumCase(Value, "MultipleInheritanceFunction",<br>
- PointerToMemberRepresentation:<wbr>:MultipleInheritanceFunction);<br>
- IO.enumCase(Value, "VirtualInheritanceFunction",<br>
- PointerToMemberRepresentation:<wbr>:VirtualInheritanceFunction);<br>
- IO.enumCase(Value, "GeneralFunction",<br>
- PointerToMemberRepresentation:<wbr>:GeneralFunction);<br>
- }<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>VFTableSlotKind> {<br>
- static void enumeration(IO &IO, VFTableSlotKind &Kind) {<br>
- IO.enumCase(Kind, "Near16", VFTableSlotKind::Near16);<br>
- IO.enumCase(Kind, "Far16", VFTableSlotKind::Far16);<br>
- IO.enumCase(Kind, "This", VFTableSlotKind::This);<br>
- IO.enumCase(Kind, "Outer", VFTableSlotKind::Outer);<br>
- IO.enumCase(Kind, "Meta", VFTableSlotKind::Meta);<br>
- IO.enumCase(Kind, "Near", VFTableSlotKind::Near);<br>
- IO.enumCase(Kind, "Far", VFTableSlotKind::Far);<br>
- }<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>CallingConvention> {<br>
- static void enumeration(IO &IO, CallingConvention &Value) {<br>
- IO.enumCase(Value, "NearC", CallingConvention::NearC);<br>
- IO.enumCase(Value, "FarC", CallingConvention::FarC);<br>
- IO.enumCase(Value, "NearPascal", CallingConvention::NearPascal)<wbr>;<br>
- IO.enumCase(Value, "FarPascal", CallingConvention::FarPascal);<br>
- IO.enumCase(Value, "NearFast", CallingConvention::NearFast);<br>
- IO.enumCase(Value, "FarFast", CallingConvention::FarFast);<br>
- IO.enumCase(Value, "NearStdCall", CallingConvention::<wbr>NearStdCall);<br>
- IO.enumCase(Value, "FarStdCall", CallingConvention::FarStdCall)<wbr>;<br>
- IO.enumCase(Value, "NearSysCall", CallingConvention::<wbr>NearSysCall);<br>
- IO.enumCase(Value, "FarSysCall", CallingConvention::FarSysCall)<wbr>;<br>
- IO.enumCase(Value, "ThisCall", CallingConvention::ThisCall);<br>
- IO.enumCase(Value, "MipsCall", CallingConvention::MipsCall);<br>
- IO.enumCase(Value, "Generic", CallingConvention::Generic);<br>
- IO.enumCase(Value, "AlphaCall", CallingConvention::AlphaCall);<br>
- IO.enumCase(Value, "PpcCall", CallingConvention::PpcCall);<br>
- IO.enumCase(Value, "SHCall", CallingConvention::SHCall);<br>
- IO.enumCase(Value, "ArmCall", CallingConvention::ArmCall);<br>
- IO.enumCase(Value, "AM33Call", CallingConvention::AM33Call);<br>
- IO.enumCase(Value, "TriCall", CallingConvention::TriCall);<br>
- IO.enumCase(Value, "SH5Call", CallingConvention::SH5Call);<br>
- IO.enumCase(Value, "M32RCall", CallingConvention::M32RCall);<br>
- IO.enumCase(Value, "ClrCall", CallingConvention::ClrCall);<br>
- IO.enumCase(Value, "Inline", CallingConvention::Inline);<br>
- IO.enumCase(Value, "NearVector", CallingConvention::NearVector)<wbr>;<br>
- }<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>PointerKind> {<br>
- static void enumeration(IO &IO, PointerKind &Kind) {<br>
- IO.enumCase(Kind, "Near16", PointerKind::Near16);<br>
- IO.enumCase(Kind, "Far16", PointerKind::Far16);<br>
- IO.enumCase(Kind, "Huge16", PointerKind::Huge16);<br>
- IO.enumCase(Kind, "BasedOnSegment", PointerKind::BasedOnSegment);<br>
- IO.enumCase(Kind, "BasedOnValue", PointerKind::BasedOnValue);<br>
- IO.enumCase(Kind, "BasedOnSegmentValue", PointerKind::<wbr>BasedOnSegmentValue);<br>
- IO.enumCase(Kind, "BasedOnAddress", PointerKind::BasedOnAddress);<br>
- IO.enumCase(Kind, "BasedOnSegmentAddress",<br>
- PointerKind::<wbr>BasedOnSegmentAddress);<br>
- IO.enumCase(Kind, "BasedOnType", PointerKind::BasedOnType);<br>
- IO.enumCase(Kind, "BasedOnSelf", PointerKind::BasedOnSelf);<br>
- IO.enumCase(Kind, "Near32", PointerKind::Near32);<br>
- IO.enumCase(Kind, "Far32", PointerKind::Far32);<br>
- IO.enumCase(Kind, "Near64", PointerKind::Near64);<br>
- }<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>PointerMode> {<br>
- static void enumeration(IO &IO, PointerMode &Mode) {<br>
- IO.enumCase(Mode, "Pointer", PointerMode::Pointer);<br>
- IO.enumCase(Mode, "LValueReference", PointerMode::LValueReference);<br>
- IO.enumCase(Mode, "PointerToDataMember", PointerMode::<wbr>PointerToDataMember);<br>
- IO.enumCase(Mode, "PointerToMemberFunction",<br>
- PointerMode::<wbr>PointerToMemberFunction);<br>
- IO.enumCase(Mode, "RValueReference", PointerMode::RValueReference);<br>
- }<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>HfaKind> {<br>
- static void enumeration(IO &IO, HfaKind &Value) {<br>
- IO.enumCase(Value, "None", HfaKind::None);<br>
- IO.enumCase(Value, "Float", HfaKind::Float);<br>
- IO.enumCase(Value, "Double", HfaKind::Double);<br>
- IO.enumCase(Value, "Other", HfaKind::Other);<br>
- }<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>MemberAccess> {<br>
- static void enumeration(IO &IO, MemberAccess &Access) {<br>
- IO.enumCase(Access, "None", MemberAccess::None);<br>
- IO.enumCase(Access, "Private", MemberAccess::Private);<br>
- IO.enumCase(Access, "Protected", MemberAccess::Protected);<br>
- IO.enumCase(Access, "Public", MemberAccess::Public);<br>
- }<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>MethodKind> {<br>
- static void enumeration(IO &IO, MethodKind &Kind) {<br>
- IO.enumCase(Kind, "Vanilla", MethodKind::Vanilla);<br>
- IO.enumCase(Kind, "Virtual", MethodKind::Virtual);<br>
- IO.enumCase(Kind, "Static", MethodKind::Static);<br>
- IO.enumCase(Kind, "Friend", MethodKind::Friend);<br>
- IO.enumCase(Kind, "IntroducingVirtual", MethodKind::<wbr>IntroducingVirtual);<br>
- IO.enumCase(Kind, "PureVirtual", MethodKind::PureVirtual);<br>
- IO.enumCase(Kind, "PureIntroducingVirtual",<br>
- MethodKind::<wbr>PureIntroducingVirtual);<br>
- }<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>WindowsRTClassKind> {<br>
- static void enumeration(IO &IO, WindowsRTClassKind &Value) {<br>
- IO.enumCase(Value, "None", WindowsRTClassKind::None);<br>
- IO.enumCase(Value, "Ref", WindowsRTClassKind::RefClass);<br>
- IO.enumCase(Value, "Value", WindowsRTClassKind::<wbr>ValueClass);<br>
- IO.enumCase(Value, "Interface", WindowsRTClassKind::Interface)<wbr>;<br>
- }<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>LabelType> {<br>
- static void enumeration(IO &IO, LabelType &Value) {<br>
- IO.enumCase(Value, "Near", LabelType::Near);<br>
- IO.enumCase(Value, "Far", LabelType::Far);<br>
- }<br>
-};<br>
-<br>
-template <> struct ScalarBitSetTraits<<wbr>PointerOptions> {<br>
- static void bitset(IO &IO, PointerOptions &Options) {<br>
- IO.bitSetCase(Options, "None", PointerOptions::None);<br>
- IO.bitSetCase(Options, "Flat32", PointerOptions::Flat32);<br>
- IO.bitSetCase(Options, "Volatile", PointerOptions::Volatile);<br>
- IO.bitSetCase(Options, "Const", PointerOptions::Const);<br>
- IO.bitSetCase(Options, "Unaligned", PointerOptions::Unaligned);<br>
- IO.bitSetCase(Options, "Restrict", PointerOptions::Restrict);<br>
- IO.bitSetCase(Options, "WinRTSmartPointer",<br>
- PointerOptions::<wbr>WinRTSmartPointer);<br>
- }<br>
-};<br>
-<br>
-template <> struct ScalarBitSetTraits<<wbr>ModifierOptions> {<br>
- static void bitset(IO &IO, ModifierOptions &Options) {<br>
- IO.bitSetCase(Options, "None", ModifierOptions::None);<br>
- IO.bitSetCase(Options, "Const", ModifierOptions::Const);<br>
- IO.bitSetCase(Options, "Volatile", ModifierOptions::Volatile);<br>
- IO.bitSetCase(Options, "Unaligned", ModifierOptions::Unaligned);<br>
- }<br>
-};<br>
-<br>
-template <> struct ScalarBitSetTraits<<wbr>FunctionOptions> {<br>
- static void bitset(IO &IO, FunctionOptions &Options) {<br>
- IO.bitSetCase(Options, "None", FunctionOptions::None);<br>
- IO.bitSetCase(Options, "CxxReturnUdt", FunctionOptions::CxxReturnUdt)<wbr>;<br>
- IO.bitSetCase(Options, "Constructor", FunctionOptions::Constructor);<br>
- IO.bitSetCase(Options, "ConstructorWithVirtualBases",<br>
- FunctionOptions::<wbr>ConstructorWithVirtualBases);<br>
- }<br>
-};<br>
-<br>
-template <> struct ScalarBitSetTraits<<wbr>ClassOptions> {<br>
- static void bitset(IO &IO, ClassOptions &Options) {<br>
- IO.bitSetCase(Options, "None", ClassOptions::None);<br>
- IO.bitSetCase(Options, "HasConstructorOrDestructor",<br>
- ClassOptions::<wbr>HasConstructorOrDestructor);<br>
- IO.bitSetCase(Options, "HasOverloadedOperator",<br>
- ClassOptions::<wbr>HasOverloadedOperator);<br>
- IO.bitSetCase(Options, "Nested", ClassOptions::Nested);<br>
- IO.bitSetCase(Options, "ContainsNestedClass",<br>
- ClassOptions::<wbr>ContainsNestedClass);<br>
- IO.bitSetCase(Options, "<wbr>HasOverloadedAssignmentOperato<wbr>r",<br>
- ClassOptions::<wbr>HasOverloadedAssignmentOperato<wbr>r);<br>
- IO.bitSetCase(Options, "HasConversionOperator",<br>
- ClassOptions::<wbr>HasConversionOperator);<br>
- IO.bitSetCase(Options, "ForwardReference", ClassOptions::<wbr>ForwardReference);<br>
- IO.bitSetCase(Options, "Scoped", ClassOptions::Scoped);<br>
- IO.bitSetCase(Options, "HasUniqueName", ClassOptions::HasUniqueName);<br>
- IO.bitSetCase(Options, "Sealed", ClassOptions::Sealed);<br>
- IO.bitSetCase(Options, "Intrinsic", ClassOptions::Intrinsic);<br>
- }<br>
-};<br>
-<br>
-template <> struct ScalarBitSetTraits<<wbr>MethodOptions> {<br>
- static void bitset(IO &IO, MethodOptions &Options) {<br>
- IO.bitSetCase(Options, "None", MethodOptions::None);<br>
- IO.bitSetCase(Options, "Pseudo", MethodOptions::Pseudo);<br>
- IO.bitSetCase(Options, "NoInherit", MethodOptions::NoInherit);<br>
- IO.bitSetCase(Options, "NoConstruct", MethodOptions::NoConstruct);<br>
- IO.bitSetCase(Options, "CompilerGenerated",<br>
- MethodOptions::<wbr>CompilerGenerated);<br>
- IO.bitSetCase(Options, "Sealed", MethodOptions::Sealed);<br>
- }<br>
-};<br>
-<br>
-void ScalarTraits<APSInt>::output(<wbr>const APSInt &S, void *,<br>
- llvm::raw_ostream &OS) {<br>
- S.print(OS, true);<br>
-}<br>
-StringRef ScalarTraits<APSInt>::input(<wbr>StringRef Scalar, void *Ctx, APSInt &S) {<br>
- S = APSInt(Scalar);<br>
- return "";<br>
-}<br>
-<br>
-bool ScalarTraits<APSInt>::<wbr>mustQuote(StringRef Scalar) { return false; }<br>
-<br>
-void MappingContextTraits<CVType, pdb::yaml::<wbr>SerializationContext>::<wbr>mapping(<br>
- IO &IO, CVType &Record, pdb::yaml::<wbr>SerializationContext &Context) {<br>
- if (IO.outputting())<br>
- consumeError(codeview::<wbr>visitTypeRecord(Record, Context.Dumper));<br>
-}<br>
-<br>
-void MappingTraits<StringIdRecord>:<wbr>:mapping(IO &IO, StringIdRecord &String) {<br>
- IO.mapRequired("Id", String.Id);<br>
- IO.mapRequired("String", String.String);<br>
-}<br>
-<br>
-void MappingTraits<ArgListRecord>::<wbr>mapping(IO &IO, ArgListRecord &Args) {<br>
- IO.mapRequired("ArgIndices", Args.ArgIndices);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>StringListRecord>::mapping(IO &IO, StringListRecord &Strings) {<br>
- IO.mapRequired("StringIndices"<wbr>, Strings.StringIndices);<br>
-}<br>
-<br>
-void MappingTraits<ClassRecord>::<wbr>mapping(IO &IO, ClassRecord &Class) {<br>
- IO.mapRequired("MemberCount", Class.MemberCount);<br>
- IO.mapRequired("Options", Class.Options);<br>
- IO.mapRequired("FieldList", Class.FieldList);<br>
- IO.mapRequired("Name", Class.Name);<br>
- IO.mapRequired("UniqueName", Class.UniqueName);<br>
- IO.mapRequired("<wbr>DerivationList", Class.DerivationList);<br>
- IO.mapRequired("VTableShape", Class.VTableShape);<br>
- IO.mapRequired("Size", Class.Size);<br>
-}<br>
-<br>
-void MappingTraits<UnionRecord>::<wbr>mapping(IO &IO, UnionRecord &Union) {<br>
- IO.mapRequired("MemberCount", Union.MemberCount);<br>
- IO.mapRequired("Options", Union.Options);<br>
- IO.mapRequired("FieldList", Union.FieldList);<br>
- IO.mapRequired("Name", Union.Name);<br>
- IO.mapRequired("UniqueName", Union.UniqueName);<br>
- IO.mapRequired("Size", Union.Size);<br>
-}<br>
-<br>
-void MappingTraits<EnumRecord>::<wbr>mapping(IO &IO, EnumRecord &Enum) {<br>
- IO.mapRequired("<wbr>NumEnumerators", Enum.MemberCount);<br>
- IO.mapRequired("Options", Enum.Options);<br>
- IO.mapRequired("FieldList", Enum.FieldList);<br>
- IO.mapRequired("Name", Enum.Name);<br>
- IO.mapRequired("UniqueName", Enum.UniqueName);<br>
- IO.mapRequired("<wbr>UnderlyingType", Enum.UnderlyingType);<br>
-}<br>
-<br>
-void MappingTraits<ArrayRecord>::<wbr>mapping(IO &IO, ArrayRecord &AT) {<br>
- IO.mapRequired("ElementType", AT.ElementType);<br>
- IO.mapRequired("IndexType", AT.IndexType);<br>
- IO.mapRequired("Size", AT.Size);<br>
- IO.mapRequired("Name", AT.Name);<br>
-}<br>
-<br>
-void MappingTraits<VFTableRecord>::<wbr>mapping(IO &IO, VFTableRecord &VFT) {<br>
- IO.mapRequired("CompleteClass"<wbr>, VFT.CompleteClass);<br>
- IO.mapRequired("<wbr>OverriddenVFTable", VFT.OverriddenVFTable);<br>
- IO.mapRequired("VFPtrOffset", VFT.VFPtrOffset);<br>
- IO.mapRequired("MethodNames", VFT.MethodNames);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>MemberFuncIdRecord>::mapping(<wbr>IO &IO,<br>
- MemberFuncIdRecord &Id) {<br>
- IO.mapRequired("ClassType", Id.ClassType);<br>
- IO.mapRequired("FunctionType", Id.FunctionType);<br>
- IO.mapRequired("Name", Id.Name);<br>
-}<br>
-<br>
-void MappingTraits<ProcedureRecord><wbr>::mapping(IO &IO, ProcedureRecord &Proc) {<br>
- IO.mapRequired("ReturnType", Proc.ReturnType);<br>
- IO.mapRequired("CallConv", Proc.CallConv);<br>
- IO.mapRequired("Options", Proc.Options);<br>
- IO.mapRequired("<wbr>ParameterCount", Proc.ParameterCount);<br>
- IO.mapRequired("ArgumentList", Proc.ArgumentList);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>MemberFunctionRecord>::<wbr>mapping(IO &IO,<br>
- MemberFunctionRecord &MF) {<br>
- IO.mapRequired("ReturnType", MF.ReturnType);<br>
- IO.mapRequired("ClassType", MF.ClassType);<br>
- IO.mapRequired("ThisType", MF.ThisType);<br>
- IO.mapRequired("CallConv", MF.CallConv);<br>
- IO.mapRequired("Options", MF.Options);<br>
- IO.mapRequired("<wbr>ParameterCount", MF.ParameterCount);<br>
- IO.mapRequired("ArgumentList", MF.ArgumentList);<br>
- IO.mapRequired("<wbr>ThisPointerAdjustment", MF.ThisPointerAdjustment);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>MethodOverloadListRecord>::<wbr>mapping(<br>
- IO &IO, MethodOverloadListRecord &MethodList) {<br>
- IO.mapRequired("Methods", MethodList.Methods);<br>
-}<br>
-<br>
-void MappingTraits<FuncIdRecord>::<wbr>mapping(IO &IO, FuncIdRecord &Func) {<br>
- IO.mapRequired("ParentScope", Func.ParentScope);<br>
- IO.mapRequired("FunctionType", Func.FunctionType);<br>
- IO.mapRequired("Name", Func.Name);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>TypeServer2Record>::mapping(IO &IO, TypeServer2Record &TS) {<br>
- IO.mapRequired("Guid", TS.Guid);<br>
- IO.mapRequired("Age", TS.Age);<br>
- IO.mapRequired("Name", TS.Name);<br>
-}<br>
-<br>
-void MappingTraits<PointerRecord>::<wbr>mapping(IO &IO, PointerRecord &Ptr) {<br>
- IO.mapRequired("ReferentType", Ptr.ReferentType);<br>
- IO.mapRequired("Attrs", Ptr.Attrs);<br>
- IO.mapOptional("MemberInfo", Ptr.MemberInfo);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>MemberPointerInfo>::mapping(IO &IO, MemberPointerInfo &MPI) {<br>
- IO.mapRequired("<wbr>ContainingType", MPI.ContainingType);<br>
- IO.mapRequired("<wbr>Representation", MPI.Representation);<br>
-}<br>
-<br>
-void MappingTraits<ModifierRecord>:<wbr>:mapping(IO &IO, ModifierRecord &Mod) {<br>
- IO.mapRequired("ModifiedType", Mod.ModifiedType);<br>
- IO.mapRequired("Modifiers", Mod.Modifiers);<br>
-}<br>
-<br>
-void MappingTraits<BitFieldRecord>:<wbr>:mapping(IO &IO, BitFieldRecord &BitField) {<br>
- IO.mapRequired("Type", BitField.Type);<br>
- IO.mapRequired("BitSize", BitField.BitSize);<br>
- IO.mapRequired("BitOffset", BitField.BitOffset);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>VFTableShapeRecord>::mapping(<wbr>IO &IO,<br>
- VFTableShapeRecord &Shape) {<br>
- IO.mapRequired("Slots", Shape.Slots);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>UdtSourceLineRecord>::mapping(<wbr>IO &IO,<br>
- UdtSourceLineRecord &Line) {<br>
- IO.mapRequired("UDT", Line.UDT);<br>
- IO.mapRequired("SourceFile", Line.SourceFile);<br>
- IO.mapRequired("LineNumber", Line.LineNumber);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>UdtModSourceLineRecord>::<wbr>mapping(<br>
- IO &IO, UdtModSourceLineRecord &Line) {<br>
- IO.mapRequired("UDT", Line.UDT);<br>
- IO.mapRequired("SourceFile", Line.SourceFile);<br>
- IO.mapRequired("LineNumber", Line.LineNumber);<br>
- IO.mapRequired("Module", Line.Module);<br>
-}<br>
-<br>
-void MappingTraits<BuildInfoRecord><wbr>::mapping(IO &IO, BuildInfoRecord &Args) {<br>
- IO.mapRequired("ArgIndices", Args.ArgIndices);<br>
-}<br>
-<br>
-void MappingTraits<LabelRecord>::<wbr>mapping(IO &IO, LabelRecord &R) {<br>
- IO.mapRequired("Mode", R.Mode);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>NestedTypeRecord>::mapping(IO &IO,<br>
- NestedTypeRecord &Nested) {<br>
- IO.mapRequired("Type", Nested.Type);<br>
- IO.mapRequired("Name", Nested.Name);<br>
-}<br>
-<br>
-void MappingTraits<OneMethodRecord><wbr>::mapping(IO &IO, OneMethodRecord &Method) {<br>
- IO.mapRequired("Type", Method.Type);<br>
- IO.mapRequired("Attrs", Method.Attrs.Attrs);<br>
- IO.mapRequired("VFTableOffset"<wbr>, Method.VFTableOffset);<br>
- IO.mapRequired("Name", Method.Name);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>OverloadedMethodRecord>::<wbr>mapping(<br>
- IO &IO, OverloadedMethodRecord &Method) {<br>
- IO.mapRequired("NumOverloads", Method.NumOverloads);<br>
- IO.mapRequired("MethodList", Method.MethodList);<br>
- IO.mapRequired("Name", Method.Name);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>DataMemberRecord>::mapping(IO &IO, DataMemberRecord &Field) {<br>
- IO.mapRequired("Attrs", Field.Attrs.Attrs);<br>
- IO.mapRequired("Type", Field.Type);<br>
- IO.mapRequired("FieldOffset", Field.FieldOffset);<br>
- IO.mapRequired("Name", Field.Name);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>StaticDataMemberRecord>::<wbr>mapping(<br>
- IO &IO, StaticDataMemberRecord &Field) {<br>
- IO.mapRequired("Attrs", Field.Attrs.Attrs);<br>
- IO.mapRequired("Type", Field.Type);<br>
- IO.mapRequired("Name", Field.Name);<br>
-}<br>
-<br>
-void MappingTraits<VFPtrRecord>::<wbr>mapping(IO &IO, VFPtrRecord &VFTable) {<br>
- IO.mapRequired("Type", VFTable.Type);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>EnumeratorRecord>::mapping(IO &IO, EnumeratorRecord &Enum) {<br>
- IO.mapRequired("Attrs", Enum.Attrs.Attrs);<br>
- IO.mapRequired("Value", Enum.Value);<br>
- IO.mapRequired("Name", Enum.Name);<br>
-}<br>
-<br>
-void MappingTraits<BaseClassRecord><wbr>::mapping(IO &IO, BaseClassRecord &Base) {<br>
- IO.mapRequired("Attrs", Base.Attrs.Attrs);<br>
- IO.mapRequired("Type", Base.Type);<br>
- IO.mapRequired("Offset", Base.Offset);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>VirtualBaseClassRecord>::<wbr>mapping(<br>
- IO &IO, VirtualBaseClassRecord &Base) {<br>
- IO.mapRequired("Attrs", Base.Attrs.Attrs);<br>
- IO.mapRequired("BaseType", Base.BaseType);<br>
- IO.mapRequired("VBPtrType", Base.VBPtrType);<br>
- IO.mapRequired("VBPtrOffset", Base.VBPtrOffset);<br>
- IO.mapRequired("VTableIndex", Base.VTableIndex);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>ListContinuationRecord>::<wbr>mapping(<br>
- IO &IO, ListContinuationRecord &Cont) {<br>
- IO.mapRequired("<wbr>ContinuationIndex", Cont.ContinuationIndex);<br>
-}<br>
-<br>
-void ScalarTraits<codeview::<wbr>TypeIndex>::output(const codeview::TypeIndex &S,<br>
- void *, llvm::raw_ostream &OS) {<br>
- OS << S.getIndex();<br>
-}<br>
-StringRef ScalarTraits<codeview::<wbr>TypeIndex>::input(StringRef Scalar, void *Ctx,<br>
- codeview::TypeIndex &S) {<br>
- uint32_t I;<br>
- StringRef Result = ScalarTraits<uint32_t>::input(<wbr>Scalar, Ctx, I);<br>
- if (!Result.empty())<br>
- return Result;<br>
- S = TypeIndex(I);<br>
- return "";<br>
-}<br>
-bool ScalarTraits<codeview::<wbr>TypeIndex>::mustQuote(<wbr>StringRef Scalar) {<br>
- return false;<br>
-}<br>
-<br>
-void ScalarEnumerationTraits<<wbr>TypeLeafKind>::enumeration(IO &io,<br>
- TypeLeafKind &Value) {<br>
- auto TypeLeafNames = getTypeLeafNames();<br>
- for (const auto &E : TypeLeafNames)<br>
- io.enumCase(Value, E.Name.str().c_str(), E.Value);<br>
-}<br>
-}<br>
-}<br>
-<br>
-Error llvm::codeview::yaml::<wbr>YamlTypeDumperCallbacks::<wbr>visitTypeBegin(<br>
- CVType &CVR) {<br>
- YamlIO.mapRequired("Kind", CVR.Type);<br>
- return Error::success();<br>
-}<br>
-<br>
-Error llvm::codeview::yaml::<wbr>YamlTypeDumperCallbacks::<wbr>visitMemberBegin(<br>
- CVMemberRecord &Record) {<br>
- YamlIO.mapRequired("Kind", Record.Kind);<br>
- return Error::success();<br>
-}<br>
-<br>
-void llvm::codeview::yaml::<wbr>YamlTypeDumperCallbacks::<wbr>visitKnownRecordImpl(<br>
- const char *Name, CVType &CVR, FieldListRecord &FieldList) {<br>
- std::vector<llvm::pdb::yaml::<wbr>PdbTpiFieldListRecord> FieldListRecords;<br>
- if (YamlIO.outputting()) {<br>
- // If we are outputting, then `FieldList.Data` contains a huge chunk of data<br>
- // representing the serialized list of members. We need to split it up into<br>
- // individual CVType records where each record represents an individual<br>
- // member. This way, we can simply map the entire thing as a Yaml sequence,<br>
- // which will recurse back to the standard handler for top-level fields<br>
- // (top-level and member fields all have the exact same Yaml syntax so use<br>
- // the same parser).<br>
- FieldListRecordSplitter Splitter(FieldListRecords);<br>
- consumeError(codeview::<wbr>visitMemberRecordStream(<wbr>FieldList.Data, Splitter));<br>
- }<br>
- // Note that if we're not outputting (i.e. Yaml -> PDB) the result of this<br>
- // mapping gets lost, as the records are simply stored in this locally scoped<br>
- // vector. What's important though is they are all sharing a single<br>
- // Serializer<br>
- // instance (in `Context.ActiveSerializer`), and that is building up a list of<br>
- // all the types. The fact that we need a throwaway vector here is just to<br>
- // appease the YAML API to treat this as a sequence and do this mapping once<br>
- // for each YAML Sequence element in the input Yaml stream.<br>
- YamlIO.mapRequired("FieldList"<wbr>, FieldListRecords, Context);<br>
-}<br>
-<br>
-namespace llvm {<br>
-namespace yaml {<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbTpiFieldListRecord,<br>
- pdb::yaml::<wbr>SerializationContext> {<br>
- static void mapping(IO &IO, pdb::yaml::<wbr>PdbTpiFieldListRecord &Obj,<br>
- pdb::yaml::<wbr>SerializationContext &Context) {<br>
- if (IO.outputting())<br>
- consumeError(codeview::<wbr>visitMemberRecord(Obj.Record, Context.Dumper));<br>
- else {<br>
- // If we are not outputting, then the array contains no data starting out,<br>
- // and is instead populated from the sequence represented by the yaml --<br>
- // again, using the same logic that we use for top-level records.<br>
- assert(Context.<wbr>ActiveSerializer && "There is no active serializer!");<br>
- codeview::<wbr>TypeVisitorCallbackPipeline Pipeline;<br>
- pdb::TpiHashUpdater Hasher;<br>
-<br>
- Pipeline.<wbr>addCallbackToPipeline(Context.<wbr>Dumper);<br>
- Pipeline.<wbr>addCallbackToPipeline(*<wbr>Context.ActiveSerializer);<br>
- Pipeline.<wbr>addCallbackToPipeline(Hasher);<br>
- consumeError(<br>
- codeview::visitMemberRecord(<wbr>Obj.Record, Pipeline, VDS_BytesExternal));<br>
- }<br>
- }<br>
-};<br>
-}<br>
-}<br>
<br>
Removed: llvm/trunk/tools/llvm-pdbdump/<wbr>YamlTypeDumper.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/YamlTypeDumper.h?rev=304247&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/YamlTypeDumper.h?rev=<wbr>304247&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>YamlTypeDumper.h (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>YamlTypeDumper.h (removed)<br>
@@ -1,116 +0,0 @@<br>
-//===- YamlTypeDumper.h ------------------------------<wbr>--------- *- 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>
-//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
-<br>
-#ifndef LLVM_TOOLS_LLVMPDBDUMP_<wbr>YAMLTYPEDUMPER_H<br>
-#define LLVM_TOOLS_LLVMPDBDUMP_<wbr>YAMLTYPEDUMPER_H<br>
-<br>
-#include "llvm/DebugInfo/CodeView/<wbr>CodeView.h"<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeVisitorCallbacks.h"<br>
-#include "llvm/Support/YAMLTraits.h"<br>
-<br>
-namespace llvm {<br>
-namespace pdb {<br>
-namespace yaml {<br>
-struct SerializationContext;<br>
-}<br>
-}<br>
-namespace codeview {<br>
-namespace yaml {<br>
-class YamlTypeDumperCallbacks : public TypeVisitorCallbacks {<br>
-public:<br>
- YamlTypeDumperCallbacks(llvm::<wbr>yaml::IO &IO,<br>
- llvm::pdb::yaml::<wbr>SerializationContext &Context)<br>
- : YamlIO(IO), Context(Context) {}<br>
-<br>
- virtual Error visitTypeBegin(CVType &Record) override;<br>
- virtual Error visitMemberBegin(<wbr>CVMemberRecord &Record) override;<br>
-<br>
-#define TYPE_RECORD(EnumName, EnumVal, Name) \<br>
- Error visitKnownRecord(CVRecord<<wbr>TypeLeafKind> &CVR, Name##Record &Record) \<br>
- override { \<br>
- visitKnownRecordImpl(#Name, CVR, Record); \<br>
- return Error::success(); \<br>
- }<br>
-#define MEMBER_RECORD(EnumName, EnumVal, Name) \<br>
- Error visitKnownMember(<wbr>CVMemberRecord &CVR, Name##Record &Record) override { \<br>
- visitKnownMemberImpl(#Name, Record); \<br>
- return Error::success(); \<br>
- }<br>
-#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
-<br>
-private:<br>
- template <typename T> void visitKnownMemberImpl(const char *Name, T &Record) {<br>
- YamlIO.mapRequired(Name, Record);<br>
- }<br>
-<br>
- template <typename T><br>
- void visitKnownRecordImpl(const char *Name, CVType &Type, T &Record) {<br>
- YamlIO.mapRequired(Name, Record);<br>
- }<br>
-<br>
- void visitKnownRecordImpl(const char *Name, CVType &CVR,<br>
- FieldListRecord &FieldList);<br>
-<br>
- llvm::yaml::IO &YamlIO;<br>
- llvm::pdb::yaml::<wbr>SerializationContext &Context;<br>
-};<br>
-}<br>
-}<br>
-namespace pdb {<br>
-namespace yaml {<br>
-struct SerializationContext;<br>
-}<br>
-}<br>
-}<br>
-<br>
-namespace llvm {<br>
-namespace yaml {<br>
-<br>
-template <> struct ScalarTraits<APSInt> {<br>
- static void output(const APSInt &S, void *, llvm::raw_ostream &OS);<br>
- static StringRef input(StringRef Scalar, void *Ctx, APSInt &S);<br>
- static bool mustQuote(StringRef Scalar);<br>
-};<br>
-<br>
-template <> struct ScalarTraits<codeview::<wbr>TypeIndex> {<br>
- static void output(const codeview::TypeIndex &S, void *,<br>
- llvm::raw_ostream &OS);<br>
- static StringRef input(StringRef Scalar, void *Ctx, codeview::TypeIndex &S);<br>
- static bool mustQuote(StringRef Scalar);<br>
-};<br>
-<br>
-template <> struct MappingTraits<codeview::<wbr>MemberPointerInfo> {<br>
- static void mapping(IO &IO, codeview::MemberPointerInfo &Obj);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<codeview:<wbr>:CVType, pdb::yaml::<wbr>SerializationContext> {<br>
- static void mapping(IO &IO, codeview::CVType &Obj,<br>
- pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>codeview::TypeLeafKind> {<br>
- static void enumeration(IO &io, codeview::TypeLeafKind &Value);<br>
-};<br>
-<br>
-#define TYPE_RECORD(EnumName, EnumVal, Name) \<br>
- template <> struct MappingTraits<codeview::Name##<wbr>Record> { \<br>
- static void mapping(IO &IO, codeview::Name##Record &Obj); \<br>
- };<br>
-#define MEMBER_RECORD(EnumName, EnumVal, Name) \<br>
- TYPE_RECORD(EnumName, EnumVal, Name)<br>
-#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
-}<br>
-}<br>
-<br>
-#endif<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>llvm-pdbdump.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/llvm-pdbdump.cpp?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>llvm-pdbdump.cpp (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>llvm-pdbdump.cpp Tue May 30 16:53:05 2017<br>
@@ -61,6 +61,7 @@<br>
#include "llvm/DebugInfo/PDB/<wbr>PDBSymbolExe.h"<br>
#include "llvm/DebugInfo/PDB/<wbr>PDBSymbolFunc.h"<br>
#include "llvm/DebugInfo/PDB/<wbr>PDBSymbolThunk.h"<br>
+#include "llvm/ObjectYAML/CodeViewYAML.<wbr>h"<br>
#include "llvm/Support/<wbr>BinaryByteStream.h"<br>
#include "llvm/Support/COM.h"<br>
#include "llvm/Support/CommandLine.h"<br>
@@ -476,6 +477,7 @@ static void yamlToPdb(StringRef Path) {<br>
std::unique_ptr<MemoryBuffer> &Buffer = ErrorOrBuffer.get();<br>
<br>
llvm::yaml::Input In(Buffer->getBuffer());<br>
+ In.setContext(&Allocator);<br>
pdb::yaml::PdbObject YamlObj(Allocator);<br>
In >> YamlObj;<br>
<br>
@@ -584,7 +586,7 @@ static void yamlToPdb(StringRef Path) {<br>
auto Inlinees = llvm::make_unique<<wbr>DebugInlineeLinesSubsection>(<br>
ChecksumRef, Inlinee.HasExtraFiles);<br>
for (const auto &Site : Inlinee.Sites) {<br>
- Inlinees->addInlineSite(Site.<wbr>Inlinee, Site.FileName,<br>
+ Inlinees->addInlineSite(<wbr>TypeIndex(Site.Inlinee), Site.FileName,<br>
Site.SourceLineNum);<br>
if (!Inlinee.HasExtraFiles)<br>
continue;<br>
@@ -601,14 +603,18 @@ static void yamlToPdb(StringRef Path) {<br>
auto &TpiBuilder = Builder.getTpiBuilder();<br>
const auto &Tpi = YamlObj.TpiStream.getValueOr(<wbr>DefaultTpiStream);<br>
TpiBuilder.setVersionHeader(<wbr>Tpi.Version);<br>
- for (const auto &R : Tpi.Records)<br>
- TpiBuilder.addTypeRecord(R.<wbr>Record.data(), R.Record.Hash);<br>
+ for (const auto &R : Tpi.Records) {<br>
+ CVType Type = R.toCodeViewRecord(Allocator);<br>
+ TpiBuilder.addTypeRecord(Type.<wbr>RecordData, None);<br>
+ }<br>
<br>
const auto &Ipi = YamlObj.IpiStream.getValueOr(<wbr>DefaultIpiStream);<br>
auto &IpiBuilder = Builder.getIpiBuilder();<br>
IpiBuilder.setVersionHeader(<wbr>Ipi.Version);<br>
- for (const auto &R : Ipi.Records)<br>
- IpiBuilder.addTypeRecord(R.<wbr>Record.data(), R.Record.Hash);<br>
+ for (const auto &R : Ipi.Records) {<br>
+ CVType Type = R.toCodeViewRecord(Allocator);<br>
+ IpiBuilder.addTypeRecord(Type.<wbr>RecordData, None);<br>
+ }<br>
<br>
ExitOnErr(Builder.commit(opts:<wbr>:yaml2pdb::YamlPdbOutputFile))<wbr>;<br>
}<br>
<br>
<br>
______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">-- <div>Peter</div></div></div>
</div>