diff options
author | Reid Kleckner <rnk@google.com> | 2016-05-12 22:46:41 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2016-05-12 22:46:41 +0000 |
commit | 0e85b9730771f3f792dd3faccd06798e707b623f (patch) | |
tree | 5c1f8a6a09fe6257ed9086a8d8e810dc64783678 /llvm/test/tools/llvm-readobj/codeview-vftable.test | |
parent | 1059a067f9936f76fac2ad20d184481505cfd8ac (diff) | |
download | bcm5719-llvm-0e85b9730771f3f792dd3faccd06798e707b623f.tar.gz bcm5719-llvm-0e85b9730771f3f792dd3faccd06798e707b623f.zip |
[codeview] Fix dumping VFTables, stop when we see LF_PAD*
Also stop visiting type records when we encounter an error.
llvm-svn: 269374
Diffstat (limited to 'llvm/test/tools/llvm-readobj/codeview-vftable.test')
-rw-r--r-- | llvm/test/tools/llvm-readobj/codeview-vftable.test | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-readobj/codeview-vftable.test b/llvm/test/tools/llvm-readobj/codeview-vftable.test new file mode 100644 index 00000000000..4091ccacf78 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/codeview-vftable.test @@ -0,0 +1,51 @@ +; 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: VFTableType { +CHECK-NEXT: TypeLeafKind: LF_VFTABLE (0x151D) +CHECK-NEXT: TypeIndex: 0x10F0 +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: VFTableType { +CHECK-NEXT: TypeLeafKind: LF_VFTABLE (0x151D) +CHECK-NEXT: TypeIndex: 0x10F1 +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: VFTableType { +CHECK-NEXT: TypeLeafKind: LF_VFTABLE (0x151D) +CHECK-NEXT: TypeIndex: 0x10F2 +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: } |