diff options
| author | Zachary Turner <zturner@google.com> | 2015-03-02 04:39:56 +0000 |
|---|---|---|
| committer | Zachary Turner <zturner@google.com> | 2015-03-02 04:39:56 +0000 |
| commit | 7797c726b9a864372553de4b640c540b1dae8251 (patch) | |
| tree | 655a6b62386ef5b43759a072b66b3d588fea3ba1 /llvm/test | |
| parent | 968ceddca9a80197db8c785faf80fa9fc44ef7cd (diff) | |
| download | bcm5719-llvm-7797c726b9a864372553de4b640c540b1dae8251.tar.gz bcm5719-llvm-7797c726b9a864372553de4b640c540b1dae8251.zip | |
[llvm-pdbdump] Many minor fixes and improvements
A short list of some of the improvements:
1) Now supports -all command line argument, which implies many
other command line arguments to simplify usage.
2) Now supports -no-compiler-generated command line argument to
exclude compiler generated types.
3) Prints base class list.
4) -class-definitions implies -types.
5) Proper display of bitfields.
6) Can now distinguish between struct/class/interface/union.
And a few other minor tweaks.
llvm-svn: 230933
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/DebugInfo/PDB/pdbdump-symbol-format.test | 4 | ||||
| -rw-r--r-- | llvm/test/tools/llvm-pdbdump/Inputs/ClassLayoutTest.cpp | 64 | ||||
| -rw-r--r-- | llvm/test/tools/llvm-pdbdump/Inputs/ClassLayoutTest.pdb | bin | 0 -> 35840 bytes | |||
| -rw-r--r-- | llvm/test/tools/llvm-pdbdump/class-layout.test | 57 | ||||
| -rw-r--r-- | llvm/test/tools/llvm-pdbdump/regex-filter.test | 2 |
5 files changed, 124 insertions, 3 deletions
diff --git a/llvm/test/DebugInfo/PDB/pdbdump-symbol-format.test b/llvm/test/DebugInfo/PDB/pdbdump-symbol-format.test index a34d46d8db6..90381f1d91f 100644 --- a/llvm/test/DebugInfo/PDB/pdbdump-symbol-format.test +++ b/llvm/test/DebugInfo/PDB/pdbdump-symbol-format.test @@ -30,13 +30,13 @@ ; FULL_CLASS: ---TYPES--- ; FULL_CLASS: Classes -; FULL_CLASS-DAG: class A { +; FULL_CLASS-DAG: struct A { ; FULL_CLASS: public: ; FULL_CLASS: virtual void PureFunc() = 0 ; FULL_CLASS: virtual void VirtualFunc() ; FULL_CLASS: void RegularFunc() ; FULL_CLASS: } -; FULL_CLASS-DAG: class MemberTest { +; FULL_CLASS-DAG: struct MemberTest { ; FULL_CLASS: data +0x00 MemberTest::NestedEnum m_nested_enum ; FULL_CLASS: data +0x04 int m_typedef ; FULL_CLASS: data +0x08 bool m_bool diff --git a/llvm/test/tools/llvm-pdbdump/Inputs/ClassLayoutTest.cpp b/llvm/test/tools/llvm-pdbdump/Inputs/ClassLayoutTest.cpp new file mode 100644 index 00000000000..51c1b9bb305 --- /dev/null +++ b/llvm/test/tools/llvm-pdbdump/Inputs/ClassLayoutTest.cpp @@ -0,0 +1,64 @@ +// Compile with "cl /c /Zi /GR- ClassLayoutTest.cpp"
+// Link with "link ClassLayoutTest.obj /debug /nodefaultlib /entry:main"
+
+namespace MembersTest {
+ class A {
+ public:
+ typedef int NestedTypedef;
+ enum NestedEnum {
+ NestedEnumValue1
+ };
+
+ void MemberFunc() {}
+
+ private:
+ int IntMemberVar;
+ double DoubleMemberVar;
+ };
+}
+
+namespace GlobalsTest {
+ int IntVar;
+ double DoubleVar;
+
+ typedef int Typedef;
+ enum Enum {
+ Val1
+ } EnumVar;
+ Typedef TypedefVar;
+}
+
+namespace BaseClassTest {
+ class A {};
+ class B : public virtual A {};
+ class C : public virtual A {};
+ class D : protected B, private C {};
+}
+
+namespace UdtKindTest {
+ struct A {};
+ class B {};
+ union C {};
+}
+
+namespace BitFieldTest {
+ struct A {
+ int Bits1 : 1;
+ int Bits2 : 2;
+ int Bits3 : 3;
+ int Bits4 : 4;
+ int Bits22 : 22;
+ int Offset0x04;
+ };
+};
+
+int main(int argc, char **argv) {
+ MembersTest::A v1;
+ v1.MemberFunc();
+ BaseClassTest::D v2;
+ UdtKindTest::A v3;
+ UdtKindTest::B v4;
+ UdtKindTest::C v5;
+ BitFieldTest::A v7;
+ return 0;
+}
diff --git a/llvm/test/tools/llvm-pdbdump/Inputs/ClassLayoutTest.pdb b/llvm/test/tools/llvm-pdbdump/Inputs/ClassLayoutTest.pdb Binary files differnew file mode 100644 index 00000000000..5f5190df4b7 --- /dev/null +++ b/llvm/test/tools/llvm-pdbdump/Inputs/ClassLayoutTest.pdb diff --git a/llvm/test/tools/llvm-pdbdump/class-layout.test b/llvm/test/tools/llvm-pdbdump/class-layout.test new file mode 100644 index 00000000000..c46e62b2196 --- /dev/null +++ b/llvm/test/tools/llvm-pdbdump/class-layout.test @@ -0,0 +1,57 @@ +; RUN: llvm-pdbdump -all %p/Inputs/ClassLayoutTest.pdb > %t
+; RUN: FileCheck -input-file=%t %s -check-prefix=GLOBALS_TEST
+; RUN: FileCheck -input-file=%t %s -check-prefix=MEMBERS_TEST
+; RUN: FileCheck -input-file=%t %s -check-prefix=BASE_CLASS_A
+; RUN: FileCheck -input-file=%t %s -check-prefix=BASE_CLASS_B
+; RUN: FileCheck -input-file=%t %s -check-prefix=BASE_CLASS_C
+; RUN: FileCheck -input-file=%t %s -check-prefix=BASE_CLASS_D
+; RUN: FileCheck -input-file=%t %s -check-prefix=UDT_KIND_TEST
+; RUN: FileCheck -input-file=%t %s -check-prefix=BITFIELD_TEST
+
+; GLOBALS_TEST: ---GLOBALS---
+; GLOBALS_TEST-DAG: int GlobalsTest::IntVar
+; GLOBALS_TEST-DAG: double GlobalsTest::DoubleVar
+; GLOBALS_TEST-DAG: GlobalsTest::Enum GlobalsTest::EnumVar
+
+; MEMBERS_TEST: ---TYPES---
+; MEMBERS_TEST: class MembersTest::A {
+; MEMBERS_TEST-DAG: typedef int NestedTypedef
+; MEMBERS_TEST-DAG: enum NestedEnum
+; MEMBERS_TEST: public:
+; MEMBERS_TEST-NEXT: void MemberFunc()
+; MEMBERS_TEST-NEXT: private:
+; MEMBERS_TEST-DAG: int IntMemberVar
+; MEMBERS_TEST-DAG: double DoubleMemberVar
+; MEMBERS_TEST: }
+
+; BASE_CLASS_A: ---TYPES---
+; BASE_CLASS_A: class BaseClassTest::A {}
+
+; BASE_CLASS_B: ---TYPES---
+; BASE_CLASS_B: class BaseClassTest::B
+; BASE_CLASS_B-NEXT: : public virtual BaseClassTest::A {
+
+; BASE_CLASS_C: ---TYPES---
+; BASE_CLASS_C: class BaseClassTest::C
+; BASE_CLASS_C-NEXT: : public virtual BaseClassTest::A {
+
+; BASE_CLASS_D: ---TYPES---
+; BASE_CLASS_D: class BaseClassTest::D
+; BASE_CLASS_D-DAG: protected BaseClassTest::B
+; BASE_CLASS_D-DAG: private BaseClassTest::C
+; BASE_CLASS_D-DAG: protected virtual BaseClassTest::A
+
+; UDT_KIND_TEST: ---TYPES---
+; UDT_KIND_TEST-DAG: union UdtKindTest::C {}
+; UDT_KIND_TEST-DAG: class UdtKindTest::B {}
+; UDT_KIND_TEST-DAG: struct UdtKindTest::A {}
+
+; BITFIELD_TEST: ---TYPES---
+; BITFIELD_TEST: struct BitFieldTest::A {
+; BITFIELD_TEST-NEXT: public:
+; BITFIELD_TEST-NEXT: +0x00 int Bits1 : 1
+; BITFIELD_TEST-NEXT: +0x00 int Bits2 : 2
+; BITFIELD_TEST-NEXT: +0x00 int Bits3 : 3
+; BITFIELD_TEST-NEXT: +0x00 int Bits4 : 4
+; BITFIELD_TEST-NEXT: +0x00 int Bits22 : 22
+; BITFIELD_TEST-NEXT: +0x04 int Offset0x04
diff --git a/llvm/test/tools/llvm-pdbdump/regex-filter.test b/llvm/test/tools/llvm-pdbdump/regex-filter.test index 5f08d7348d9..a0ad17636dd 100644 --- a/llvm/test/tools/llvm-pdbdump/regex-filter.test +++ b/llvm/test/tools/llvm-pdbdump/regex-filter.test @@ -18,7 +18,7 @@ ; NO_FILTER: Typedefs ; NO_FILTER: typedef int GlobalTypedef ; NO_FILTER: Classes: -; NO_FILTER: class __vc_attributes +; NO_FILTER: struct __vc_attributes ; NO_FILTER: class FilterTestClass ; NO_FILTER-DAG: typedef int NestedTypedef ; NO_FILTER-DAG: enum NestedEnum |

