; The following two object files were generated using the following command: ; $ cl /Z7 /c t.cpp ; The contents of t.cpp follow: ; struct A { ; virtual void f(); ; }; ; struct B { ; virtual void f(); ; virtual void g(); ; }; ; struct C { ; virtual void f(); ; virtual void g(); ; virtual void h(); ; }; ; A a; ; B b; ; C c; RUN: llvm-readobj --codeview %p/Inputs/codeview-vftable.obj.coff | FileCheck %s CHECK: VFTable (0x10F0) { CHECK-NEXT: TypeLeafKind: LF_VFTABLE (0x151D) CHECK-NEXT: CompleteClass: A CHECK-NEXT: OverriddenVFTable: 0x0 CHECK-NEXT: VFPtrOffset: 0x0 CHECK-NEXT: VFTableName: ??_7A@@6B@ CHECK-NEXT: MethodName: ?f@A@@UEAAXXZ CHECK-NEXT: } CHECK-NEXT: VFTable (0x10F1) { CHECK-NEXT: TypeLeafKind: LF_VFTABLE (0x151D) CHECK-NEXT: CompleteClass: B CHECK-NEXT: OverriddenVFTable: ??_7A@@6B@ (0x10F0) CHECK-NEXT: VFPtrOffset: 0x0 CHECK-NEXT: VFTableName: ??_7B@@6B@ CHECK-NEXT: MethodName: ?f@B@@UEAAXXZ CHECK-NEXT: MethodName: ?g@B@@UEAAXXZ CHECK-NEXT: } CHECK-NEXT: VFTable (0x10F2) { CHECK-NEXT: TypeLeafKind: LF_VFTABLE (0x151D) CHECK-NEXT: CompleteClass: C CHECK-NEXT: OverriddenVFTable: ??_7B@@6B@ (0x10F1) CHECK-NEXT: VFPtrOffset: 0x0 CHECK-NEXT: VFTableName: ??_7C@@6B@ CHECK-NEXT: MethodName: ?f@C@@UEAAXXZ CHECK-NEXT: MethodName: ?g@C@@UEAAXXZ CHECK-NEXT: MethodName: ?h@C@@UEAAXXZ CHECK-NEXT: }