[llvm] r304248 - [CodeView] Move CodeView YAML code to ObjectYAML.

Zachary Turner via llvm-commits llvm-commits at lists.llvm.org
Tue May 30 17:31:53 PDT 2017


I missed this bug in the original patch (not sure why it didn't segfault
for me locally), but AFAICT this should have been fixed in the next patch
which did some more refactoring (r304256)
On Tue, May 30, 2017 at 5:20 PM Zachary Turner <zturner at google.com> wrote:

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


More information about the llvm-commits mailing list