From 420a134a9eae8a9c2e7019def14d6a54fcfe79d3 Mon Sep 17 00:00:00 2001 From: Zachary Turner Date: Tue, 6 Sep 2016 23:45:47 +0000 Subject: [PATCH] Re-add "Make FieldList records print as a YAML sequence" This was originally submitted in r280549, and reverted in r280577 due to breaking one MSVC buildbot. The issue is that MSVC 2013 doesn't synthesize move constructors. So even though i was writing std::move(A) it was copying it, leading to a bogus ArrayRef. The solution here is to simply remove the std::vector<> from the type, since it is unused and unnecessary. This way the ArrayRef continues to point into the original memory backing the CVType. llvm-svn: 280769 --- test/DebugInfo/PDB/pdbdump-yaml-types.test | 2174 ++++++++++---------- tools/llvm-pdbdump/CodeViewYaml.cpp | 42 + tools/llvm-pdbdump/CodeViewYaml.h | 10 +- tools/llvm-pdbdump/PdbYaml.h | 1 - 4 files changed, 1138 insertions(+), 1089 deletions(-) diff --git a/test/DebugInfo/PDB/pdbdump-yaml-types.test b/test/DebugInfo/PDB/pdbdump-yaml-types.test index 0ad407a7ec1..30f7585dc27 100644 --- a/test/DebugInfo/PDB/pdbdump-yaml-types.test +++ b/test/DebugInfo/PDB/pdbdump-yaml-types.test @@ -1,1087 +1,1087 @@ -; RUN: llvm-pdbdump pdb2yaml -tpi-stream %p/Inputs/empty.pdb \ -; RUN: | FileCheck -check-prefix=YAML %s - -YAML: --- -YAML: MSF: -YAML: SuperBlock: -YAML: BlockSize: 4096 -YAML: FreeBlockMap: 2 -YAML: NumBlocks: 25 -YAML: NumDirectoryBytes: 136 -YAML: Unknown1: 0 -YAML: BlockMapAddr: 24 -YAML: NumDirectoryBlocks: 1 -YAML: DirectoryBlocks: [ 23 ] -YAML: NumStreams: 0 -YAML: FileSize: 102400 -YAML: TpiStream: -YAML: Version: VC80 -YAML: Records: -YAML: - Kind: LF_ARGLIST -YAML: ArgList: -YAML: ArgIndices: [ ] -YAML: - Kind: LF_PROCEDURE -YAML: Procedure: -YAML: ReturnType: 116 -YAML: CallConv: NearC -YAML: Options: [ None ] -YAML: ParameterCount: 0 -YAML: ArgumentList: 4096 -YAML: - Kind: LF_FIELDLIST -YAML: FieldList: -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 1 -YAML: Name: apartment -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 2 -YAML: Name: single -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 3 -YAML: Name: free -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 4 -YAML: Name: neutral -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 5 -YAML: Name: both -YAML: - Kind: LF_ENUM -YAML: Enum: -YAML: NumEnumerators: 5 -YAML: Options: [ None, Nested, HasUniqueName ] -YAML: FieldList: 4098 -YAML: Name: '__vc_attributes::threadingAttribute::threading_e' -YAML: UniqueName: '.?AW4threading_e@threadingAttribute@__vc_attributes@@' -YAML: UnderlyingType: 116 -YAML: - Kind: LF_STRUCTURE -YAML: Class: -YAML: MemberCount: 0 -YAML: Options: [ None, ForwardReference, HasUniqueName ] -YAML: FieldList: 0 -YAML: Name: '__vc_attributes::threadingAttribute' -YAML: UniqueName: '.?AUthreadingAttribute@__vc_attributes@@' -YAML: Hfa: None -YAML: WinRTKind: None -YAML: DerivationList: 0 -YAML: VTableShape: 0 -YAML: Size: 0 -YAML: - Kind: LF_POINTER -YAML: Pointer: -YAML: ReferentType: 4100 -YAML: PtrKind: Near32 -YAML: Mode: Pointer -YAML: Options: [ None, Const ] -YAML: Size: 4 -YAML: - Kind: LF_ARGLIST -YAML: ArgList: -YAML: ArgIndices: [ 4099 ] -YAML: - Kind: LF_MFUNCTION -YAML: MemberFunction: -YAML: ReturnType: 3 -YAML: ClassType: 4100 -YAML: ThisType: 4101 -YAML: CallConv: ThisCall -YAML: Options: [ None, Constructor ] -YAML: ParameterCount: 1 -YAML: ArgumentList: 4102 -YAML: ThisPointerAdjustment: 0 -YAML: - Kind: LF_MFUNCTION -YAML: MemberFunction: -YAML: ReturnType: 3 -YAML: ClassType: 4100 -YAML: ThisType: 4101 -YAML: CallConv: ThisCall -YAML: Options: [ None, Constructor ] -YAML: ParameterCount: 0 -YAML: ArgumentList: 4096 -YAML: ThisPointerAdjustment: 0 -YAML: - Kind: LF_METHODLIST -YAML: MethodOverloadList: -YAML: Methods: -YAML: - Type: 4103 -YAML: Kind: Vanilla -YAML: Options: [ None ] -YAML: Access: Public -YAML: VFTableOffset: -1 -YAML: Name: '' -YAML: - Type: 4104 -YAML: Kind: Vanilla -YAML: Options: [ None ] -YAML: Access: Public -YAML: VFTableOffset: -1 -YAML: Name: '' -YAML: - Kind: LF_FIELDLIST -YAML: FieldList: -YAML: Kind: LF_NESTTYPE -YAML: NestedType: -YAML: Type: 4099 -YAML: Name: threading_e -YAML: Kind: LF_METHOD -YAML: OverloadedMethod: -YAML: NumOverloads: 2 -YAML: MethodList: 4105 -YAML: Name: threadingAttribute -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 4099 -YAML: FieldOffset: 0 -YAML: Name: value -YAML: - Kind: LF_STRUCTURE -YAML: Class: -YAML: MemberCount: 4 -YAML: Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] -YAML: FieldList: 4106 -YAML: Name: '__vc_attributes::threadingAttribute' -YAML: UniqueName: '.?AUthreadingAttribute@__vc_attributes@@' -YAML: Hfa: None -YAML: WinRTKind: None -YAML: DerivationList: 0 -YAML: VTableShape: 0 -YAML: Size: 4 -YAML: - Kind: LF_FIELDLIST -YAML: FieldList: -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 0 -YAML: Name: native -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 1 -YAML: Name: com -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 2 -YAML: Name: managed -YAML: - Kind: LF_ENUM -YAML: Enum: -YAML: NumEnumerators: 3 -YAML: Options: [ None, Nested, HasUniqueName ] -YAML: FieldList: 4108 -YAML: Name: '__vc_attributes::event_receiverAttribute::type_e' -YAML: UniqueName: '.?AW4type_e@event_receiverAttribute@__vc_attributes@@' -YAML: UnderlyingType: 116 -YAML: - Kind: LF_STRUCTURE -YAML: Class: -YAML: MemberCount: 0 -YAML: Options: [ None, ForwardReference, HasUniqueName ] -YAML: FieldList: 0 -YAML: Name: '__vc_attributes::event_receiverAttribute' -YAML: UniqueName: '.?AUevent_receiverAttribute@__vc_attributes@@' -YAML: Hfa: None -YAML: WinRTKind: None -YAML: DerivationList: 0 -YAML: VTableShape: 0 -YAML: Size: 0 -YAML: - Kind: LF_POINTER -YAML: Pointer: -YAML: ReferentType: 4110 -YAML: PtrKind: Near32 -YAML: Mode: Pointer -YAML: Options: [ None, Const ] -YAML: Size: 4 -YAML: - Kind: LF_ARGLIST -YAML: ArgList: -YAML: ArgIndices: [ 4109, 48 ] -YAML: - Kind: LF_MFUNCTION -YAML: MemberFunction: -YAML: ReturnType: 3 -YAML: ClassType: 4110 -YAML: ThisType: 4111 -YAML: CallConv: ThisCall -YAML: Options: [ None, Constructor ] -YAML: ParameterCount: 2 -YAML: ArgumentList: 4112 -YAML: ThisPointerAdjustment: 0 -YAML: - Kind: LF_ARGLIST -YAML: ArgList: -YAML: ArgIndices: [ 4109 ] -YAML: - Kind: LF_MFUNCTION -YAML: MemberFunction: -YAML: ReturnType: 3 -YAML: ClassType: 4110 -YAML: ThisType: 4111 -YAML: CallConv: ThisCall -YAML: Options: [ None, Constructor ] -YAML: ParameterCount: 1 -YAML: ArgumentList: 4114 -YAML: ThisPointerAdjustment: 0 -YAML: - Kind: LF_MFUNCTION -YAML: MemberFunction: -YAML: ReturnType: 3 -YAML: ClassType: 4110 -YAML: ThisType: 4111 -YAML: CallConv: ThisCall -YAML: Options: [ None, Constructor ] -YAML: ParameterCount: 0 -YAML: ArgumentList: 4096 -YAML: ThisPointerAdjustment: 0 -YAML: - Kind: LF_METHODLIST -YAML: MethodOverloadList: -YAML: Methods: -YAML: - Type: 4113 -YAML: Kind: Vanilla -YAML: Options: [ None ] -YAML: Access: Public -YAML: VFTableOffset: -1 -YAML: Name: '' -YAML: - Type: 4115 -YAML: Kind: Vanilla -YAML: Options: [ None ] -YAML: Access: Public -YAML: VFTableOffset: -1 -YAML: Name: '' -YAML: - Type: 4116 -YAML: Kind: Vanilla -YAML: Options: [ None ] -YAML: Access: Public -YAML: VFTableOffset: -1 -YAML: Name: '' -YAML: - Kind: LF_FIELDLIST -YAML: FieldList: -YAML: Kind: LF_NESTTYPE -YAML: NestedType: -YAML: Type: 4109 -YAML: Name: type_e -YAML: Kind: LF_METHOD -YAML: OverloadedMethod: -YAML: NumOverloads: 3 -YAML: MethodList: 4117 -YAML: Name: event_receiverAttribute -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 4109 -YAML: FieldOffset: 0 -YAML: Name: type -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 48 -YAML: FieldOffset: 4 -YAML: Name: layout_dependent -YAML: - Kind: LF_STRUCTURE -YAML: Class: -YAML: MemberCount: 6 -YAML: Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] -YAML: FieldList: 4118 -YAML: Name: '__vc_attributes::event_receiverAttribute' -YAML: UniqueName: '.?AUevent_receiverAttribute@__vc_attributes@@' -YAML: Hfa: None -YAML: WinRTKind: None -YAML: DerivationList: 0 -YAML: VTableShape: 0 -YAML: Size: 8 -YAML: - Kind: LF_FIELDLIST -YAML: FieldList: -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 0 -YAML: Name: never -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 1 -YAML: Name: allowed -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 2 -YAML: Name: always -YAML: - Kind: LF_ENUM -YAML: Enum: -YAML: NumEnumerators: 3 -YAML: Options: [ None, Nested, HasUniqueName ] -YAML: FieldList: 4120 -YAML: Name: '__vc_attributes::aggregatableAttribute::type_e' -YAML: UniqueName: '.?AW4type_e@aggregatableAttribute@__vc_attributes@@' -YAML: UnderlyingType: 116 -YAML: - Kind: LF_STRUCTURE -YAML: Class: -YAML: MemberCount: 0 -YAML: Options: [ None, ForwardReference, HasUniqueName ] -YAML: FieldList: 0 -YAML: Name: '__vc_attributes::aggregatableAttribute' -YAML: UniqueName: '.?AUaggregatableAttribute@__vc_attributes@@' -YAML: Hfa: None -YAML: WinRTKind: None -YAML: DerivationList: 0 -YAML: VTableShape: 0 -YAML: Size: 0 -YAML: - Kind: LF_POINTER -YAML: Pointer: -YAML: ReferentType: 4122 -YAML: PtrKind: Near32 -YAML: Mode: Pointer -YAML: Options: [ None, Const ] -YAML: Size: 4 -YAML: - Kind: LF_ARGLIST -YAML: ArgList: -YAML: ArgIndices: [ 4121 ] -YAML: - Kind: LF_MFUNCTION -YAML: MemberFunction: -YAML: ReturnType: 3 -YAML: ClassType: 4122 -YAML: ThisType: 4123 -YAML: CallConv: ThisCall -YAML: Options: [ None, Constructor ] -YAML: ParameterCount: 1 -YAML: ArgumentList: 4124 -YAML: ThisPointerAdjustment: 0 -YAML: - Kind: LF_MFUNCTION -YAML: MemberFunction: -YAML: ReturnType: 3 -YAML: ClassType: 4122 -YAML: ThisType: 4123 -YAML: CallConv: ThisCall -YAML: Options: [ None, Constructor ] -YAML: ParameterCount: 0 -YAML: ArgumentList: 4096 -YAML: ThisPointerAdjustment: 0 -YAML: - Kind: LF_METHODLIST -YAML: MethodOverloadList: -YAML: Methods: -YAML: - Type: 4125 -YAML: Kind: Vanilla -YAML: Options: [ None ] -YAML: Access: Public -YAML: VFTableOffset: -1 -YAML: Name: '' -YAML: - Type: 4126 -YAML: Kind: Vanilla -YAML: Options: [ None ] -YAML: Access: Public -YAML: VFTableOffset: -1 -YAML: Name: '' -YAML: - Kind: LF_FIELDLIST -YAML: FieldList: -YAML: Kind: LF_NESTTYPE -YAML: NestedType: -YAML: Type: 4121 -YAML: Name: type_e -YAML: Kind: LF_METHOD -YAML: OverloadedMethod: -YAML: NumOverloads: 2 -YAML: MethodList: 4127 -YAML: Name: aggregatableAttribute -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 4121 -YAML: FieldOffset: 0 -YAML: Name: type -YAML: - Kind: LF_STRUCTURE -YAML: Class: -YAML: MemberCount: 4 -YAML: Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] -YAML: FieldList: 4128 -YAML: Name: '__vc_attributes::aggregatableAttribute' -YAML: UniqueName: '.?AUaggregatableAttribute@__vc_attributes@@' -YAML: Hfa: None -YAML: WinRTKind: None -YAML: DerivationList: 0 -YAML: VTableShape: 0 -YAML: Size: 4 -YAML: - Kind: LF_ENUM -YAML: Enum: -YAML: NumEnumerators: 3 -YAML: Options: [ None, Nested, HasUniqueName ] -YAML: FieldList: 4108 -YAML: Name: '__vc_attributes::event_sourceAttribute::type_e' -YAML: UniqueName: '.?AW4type_e@event_sourceAttribute@__vc_attributes@@' -YAML: UnderlyingType: 116 -YAML: - Kind: LF_FIELDLIST -YAML: FieldList: -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 0 -YAML: Name: speed -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 1 -YAML: Name: size -YAML: - Kind: LF_ENUM -YAML: Enum: -YAML: NumEnumerators: 2 -YAML: Options: [ None, Nested, HasUniqueName ] -YAML: FieldList: 4131 -YAML: Name: '__vc_attributes::event_sourceAttribute::optimize_e' -YAML: UniqueName: '.?AW4optimize_e@event_sourceAttribute@__vc_attributes@@' -YAML: UnderlyingType: 116 -YAML: - Kind: LF_STRUCTURE -YAML: Class: -YAML: MemberCount: 0 -YAML: Options: [ None, ForwardReference, HasUniqueName ] -YAML: FieldList: 0 -YAML: Name: '__vc_attributes::event_sourceAttribute' -YAML: UniqueName: '.?AUevent_sourceAttribute@__vc_attributes@@' -YAML: Hfa: None -YAML: WinRTKind: None -YAML: DerivationList: 0 -YAML: VTableShape: 0 -YAML: Size: 0 -YAML: - Kind: LF_POINTER -YAML: Pointer: -YAML: ReferentType: 4133 -YAML: PtrKind: Near32 -YAML: Mode: Pointer -YAML: Options: [ None, Const ] -YAML: Size: 4 -YAML: - Kind: LF_ARGLIST -YAML: ArgList: -YAML: ArgIndices: [ 4130 ] -YAML: - Kind: LF_MFUNCTION -YAML: MemberFunction: -YAML: ReturnType: 3 -YAML: ClassType: 4133 -YAML: ThisType: 4134 -YAML: CallConv: ThisCall -YAML: Options: [ None, Constructor ] -YAML: ParameterCount: 1 -YAML: ArgumentList: 4135 -YAML: ThisPointerAdjustment: 0 -YAML: - Kind: LF_MFUNCTION -YAML: MemberFunction: -YAML: ReturnType: 3 -YAML: ClassType: 4133 -YAML: ThisType: 4134 -YAML: CallConv: ThisCall -YAML: Options: [ None, Constructor ] -YAML: ParameterCount: 0 -YAML: ArgumentList: 4096 -YAML: ThisPointerAdjustment: 0 -YAML: - Kind: LF_METHODLIST -YAML: MethodOverloadList: -YAML: Methods: -YAML: - Type: 4136 -YAML: Kind: Vanilla -YAML: Options: [ None ] -YAML: Access: Public -YAML: VFTableOffset: -1 -YAML: Name: '' -YAML: - Type: 4137 -YAML: Kind: Vanilla -YAML: Options: [ None ] -YAML: Access: Public -YAML: VFTableOffset: -1 -YAML: Name: '' -YAML: - Kind: LF_FIELDLIST -YAML: FieldList: -YAML: Kind: LF_NESTTYPE -YAML: NestedType: -YAML: Type: 4130 -YAML: Name: type_e -YAML: Kind: LF_NESTTYPE -YAML: NestedType: -YAML: Type: 4132 -YAML: Name: optimize_e -YAML: Kind: LF_METHOD -YAML: OverloadedMethod: -YAML: NumOverloads: 2 -YAML: MethodList: 4138 -YAML: Name: event_sourceAttribute -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 4130 -YAML: FieldOffset: 0 -YAML: Name: type -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 4132 -YAML: FieldOffset: 4 -YAML: Name: optimize -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 48 -YAML: FieldOffset: 8 -YAML: Name: decorate -YAML: - Kind: LF_STRUCTURE -YAML: Class: -YAML: MemberCount: 7 -YAML: Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] -YAML: FieldList: 4139 -YAML: Name: '__vc_attributes::event_sourceAttribute' -YAML: UniqueName: '.?AUevent_sourceAttribute@__vc_attributes@@' -YAML: Hfa: None -YAML: WinRTKind: None -YAML: DerivationList: 0 -YAML: VTableShape: 0 -YAML: Size: 12 -YAML: - Kind: LF_FIELDLIST -YAML: FieldList: -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 1 -YAML: Name: dll -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 2 -YAML: Name: exe -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 3 -YAML: Name: service -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 4 -YAML: Name: unspecified -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 2 -YAML: Name: EXE -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 3 -YAML: Name: SERVICE -YAML: - Kind: LF_ENUM -YAML: Enum: -YAML: NumEnumerators: 6 -YAML: Options: [ None, Nested, HasUniqueName ] -YAML: FieldList: 4141 -YAML: Name: '__vc_attributes::moduleAttribute::type_e' -YAML: UniqueName: '.?AW4type_e@moduleAttribute@__vc_attributes@@' -YAML: UnderlyingType: 116 -YAML: - Kind: LF_STRUCTURE -YAML: Class: -YAML: MemberCount: 0 -YAML: Options: [ None, ForwardReference, HasUniqueName ] -YAML: FieldList: 0 -YAML: Name: '__vc_attributes::moduleAttribute' -YAML: UniqueName: '.?AUmoduleAttribute@__vc_attributes@@' -YAML: Hfa: None -YAML: WinRTKind: None -YAML: DerivationList: 0 -YAML: VTableShape: 0 -YAML: Size: 0 -YAML: - Kind: LF_POINTER -YAML: Pointer: -YAML: ReferentType: 4143 -YAML: PtrKind: Near32 -YAML: Mode: Pointer -YAML: Options: [ None, Const ] -YAML: Size: 4 -YAML: - Kind: LF_MODIFIER -YAML: Modifier: -YAML: ModifiedType: 112 -YAML: Modifiers: [ None, Const ] -YAML: - Kind: LF_POINTER -YAML: Pointer: -YAML: ReferentType: 4145 -YAML: PtrKind: Near32 -YAML: Mode: Pointer -YAML: Options: [ None ] -YAML: Size: 4 -YAML: - Kind: LF_ARGLIST -YAML: ArgList: -YAML: ArgIndices: [ 4142, 4146, 4146, 4146, 116, 48, 4146, 116, -YAML: 4146, 4146, 116, 48, 48, 4146, 4146 ] -YAML: - Kind: LF_MFUNCTION -YAML: MemberFunction: -YAML: ReturnType: 3 -YAML: ClassType: 4143 -YAML: ThisType: 4144 -YAML: CallConv: ThisCall -YAML: Options: [ None, Constructor ] -YAML: ParameterCount: 15 -YAML: ArgumentList: 4147 -YAML: ThisPointerAdjustment: 0 -YAML: - Kind: LF_ARGLIST -YAML: ArgList: -YAML: ArgIndices: [ 4142 ] -YAML: - Kind: LF_MFUNCTION -YAML: MemberFunction: -YAML: ReturnType: 3 -YAML: ClassType: 4143 -YAML: ThisType: 4144 -YAML: CallConv: ThisCall -YAML: Options: [ None, Constructor ] -YAML: ParameterCount: 1 -YAML: ArgumentList: 4149 -YAML: ThisPointerAdjustment: 0 -YAML: - Kind: LF_MFUNCTION -YAML: MemberFunction: -YAML: ReturnType: 3 -YAML: ClassType: 4143 -YAML: ThisType: 4144 -YAML: CallConv: ThisCall -YAML: Options: [ None, Constructor ] -YAML: ParameterCount: 0 -YAML: ArgumentList: 4096 -YAML: ThisPointerAdjustment: 0 -YAML: - Kind: LF_METHODLIST -YAML: MethodOverloadList: -YAML: Methods: -YAML: - Type: 4148 -YAML: Kind: Vanilla -YAML: Options: [ None ] -YAML: Access: Public -YAML: VFTableOffset: -1 -YAML: Name: '' -YAML: - Type: 4150 -YAML: Kind: Vanilla -YAML: Options: [ None ] -YAML: Access: Public -YAML: VFTableOffset: -1 -YAML: Name: '' -YAML: - Type: 4151 -YAML: Kind: Vanilla -YAML: Options: [ None ] -YAML: Access: Public -YAML: VFTableOffset: -1 -YAML: Name: '' -YAML: - Kind: LF_FIELDLIST -YAML: FieldList: -YAML: Kind: LF_NESTTYPE -YAML: NestedType: -YAML: Type: 4142 -YAML: Name: type_e -YAML: Kind: LF_METHOD -YAML: OverloadedMethod: -YAML: NumOverloads: 3 -YAML: MethodList: 4152 -YAML: Name: moduleAttribute -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 4142 -YAML: FieldOffset: 0 -YAML: Name: type -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 4146 -YAML: FieldOffset: 4 -YAML: Name: name -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 4146 -YAML: FieldOffset: 8 -YAML: Name: version -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 4146 -YAML: FieldOffset: 12 -YAML: Name: uuid -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 116 -YAML: FieldOffset: 16 -YAML: Name: lcid -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 48 -YAML: FieldOffset: 20 -YAML: Name: control -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 4146 -YAML: FieldOffset: 24 -YAML: Name: helpstring -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 116 -YAML: FieldOffset: 28 -YAML: Name: helpstringcontext -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 4146 -YAML: FieldOffset: 32 -YAML: Name: helpstringdll -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 4146 -YAML: FieldOffset: 36 -YAML: Name: helpfile -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 116 -YAML: FieldOffset: 40 -YAML: Name: helpcontext -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 48 -YAML: FieldOffset: 44 -YAML: Name: hidden -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 48 -YAML: FieldOffset: 45 -YAML: Name: restricted -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 4146 -YAML: FieldOffset: 48 -YAML: Name: custom -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 4146 -YAML: FieldOffset: 52 -YAML: Name: resource_name -YAML: - Kind: LF_STRUCTURE -YAML: Class: -YAML: MemberCount: 19 -YAML: Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] -YAML: FieldList: 4153 -YAML: Name: '__vc_attributes::moduleAttribute' -YAML: UniqueName: '.?AUmoduleAttribute@__vc_attributes@@' -YAML: Hfa: None -YAML: WinRTKind: None -YAML: DerivationList: 0 -YAML: VTableShape: 0 -YAML: Size: 56 -YAML: - Kind: LF_FIELDLIST -YAML: FieldList: -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 0 -YAML: Name: eAnyUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 1 -YAML: Name: eCoClassUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 2 -YAML: Name: eCOMInterfaceUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 6 -YAML: Name: eInterfaceUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 8 -YAML: Name: eMemberUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 16 -YAML: Name: eMethodUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 32 -YAML: Name: eInterfaceMethodUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 64 -YAML: Name: eInterfaceMemberUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 128 -YAML: Name: eCoClassMemberUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 256 -YAML: Name: eCoClassMethodUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 768 -YAML: Name: eGlobalMethodUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 1024 -YAML: Name: eGlobalDataUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 2048 -YAML: Name: eClassUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 4096 -YAML: Name: eInterfaceParameterUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 12288 -YAML: Name: eMethodParameterUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 16384 -YAML: Name: eIDLModuleUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: -32768 -YAML: Name: eAnonymousUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 65536 -YAML: Name: eTypedefUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 131072 -YAML: Name: eUnionUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 262144 -YAML: Name: eEnumUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 524288 -YAML: Name: eDefineTagUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 1048576 -YAML: Name: eStructUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 2097152 -YAML: Name: eLocalUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 4194304 -YAML: Name: ePropertyUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 8388608 -YAML: Name: eEventUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 16777216 -YAML: Name: eTemplateUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 16777216 -YAML: Name: eModuleUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 33554432 -YAML: Name: eIllegalUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 67108864 -YAML: Name: eAsynchronousUsage -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 4161535 -YAML: Name: eAnyIDLUsage -YAML: - Kind: LF_ENUM -YAML: Enum: -YAML: NumEnumerators: 30 -YAML: Options: [ None, Nested, HasUniqueName ] -YAML: FieldList: 4155 -YAML: Name: '__vc_attributes::helper_attributes::usageAttribute::usage_e' -YAML: UniqueName: '.?AW4usage_e@usageAttribute@helper_attributes@__vc_attributes@@' -YAML: UnderlyingType: 116 -YAML: - Kind: LF_STRUCTURE -YAML: Class: -YAML: MemberCount: 0 -YAML: Options: [ None, ForwardReference, HasUniqueName ] -YAML: FieldList: 0 -YAML: Name: '__vc_attributes::helper_attributes::usageAttribute' -YAML: UniqueName: '.?AUusageAttribute@helper_attributes@__vc_attributes@@' -YAML: Hfa: None -YAML: WinRTKind: None -YAML: DerivationList: 0 -YAML: VTableShape: 0 -YAML: Size: 0 -YAML: - Kind: LF_POINTER -YAML: Pointer: -YAML: ReferentType: 4157 -YAML: PtrKind: Near32 -YAML: Mode: Pointer -YAML: Options: [ None, Const ] -YAML: Size: 4 -YAML: - Kind: LF_ARGLIST -YAML: ArgList: -YAML: ArgIndices: [ 117 ] -YAML: - Kind: LF_MFUNCTION -YAML: MemberFunction: -YAML: ReturnType: 3 -YAML: ClassType: 4157 -YAML: ThisType: 4158 -YAML: CallConv: ThisCall -YAML: Options: [ None, Constructor ] -YAML: ParameterCount: 1 -YAML: ArgumentList: 4159 -YAML: ThisPointerAdjustment: 0 -YAML: - Kind: LF_FIELDLIST -YAML: FieldList: -YAML: Kind: LF_NESTTYPE -YAML: NestedType: -YAML: Type: 4156 -YAML: Name: usage_e -YAML: Kind: LF_ONEMETHOD -YAML: OneMethod: -YAML: Type: 4160 -YAML: Kind: Vanilla -YAML: Options: [ None ] -YAML: Access: Public -YAML: VFTableOffset: -1 -YAML: Name: usageAttribute -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 117 -YAML: FieldOffset: 0 -YAML: Name: value -YAML: - Kind: LF_STRUCTURE -YAML: Class: -YAML: MemberCount: 3 -YAML: Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] -YAML: FieldList: 4161 -YAML: Name: '__vc_attributes::helper_attributes::usageAttribute' -YAML: UniqueName: '.?AUusageAttribute@helper_attributes@__vc_attributes@@' -YAML: Hfa: None -YAML: WinRTKind: None -YAML: DerivationList: 0 -YAML: VTableShape: 0 -YAML: Size: 4 -YAML: - Kind: LF_FIELDLIST -YAML: FieldList: -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 0 -YAML: Name: eBoolean -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 1 -YAML: Name: eInteger -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 2 -YAML: Name: eFloat -YAML: Kind: LF_ENUMERATE -YAML: Enumerator: -YAML: Access: Public -YAML: Value: 3 -YAML: Name: eDouble -YAML: - Kind: LF_ENUM -YAML: Enum: -YAML: NumEnumerators: 4 -YAML: Options: [ None, Nested, HasUniqueName ] -YAML: FieldList: 4163 -YAML: Name: '__vc_attributes::helper_attributes::v1_alttypeAttribute::type_e' -YAML: UniqueName: '.?AW4type_e@v1_alttypeAttribute@helper_attributes@__vc_attributes@@' -YAML: UnderlyingType: 116 -YAML: - Kind: LF_STRUCTURE -YAML: Class: -YAML: MemberCount: 0 -YAML: Options: [ None, ForwardReference, HasUniqueName ] -YAML: FieldList: 0 -YAML: Name: '__vc_attributes::helper_attributes::v1_alttypeAttribute' -YAML: UniqueName: '.?AUv1_alttypeAttribute@helper_attributes@__vc_attributes@@' -YAML: Hfa: None -YAML: WinRTKind: None -YAML: DerivationList: 0 -YAML: VTableShape: 0 -YAML: Size: 0 -YAML: - Kind: LF_POINTER -YAML: Pointer: -YAML: ReferentType: 4165 -YAML: PtrKind: Near32 -YAML: Mode: Pointer -YAML: Options: [ None, Const ] -YAML: Size: 4 -YAML: - Kind: LF_ARGLIST -YAML: ArgList: -YAML: ArgIndices: [ 4164 ] -YAML: - Kind: LF_MFUNCTION -YAML: MemberFunction: -YAML: ReturnType: 3 -YAML: ClassType: 4165 -YAML: ThisType: 4166 -YAML: CallConv: ThisCall -YAML: Options: [ None, Constructor ] -YAML: ParameterCount: 1 -YAML: ArgumentList: 4167 -YAML: ThisPointerAdjustment: 0 -YAML: - Kind: LF_FIELDLIST -YAML: FieldList: -YAML: Kind: LF_NESTTYPE -YAML: NestedType: -YAML: Type: 4164 -YAML: Name: type_e -YAML: Kind: LF_ONEMETHOD -YAML: OneMethod: -YAML: Type: 4168 -YAML: Kind: Vanilla -YAML: Options: [ None ] -YAML: Access: Public -YAML: VFTableOffset: -1 -YAML: Name: v1_alttypeAttribute -YAML: Kind: LF_MEMBER -YAML: DataMember: -YAML: Access: Public -YAML: Type: 4164 -YAML: FieldOffset: 0 -YAML: Name: type -YAML: - Kind: LF_STRUCTURE -YAML: Class: -YAML: MemberCount: 3 -YAML: Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] -YAML: FieldList: 4169 -YAML: Name: '__vc_attributes::helper_attributes::v1_alttypeAttribute' -YAML: UniqueName: '.?AUv1_alttypeAttribute@helper_attributes@__vc_attributes@@' -YAML: Hfa: None -YAML: WinRTKind: None -YAML: DerivationList: 0 -YAML: VTableShape: 0 -YAML: Size: 4 -YAML: ... +; RUN: llvm-pdbdump pdb2yaml -tpi-stream %p/Inputs/empty.pdb \ +; RUN: | FileCheck -check-prefix=YAML %s + +YAML: --- +YAML: MSF: +YAML: SuperBlock: +YAML: BlockSize: 4096 +YAML: FreeBlockMap: 2 +YAML: NumBlocks: 25 +YAML: NumDirectoryBytes: 136 +YAML: Unknown1: 0 +YAML: BlockMapAddr: 24 +YAML: NumDirectoryBlocks: 1 +YAML: DirectoryBlocks: [ 23 ] +YAML: NumStreams: 0 +YAML: FileSize: 102400 +YAML: TpiStream: +YAML: Version: VC80 +YAML: Records: +YAML: - Kind: LF_ARGLIST +YAML: ArgList: +YAML: ArgIndices: [ ] +YAML: - Kind: LF_PROCEDURE +YAML: Procedure: +YAML: ReturnType: 116 +YAML: CallConv: NearC +YAML: Options: [ None ] +YAML: ParameterCount: 0 +YAML: ArgumentList: 4096 +YAML: - Kind: LF_FIELDLIST +YAML: FieldList: +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 1 +YAML: Name: apartment +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 2 +YAML: Name: single +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 3 +YAML: Name: free +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 4 +YAML: Name: neutral +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 5 +YAML: Name: both +YAML: - Kind: LF_ENUM +YAML: Enum: +YAML: NumEnumerators: 5 +YAML: Options: [ None, Nested, HasUniqueName ] +YAML: FieldList: 4098 +YAML: Name: '__vc_attributes::threadingAttribute::threading_e' +YAML: UniqueName: '.?AW4threading_e@threadingAttribute@__vc_attributes@@' +YAML: UnderlyingType: 116 +YAML: - Kind: LF_STRUCTURE +YAML: Class: +YAML: MemberCount: 0 +YAML: Options: [ None, ForwardReference, HasUniqueName ] +YAML: FieldList: 0 +YAML: Name: '__vc_attributes::threadingAttribute' +YAML: UniqueName: '.?AUthreadingAttribute@__vc_attributes@@' +YAML: Hfa: None +YAML: WinRTKind: None +YAML: DerivationList: 0 +YAML: VTableShape: 0 +YAML: Size: 0 +YAML: - Kind: LF_POINTER +YAML: Pointer: +YAML: ReferentType: 4100 +YAML: PtrKind: Near32 +YAML: Mode: Pointer +YAML: Options: [ None, Const ] +YAML: Size: 4 +YAML: - Kind: LF_ARGLIST +YAML: ArgList: +YAML: ArgIndices: [ 4099 ] +YAML: - Kind: LF_MFUNCTION +YAML: MemberFunction: +YAML: ReturnType: 3 +YAML: ClassType: 4100 +YAML: ThisType: 4101 +YAML: CallConv: ThisCall +YAML: Options: [ None, Constructor ] +YAML: ParameterCount: 1 +YAML: ArgumentList: 4102 +YAML: ThisPointerAdjustment: 0 +YAML: - Kind: LF_MFUNCTION +YAML: MemberFunction: +YAML: ReturnType: 3 +YAML: ClassType: 4100 +YAML: ThisType: 4101 +YAML: CallConv: ThisCall +YAML: Options: [ None, Constructor ] +YAML: ParameterCount: 0 +YAML: ArgumentList: 4096 +YAML: ThisPointerAdjustment: 0 +YAML: - Kind: LF_METHODLIST +YAML: MethodOverloadList: +YAML: Methods: +YAML: - Type: 4103 +YAML: Kind: Vanilla +YAML: Options: [ None ] +YAML: Access: Public +YAML: VFTableOffset: -1 +YAML: Name: '' +YAML: - Type: 4104 +YAML: Kind: Vanilla +YAML: Options: [ None ] +YAML: Access: Public +YAML: VFTableOffset: -1 +YAML: Name: '' +YAML: - Kind: LF_FIELDLIST +YAML: FieldList: +YAML: - Kind: LF_NESTTYPE +YAML: NestedType: +YAML: Type: 4099 +YAML: Name: threading_e +YAML: - Kind: LF_METHOD +YAML: OverloadedMethod: +YAML: NumOverloads: 2 +YAML: MethodList: 4105 +YAML: Name: threadingAttribute +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 4099 +YAML: FieldOffset: 0 +YAML: Name: value +YAML: - Kind: LF_STRUCTURE +YAML: Class: +YAML: MemberCount: 4 +YAML: Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] +YAML: FieldList: 4106 +YAML: Name: '__vc_attributes::threadingAttribute' +YAML: UniqueName: '.?AUthreadingAttribute@__vc_attributes@@' +YAML: Hfa: None +YAML: WinRTKind: None +YAML: DerivationList: 0 +YAML: VTableShape: 0 +YAML: Size: 4 +YAML: - Kind: LF_FIELDLIST +YAML: FieldList: +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 0 +YAML: Name: native +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 1 +YAML: Name: com +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 2 +YAML: Name: managed +YAML: - Kind: LF_ENUM +YAML: Enum: +YAML: NumEnumerators: 3 +YAML: Options: [ None, Nested, HasUniqueName ] +YAML: FieldList: 4108 +YAML: Name: '__vc_attributes::event_receiverAttribute::type_e' +YAML: UniqueName: '.?AW4type_e@event_receiverAttribute@__vc_attributes@@' +YAML: UnderlyingType: 116 +YAML: - Kind: LF_STRUCTURE +YAML: Class: +YAML: MemberCount: 0 +YAML: Options: [ None, ForwardReference, HasUniqueName ] +YAML: FieldList: 0 +YAML: Name: '__vc_attributes::event_receiverAttribute' +YAML: UniqueName: '.?AUevent_receiverAttribute@__vc_attributes@@' +YAML: Hfa: None +YAML: WinRTKind: None +YAML: DerivationList: 0 +YAML: VTableShape: 0 +YAML: Size: 0 +YAML: - Kind: LF_POINTER +YAML: Pointer: +YAML: ReferentType: 4110 +YAML: PtrKind: Near32 +YAML: Mode: Pointer +YAML: Options: [ None, Const ] +YAML: Size: 4 +YAML: - Kind: LF_ARGLIST +YAML: ArgList: +YAML: ArgIndices: [ 4109, 48 ] +YAML: - Kind: LF_MFUNCTION +YAML: MemberFunction: +YAML: ReturnType: 3 +YAML: ClassType: 4110 +YAML: ThisType: 4111 +YAML: CallConv: ThisCall +YAML: Options: [ None, Constructor ] +YAML: ParameterCount: 2 +YAML: ArgumentList: 4112 +YAML: ThisPointerAdjustment: 0 +YAML: - Kind: LF_ARGLIST +YAML: ArgList: +YAML: ArgIndices: [ 4109 ] +YAML: - Kind: LF_MFUNCTION +YAML: MemberFunction: +YAML: ReturnType: 3 +YAML: ClassType: 4110 +YAML: ThisType: 4111 +YAML: CallConv: ThisCall +YAML: Options: [ None, Constructor ] +YAML: ParameterCount: 1 +YAML: ArgumentList: 4114 +YAML: ThisPointerAdjustment: 0 +YAML: - Kind: LF_MFUNCTION +YAML: MemberFunction: +YAML: ReturnType: 3 +YAML: ClassType: 4110 +YAML: ThisType: 4111 +YAML: CallConv: ThisCall +YAML: Options: [ None, Constructor ] +YAML: ParameterCount: 0 +YAML: ArgumentList: 4096 +YAML: ThisPointerAdjustment: 0 +YAML: - Kind: LF_METHODLIST +YAML: MethodOverloadList: +YAML: Methods: +YAML: - Type: 4113 +YAML: Kind: Vanilla +YAML: Options: [ None ] +YAML: Access: Public +YAML: VFTableOffset: -1 +YAML: Name: '' +YAML: - Type: 4115 +YAML: Kind: Vanilla +YAML: Options: [ None ] +YAML: Access: Public +YAML: VFTableOffset: -1 +YAML: Name: '' +YAML: - Type: 4116 +YAML: Kind: Vanilla +YAML: Options: [ None ] +YAML: Access: Public +YAML: VFTableOffset: -1 +YAML: Name: '' +YAML: - Kind: LF_FIELDLIST +YAML: FieldList: +YAML: - Kind: LF_NESTTYPE +YAML: NestedType: +YAML: Type: 4109 +YAML: Name: type_e +YAML: - Kind: LF_METHOD +YAML: OverloadedMethod: +YAML: NumOverloads: 3 +YAML: MethodList: 4117 +YAML: Name: event_receiverAttribute +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 4109 +YAML: FieldOffset: 0 +YAML: Name: type +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 48 +YAML: FieldOffset: 4 +YAML: Name: layout_dependent +YAML: - Kind: LF_STRUCTURE +YAML: Class: +YAML: MemberCount: 6 +YAML: Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] +YAML: FieldList: 4118 +YAML: Name: '__vc_attributes::event_receiverAttribute' +YAML: UniqueName: '.?AUevent_receiverAttribute@__vc_attributes@@' +YAML: Hfa: None +YAML: WinRTKind: None +YAML: DerivationList: 0 +YAML: VTableShape: 0 +YAML: Size: 8 +YAML: - Kind: LF_FIELDLIST +YAML: FieldList: +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 0 +YAML: Name: never +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 1 +YAML: Name: allowed +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 2 +YAML: Name: always +YAML: - Kind: LF_ENUM +YAML: Enum: +YAML: NumEnumerators: 3 +YAML: Options: [ None, Nested, HasUniqueName ] +YAML: FieldList: 4120 +YAML: Name: '__vc_attributes::aggregatableAttribute::type_e' +YAML: UniqueName: '.?AW4type_e@aggregatableAttribute@__vc_attributes@@' +YAML: UnderlyingType: 116 +YAML: - Kind: LF_STRUCTURE +YAML: Class: +YAML: MemberCount: 0 +YAML: Options: [ None, ForwardReference, HasUniqueName ] +YAML: FieldList: 0 +YAML: Name: '__vc_attributes::aggregatableAttribute' +YAML: UniqueName: '.?AUaggregatableAttribute@__vc_attributes@@' +YAML: Hfa: None +YAML: WinRTKind: None +YAML: DerivationList: 0 +YAML: VTableShape: 0 +YAML: Size: 0 +YAML: - Kind: LF_POINTER +YAML: Pointer: +YAML: ReferentType: 4122 +YAML: PtrKind: Near32 +YAML: Mode: Pointer +YAML: Options: [ None, Const ] +YAML: Size: 4 +YAML: - Kind: LF_ARGLIST +YAML: ArgList: +YAML: ArgIndices: [ 4121 ] +YAML: - Kind: LF_MFUNCTION +YAML: MemberFunction: +YAML: ReturnType: 3 +YAML: ClassType: 4122 +YAML: ThisType: 4123 +YAML: CallConv: ThisCall +YAML: Options: [ None, Constructor ] +YAML: ParameterCount: 1 +YAML: ArgumentList: 4124 +YAML: ThisPointerAdjustment: 0 +YAML: - Kind: LF_MFUNCTION +YAML: MemberFunction: +YAML: ReturnType: 3 +YAML: ClassType: 4122 +YAML: ThisType: 4123 +YAML: CallConv: ThisCall +YAML: Options: [ None, Constructor ] +YAML: ParameterCount: 0 +YAML: ArgumentList: 4096 +YAML: ThisPointerAdjustment: 0 +YAML: - Kind: LF_METHODLIST +YAML: MethodOverloadList: +YAML: Methods: +YAML: - Type: 4125 +YAML: Kind: Vanilla +YAML: Options: [ None ] +YAML: Access: Public +YAML: VFTableOffset: -1 +YAML: Name: '' +YAML: - Type: 4126 +YAML: Kind: Vanilla +YAML: Options: [ None ] +YAML: Access: Public +YAML: VFTableOffset: -1 +YAML: Name: '' +YAML: - Kind: LF_FIELDLIST +YAML: FieldList: +YAML: - Kind: LF_NESTTYPE +YAML: NestedType: +YAML: Type: 4121 +YAML: Name: type_e +YAML: - Kind: LF_METHOD +YAML: OverloadedMethod: +YAML: NumOverloads: 2 +YAML: MethodList: 4127 +YAML: Name: aggregatableAttribute +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 4121 +YAML: FieldOffset: 0 +YAML: Name: type +YAML: - Kind: LF_STRUCTURE +YAML: Class: +YAML: MemberCount: 4 +YAML: Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] +YAML: FieldList: 4128 +YAML: Name: '__vc_attributes::aggregatableAttribute' +YAML: UniqueName: '.?AUaggregatableAttribute@__vc_attributes@@' +YAML: Hfa: None +YAML: WinRTKind: None +YAML: DerivationList: 0 +YAML: VTableShape: 0 +YAML: Size: 4 +YAML: - Kind: LF_ENUM +YAML: Enum: +YAML: NumEnumerators: 3 +YAML: Options: [ None, Nested, HasUniqueName ] +YAML: FieldList: 4108 +YAML: Name: '__vc_attributes::event_sourceAttribute::type_e' +YAML: UniqueName: '.?AW4type_e@event_sourceAttribute@__vc_attributes@@' +YAML: UnderlyingType: 116 +YAML: - Kind: LF_FIELDLIST +YAML: FieldList: +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 0 +YAML: Name: speed +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 1 +YAML: Name: size +YAML: - Kind: LF_ENUM +YAML: Enum: +YAML: NumEnumerators: 2 +YAML: Options: [ None, Nested, HasUniqueName ] +YAML: FieldList: 4131 +YAML: Name: '__vc_attributes::event_sourceAttribute::optimize_e' +YAML: UniqueName: '.?AW4optimize_e@event_sourceAttribute@__vc_attributes@@' +YAML: UnderlyingType: 116 +YAML: - Kind: LF_STRUCTURE +YAML: Class: +YAML: MemberCount: 0 +YAML: Options: [ None, ForwardReference, HasUniqueName ] +YAML: FieldList: 0 +YAML: Name: '__vc_attributes::event_sourceAttribute' +YAML: UniqueName: '.?AUevent_sourceAttribute@__vc_attributes@@' +YAML: Hfa: None +YAML: WinRTKind: None +YAML: DerivationList: 0 +YAML: VTableShape: 0 +YAML: Size: 0 +YAML: - Kind: LF_POINTER +YAML: Pointer: +YAML: ReferentType: 4133 +YAML: PtrKind: Near32 +YAML: Mode: Pointer +YAML: Options: [ None, Const ] +YAML: Size: 4 +YAML: - Kind: LF_ARGLIST +YAML: ArgList: +YAML: ArgIndices: [ 4130 ] +YAML: - Kind: LF_MFUNCTION +YAML: MemberFunction: +YAML: ReturnType: 3 +YAML: ClassType: 4133 +YAML: ThisType: 4134 +YAML: CallConv: ThisCall +YAML: Options: [ None, Constructor ] +YAML: ParameterCount: 1 +YAML: ArgumentList: 4135 +YAML: ThisPointerAdjustment: 0 +YAML: - Kind: LF_MFUNCTION +YAML: MemberFunction: +YAML: ReturnType: 3 +YAML: ClassType: 4133 +YAML: ThisType: 4134 +YAML: CallConv: ThisCall +YAML: Options: [ None, Constructor ] +YAML: ParameterCount: 0 +YAML: ArgumentList: 4096 +YAML: ThisPointerAdjustment: 0 +YAML: - Kind: LF_METHODLIST +YAML: MethodOverloadList: +YAML: Methods: +YAML: - Type: 4136 +YAML: Kind: Vanilla +YAML: Options: [ None ] +YAML: Access: Public +YAML: VFTableOffset: -1 +YAML: Name: '' +YAML: - Type: 4137 +YAML: Kind: Vanilla +YAML: Options: [ None ] +YAML: Access: Public +YAML: VFTableOffset: -1 +YAML: Name: '' +YAML: - Kind: LF_FIELDLIST +YAML: FieldList: +YAML: - Kind: LF_NESTTYPE +YAML: NestedType: +YAML: Type: 4130 +YAML: Name: type_e +YAML: - Kind: LF_NESTTYPE +YAML: NestedType: +YAML: Type: 4132 +YAML: Name: optimize_e +YAML: - Kind: LF_METHOD +YAML: OverloadedMethod: +YAML: NumOverloads: 2 +YAML: MethodList: 4138 +YAML: Name: event_sourceAttribute +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 4130 +YAML: FieldOffset: 0 +YAML: Name: type +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 4132 +YAML: FieldOffset: 4 +YAML: Name: optimize +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 48 +YAML: FieldOffset: 8 +YAML: Name: decorate +YAML: - Kind: LF_STRUCTURE +YAML: Class: +YAML: MemberCount: 7 +YAML: Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] +YAML: FieldList: 4139 +YAML: Name: '__vc_attributes::event_sourceAttribute' +YAML: UniqueName: '.?AUevent_sourceAttribute@__vc_attributes@@' +YAML: Hfa: None +YAML: WinRTKind: None +YAML: DerivationList: 0 +YAML: VTableShape: 0 +YAML: Size: 12 +YAML: - Kind: LF_FIELDLIST +YAML: FieldList: +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 1 +YAML: Name: dll +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 2 +YAML: Name: exe +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 3 +YAML: Name: service +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 4 +YAML: Name: unspecified +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 2 +YAML: Name: EXE +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 3 +YAML: Name: SERVICE +YAML: - Kind: LF_ENUM +YAML: Enum: +YAML: NumEnumerators: 6 +YAML: Options: [ None, Nested, HasUniqueName ] +YAML: FieldList: 4141 +YAML: Name: '__vc_attributes::moduleAttribute::type_e' +YAML: UniqueName: '.?AW4type_e@moduleAttribute@__vc_attributes@@' +YAML: UnderlyingType: 116 +YAML: - Kind: LF_STRUCTURE +YAML: Class: +YAML: MemberCount: 0 +YAML: Options: [ None, ForwardReference, HasUniqueName ] +YAML: FieldList: 0 +YAML: Name: '__vc_attributes::moduleAttribute' +YAML: UniqueName: '.?AUmoduleAttribute@__vc_attributes@@' +YAML: Hfa: None +YAML: WinRTKind: None +YAML: DerivationList: 0 +YAML: VTableShape: 0 +YAML: Size: 0 +YAML: - Kind: LF_POINTER +YAML: Pointer: +YAML: ReferentType: 4143 +YAML: PtrKind: Near32 +YAML: Mode: Pointer +YAML: Options: [ None, Const ] +YAML: Size: 4 +YAML: - Kind: LF_MODIFIER +YAML: Modifier: +YAML: ModifiedType: 112 +YAML: Modifiers: [ None, Const ] +YAML: - Kind: LF_POINTER +YAML: Pointer: +YAML: ReferentType: 4145 +YAML: PtrKind: Near32 +YAML: Mode: Pointer +YAML: Options: [ None ] +YAML: Size: 4 +YAML: - Kind: LF_ARGLIST +YAML: ArgList: +YAML: ArgIndices: [ 4142, 4146, 4146, 4146, 116, 48, 4146, 116, +YAML: 4146, 4146, 116, 48, 48, 4146, 4146 ] +YAML: - Kind: LF_MFUNCTION +YAML: MemberFunction: +YAML: ReturnType: 3 +YAML: ClassType: 4143 +YAML: ThisType: 4144 +YAML: CallConv: ThisCall +YAML: Options: [ None, Constructor ] +YAML: ParameterCount: 15 +YAML: ArgumentList: 4147 +YAML: ThisPointerAdjustment: 0 +YAML: - Kind: LF_ARGLIST +YAML: ArgList: +YAML: ArgIndices: [ 4142 ] +YAML: - Kind: LF_MFUNCTION +YAML: MemberFunction: +YAML: ReturnType: 3 +YAML: ClassType: 4143 +YAML: ThisType: 4144 +YAML: CallConv: ThisCall +YAML: Options: [ None, Constructor ] +YAML: ParameterCount: 1 +YAML: ArgumentList: 4149 +YAML: ThisPointerAdjustment: 0 +YAML: - Kind: LF_MFUNCTION +YAML: MemberFunction: +YAML: ReturnType: 3 +YAML: ClassType: 4143 +YAML: ThisType: 4144 +YAML: CallConv: ThisCall +YAML: Options: [ None, Constructor ] +YAML: ParameterCount: 0 +YAML: ArgumentList: 4096 +YAML: ThisPointerAdjustment: 0 +YAML: - Kind: LF_METHODLIST +YAML: MethodOverloadList: +YAML: Methods: +YAML: - Type: 4148 +YAML: Kind: Vanilla +YAML: Options: [ None ] +YAML: Access: Public +YAML: VFTableOffset: -1 +YAML: Name: '' +YAML: - Type: 4150 +YAML: Kind: Vanilla +YAML: Options: [ None ] +YAML: Access: Public +YAML: VFTableOffset: -1 +YAML: Name: '' +YAML: - Type: 4151 +YAML: Kind: Vanilla +YAML: Options: [ None ] +YAML: Access: Public +YAML: VFTableOffset: -1 +YAML: Name: '' +YAML: - Kind: LF_FIELDLIST +YAML: FieldList: +YAML: - Kind: LF_NESTTYPE +YAML: NestedType: +YAML: Type: 4142 +YAML: Name: type_e +YAML: - Kind: LF_METHOD +YAML: OverloadedMethod: +YAML: NumOverloads: 3 +YAML: MethodList: 4152 +YAML: Name: moduleAttribute +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 4142 +YAML: FieldOffset: 0 +YAML: Name: type +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 4146 +YAML: FieldOffset: 4 +YAML: Name: name +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 4146 +YAML: FieldOffset: 8 +YAML: Name: version +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 4146 +YAML: FieldOffset: 12 +YAML: Name: uuid +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 116 +YAML: FieldOffset: 16 +YAML: Name: lcid +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 48 +YAML: FieldOffset: 20 +YAML: Name: control +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 4146 +YAML: FieldOffset: 24 +YAML: Name: helpstring +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 116 +YAML: FieldOffset: 28 +YAML: Name: helpstringcontext +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 4146 +YAML: FieldOffset: 32 +YAML: Name: helpstringdll +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 4146 +YAML: FieldOffset: 36 +YAML: Name: helpfile +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 116 +YAML: FieldOffset: 40 +YAML: Name: helpcontext +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 48 +YAML: FieldOffset: 44 +YAML: Name: hidden +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 48 +YAML: FieldOffset: 45 +YAML: Name: restricted +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 4146 +YAML: FieldOffset: 48 +YAML: Name: custom +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 4146 +YAML: FieldOffset: 52 +YAML: Name: resource_name +YAML: - Kind: LF_STRUCTURE +YAML: Class: +YAML: MemberCount: 19 +YAML: Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] +YAML: FieldList: 4153 +YAML: Name: '__vc_attributes::moduleAttribute' +YAML: UniqueName: '.?AUmoduleAttribute@__vc_attributes@@' +YAML: Hfa: None +YAML: WinRTKind: None +YAML: DerivationList: 0 +YAML: VTableShape: 0 +YAML: Size: 56 +YAML: - Kind: LF_FIELDLIST +YAML: FieldList: +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 0 +YAML: Name: eAnyUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 1 +YAML: Name: eCoClassUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 2 +YAML: Name: eCOMInterfaceUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 6 +YAML: Name: eInterfaceUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 8 +YAML: Name: eMemberUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 16 +YAML: Name: eMethodUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 32 +YAML: Name: eInterfaceMethodUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 64 +YAML: Name: eInterfaceMemberUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 128 +YAML: Name: eCoClassMemberUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 256 +YAML: Name: eCoClassMethodUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 768 +YAML: Name: eGlobalMethodUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 1024 +YAML: Name: eGlobalDataUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 2048 +YAML: Name: eClassUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 4096 +YAML: Name: eInterfaceParameterUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 12288 +YAML: Name: eMethodParameterUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 16384 +YAML: Name: eIDLModuleUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: -32768 +YAML: Name: eAnonymousUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 65536 +YAML: Name: eTypedefUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 131072 +YAML: Name: eUnionUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 262144 +YAML: Name: eEnumUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 524288 +YAML: Name: eDefineTagUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 1048576 +YAML: Name: eStructUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 2097152 +YAML: Name: eLocalUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 4194304 +YAML: Name: ePropertyUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 8388608 +YAML: Name: eEventUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 16777216 +YAML: Name: eTemplateUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 16777216 +YAML: Name: eModuleUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 33554432 +YAML: Name: eIllegalUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 67108864 +YAML: Name: eAsynchronousUsage +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 4161535 +YAML: Name: eAnyIDLUsage +YAML: - Kind: LF_ENUM +YAML: Enum: +YAML: NumEnumerators: 30 +YAML: Options: [ None, Nested, HasUniqueName ] +YAML: FieldList: 4155 +YAML: Name: '__vc_attributes::helper_attributes::usageAttribute::usage_e' +YAML: UniqueName: '.?AW4usage_e@usageAttribute@helper_attributes@__vc_attributes@@' +YAML: UnderlyingType: 116 +YAML: - Kind: LF_STRUCTURE +YAML: Class: +YAML: MemberCount: 0 +YAML: Options: [ None, ForwardReference, HasUniqueName ] +YAML: FieldList: 0 +YAML: Name: '__vc_attributes::helper_attributes::usageAttribute' +YAML: UniqueName: '.?AUusageAttribute@helper_attributes@__vc_attributes@@' +YAML: Hfa: None +YAML: WinRTKind: None +YAML: DerivationList: 0 +YAML: VTableShape: 0 +YAML: Size: 0 +YAML: - Kind: LF_POINTER +YAML: Pointer: +YAML: ReferentType: 4157 +YAML: PtrKind: Near32 +YAML: Mode: Pointer +YAML: Options: [ None, Const ] +YAML: Size: 4 +YAML: - Kind: LF_ARGLIST +YAML: ArgList: +YAML: ArgIndices: [ 117 ] +YAML: - Kind: LF_MFUNCTION +YAML: MemberFunction: +YAML: ReturnType: 3 +YAML: ClassType: 4157 +YAML: ThisType: 4158 +YAML: CallConv: ThisCall +YAML: Options: [ None, Constructor ] +YAML: ParameterCount: 1 +YAML: ArgumentList: 4159 +YAML: ThisPointerAdjustment: 0 +YAML: - Kind: LF_FIELDLIST +YAML: FieldList: +YAML: - Kind: LF_NESTTYPE +YAML: NestedType: +YAML: Type: 4156 +YAML: Name: usage_e +YAML: - Kind: LF_ONEMETHOD +YAML: OneMethod: +YAML: Type: 4160 +YAML: Kind: Vanilla +YAML: Options: [ None ] +YAML: Access: Public +YAML: VFTableOffset: -1 +YAML: Name: usageAttribute +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 117 +YAML: FieldOffset: 0 +YAML: Name: value +YAML: - Kind: LF_STRUCTURE +YAML: Class: +YAML: MemberCount: 3 +YAML: Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] +YAML: FieldList: 4161 +YAML: Name: '__vc_attributes::helper_attributes::usageAttribute' +YAML: UniqueName: '.?AUusageAttribute@helper_attributes@__vc_attributes@@' +YAML: Hfa: None +YAML: WinRTKind: None +YAML: DerivationList: 0 +YAML: VTableShape: 0 +YAML: Size: 4 +YAML: - Kind: LF_FIELDLIST +YAML: FieldList: +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 0 +YAML: Name: eBoolean +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 1 +YAML: Name: eInteger +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 2 +YAML: Name: eFloat +YAML: - Kind: LF_ENUMERATE +YAML: Enumerator: +YAML: Access: Public +YAML: Value: 3 +YAML: Name: eDouble +YAML: - Kind: LF_ENUM +YAML: Enum: +YAML: NumEnumerators: 4 +YAML: Options: [ None, Nested, HasUniqueName ] +YAML: FieldList: 4163 +YAML: Name: '__vc_attributes::helper_attributes::v1_alttypeAttribute::type_e' +YAML: UniqueName: '.?AW4type_e@v1_alttypeAttribute@helper_attributes@__vc_attributes@@' +YAML: UnderlyingType: 116 +YAML: - Kind: LF_STRUCTURE +YAML: Class: +YAML: MemberCount: 0 +YAML: Options: [ None, ForwardReference, HasUniqueName ] +YAML: FieldList: 0 +YAML: Name: '__vc_attributes::helper_attributes::v1_alttypeAttribute' +YAML: UniqueName: '.?AUv1_alttypeAttribute@helper_attributes@__vc_attributes@@' +YAML: Hfa: None +YAML: WinRTKind: None +YAML: DerivationList: 0 +YAML: VTableShape: 0 +YAML: Size: 0 +YAML: - Kind: LF_POINTER +YAML: Pointer: +YAML: ReferentType: 4165 +YAML: PtrKind: Near32 +YAML: Mode: Pointer +YAML: Options: [ None, Const ] +YAML: Size: 4 +YAML: - Kind: LF_ARGLIST +YAML: ArgList: +YAML: ArgIndices: [ 4164 ] +YAML: - Kind: LF_MFUNCTION +YAML: MemberFunction: +YAML: ReturnType: 3 +YAML: ClassType: 4165 +YAML: ThisType: 4166 +YAML: CallConv: ThisCall +YAML: Options: [ None, Constructor ] +YAML: ParameterCount: 1 +YAML: ArgumentList: 4167 +YAML: ThisPointerAdjustment: 0 +YAML: - Kind: LF_FIELDLIST +YAML: FieldList: +YAML: - Kind: LF_NESTTYPE +YAML: NestedType: +YAML: Type: 4164 +YAML: Name: type_e +YAML: - Kind: LF_ONEMETHOD +YAML: OneMethod: +YAML: Type: 4168 +YAML: Kind: Vanilla +YAML: Options: [ None ] +YAML: Access: Public +YAML: VFTableOffset: -1 +YAML: Name: v1_alttypeAttribute +YAML: - Kind: LF_MEMBER +YAML: DataMember: +YAML: Access: Public +YAML: Type: 4164 +YAML: FieldOffset: 0 +YAML: Name: type +YAML: - Kind: LF_STRUCTURE +YAML: Class: +YAML: MemberCount: 3 +YAML: Options: [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ] +YAML: FieldList: 4169 +YAML: Name: '__vc_attributes::helper_attributes::v1_alttypeAttribute' +YAML: UniqueName: '.?AUv1_alttypeAttribute@helper_attributes@__vc_attributes@@' +YAML: Hfa: None +YAML: WinRTKind: None +YAML: DerivationList: 0 +YAML: VTableShape: 0 +YAML: Size: 4 +YAML: ... diff --git a/tools/llvm-pdbdump/CodeViewYaml.cpp b/tools/llvm-pdbdump/CodeViewYaml.cpp index e75f454b34a..4817c5963c1 100644 --- a/tools/llvm-pdbdump/CodeViewYaml.cpp +++ b/tools/llvm-pdbdump/CodeViewYaml.cpp @@ -8,6 +8,7 @@ //===----------------------------------------------------------------------===// #include "CodeViewYaml.h" +#include "PdbYaml.h" #include "llvm/DebugInfo/CodeView/CVTypeVisitor.h" #include "llvm/DebugInfo/CodeView/EnumTables.h" @@ -25,6 +26,35 @@ LLVM_YAML_IS_SEQUENCE_VECTOR(OneMethodRecord) LLVM_YAML_IS_SEQUENCE_VECTOR(VFTableSlotKind) LLVM_YAML_IS_SEQUENCE_VECTOR(StringRef) LLVM_YAML_IS_SEQUENCE_VECTOR(CVType) +LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::pdb::yaml::PdbTpiRecord) + +namespace { +struct FieldListRecordSplitter : public TypeVisitorCallbacks { +public: + explicit FieldListRecordSplitter( + std::vector &Records) + : Records(Records) {} + +#define TYPE_RECORD(EnumName, EnumVal, Name) +#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName) +#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName) +#define MEMBER_RECORD(EnumName, EnumVal, Name) \ + Error visitKnownRecord(const CVType &CVT, Name##Record &Record) override { \ + visitKnownRecordImpl(CVT); \ + return Error::success(); \ + } +#include "llvm/DebugInfo/CodeView/TypeRecords.def" + +private: + void visitKnownRecordImpl(const CVType &CVT) { + llvm::pdb::yaml::PdbTpiRecord R; + R.Record = CVT; + Records.push_back(std::move(R)); + } + + std::vector &Records; +}; +} namespace llvm { namespace yaml { @@ -518,3 +548,15 @@ llvm::codeview::yaml::YamlTypeDumperCallbacks::visitTypeBegin( YamlIO.mapRequired("Kind", K); return K; } + +void llvm::codeview::yaml::YamlTypeDumperCallbacks::visitKnownRecordImpl( + const char *Name, const CVType &Type, FieldListRecord &FieldList) { + + std::vector Records; + if (YamlIO.outputting()) { + FieldListRecordSplitter Splitter(Records); + CVTypeVisitor V(Splitter); + consumeError(V.visitFieldListMemberStream(FieldList.Data)); + } + YamlIO.mapRequired(Name, Records); +} diff --git a/tools/llvm-pdbdump/CodeViewYaml.h b/tools/llvm-pdbdump/CodeViewYaml.h index 8932d008ca3..ccf7e406b4f 100644 --- a/tools/llvm-pdbdump/CodeViewYaml.h +++ b/tools/llvm-pdbdump/CodeViewYaml.h @@ -27,7 +27,7 @@ public: #define TYPE_RECORD(EnumName, EnumVal, Name) \ Error visitKnownRecord(const CVRecord &CVR, \ Name##Record &Record) override { \ - YamlIO.mapRequired(#Name, Record); \ + visitKnownRecordImpl(#Name, CVR, Record); \ return Error::success(); \ } #define MEMBER_RECORD(EnumName, EnumVal, Name) \ @@ -37,6 +37,14 @@ public: #include "llvm/DebugInfo/CodeView/TypeRecords.def" private: + template + void visitKnownRecordImpl(const char *Name, const CVType &Type, T &Record) { + YamlIO.mapRequired(Name, Record); + } + + void visitKnownRecordImpl(const char *Name, const CVType &Type, + FieldListRecord &FieldList); + llvm::yaml::IO &YamlIO; }; } diff --git a/tools/llvm-pdbdump/PdbYaml.h b/tools/llvm-pdbdump/PdbYaml.h index 0da53034bf1..1b3939f722e 100644 --- a/tools/llvm-pdbdump/PdbYaml.h +++ b/tools/llvm-pdbdump/PdbYaml.h @@ -70,7 +70,6 @@ struct PdbDbiStream { }; struct PdbTpiRecord { - std::vector RecordData; codeview::CVType Record; };