a34d46d8db6133846a48fc595211941543bf5722
[oota-llvm.git] / test / DebugInfo / PDB / pdbdump-symbol-format.test
1 ; RUN: llvm-pdbdump -symbols %p/Inputs/symbolformat.pdb | FileCheck --check-prefix=SYM_FORMAT %s
2 ; RUN: llvm-pdbdump -types %p/Inputs/symbolformat.pdb | FileCheck --check-prefix=TYPES_FORMAT %s
3 ; RUN: llvm-pdbdump -types -class-definitions %p/Inputs/symbolformat.pdb | FileCheck --check-prefix=FULL_CLASS %s
4 ; RUN: llvm-pdbdump -globals %p/Inputs/symbolformat.pdb | FileCheck --check-prefix=GLOBALS %s
5
6 ; The format is func [0x<rva_start>+<prologue_length> - 0x<rva_end>-<epilogue_length>]
7 ; SYM_FORMAT: ---SYMBOLS---
8 ; SYM_FORMAT: symbolformat-fpo.obj
9 ; SYM_FORMAT-DAG: func [{{.*}}] (FPO) unsigned __cdecl fpo_func(unsigned n)
10 ; SYM_FORMAT: symbolformat.obj
11 ; SYM_FORMAT-DAG: func [{{.*}}] (EBP) int __cdecl _purecall()
12 ; SYM_FORMAT-DAG: func [{{.*}}] (EBP) int __cdecl main(int argc, char** argv)
13 ; SYM_FORMAT-DAG: func [{{.*}}] (EBP) void A::A()
14 ; SYM_FORMAT-DAG: func [{{.*}}] (EBP) void B::B()
15 ; SYM_FORMAT-DAG: thunk [{{.*}}] (Pcode) B::`vcall'{0}'
16 ; SYM_FORMAT-DAG: func [{{.*}}] (EBP) virtual void B::PureFunc()
17 ; SYM_FORMAT-DAG: func [{{.*}}] (EBP) void A::RegularFunc()
18 ; SYM_FORMAT-DAG: func [{{.*}}] (EBP) virtual void A::VirtualFunc()
19
20 ; TYPES_FORMAT: ---TYPES---
21 ; TYPES_FORMAT: Enums
22 ; TYPES_FORMAT-DAG: enum TestEnum
23 ; TYPES_FORMAT-DAG: enum TestEnumClass
24 ; TYPES_FORMAT: Typedefs
25 ; TYPES_FORMAT-DAG: typedef int IntType
26 ; TYPES_FORMAT-DAG: typedef class A ClassAType
27 ; TYPES_FORMAT: Classes
28 ; TYPES_FORMAT-DAG: class A
29 ; TYPES_FORMAT-DAG: class B
30
31 ; FULL_CLASS: ---TYPES---
32 ; FULL_CLASS: Classes
33 ; FULL_CLASS-DAG: class A {
34 ; FULL_CLASS: public:
35 ; FULL_CLASS: virtual void PureFunc() = 0
36 ; FULL_CLASS: virtual void VirtualFunc()
37 ; FULL_CLASS: void RegularFunc()
38 ; FULL_CLASS: }
39 ; FULL_CLASS-DAG: class MemberTest {
40 ; FULL_CLASS: data +0x00 MemberTest::NestedEnum m_nested_enum
41 ; FULL_CLASS: data +0x04 int m_typedef
42 ; FULL_CLASS: data +0x08 bool m_bool
43 ; FULL_CLASS: data +0x09 char m_char
44 ; FULL_CLASS: data +0x0a wchar_t m_wchar_t
45 ; FULL_CLASS: data +0x0c int m_int
46 ; FULL_CLASS: data +0x10 unsigned m_unsigned
47 ; FULL_CLASS: data +0x14 long m_long
48 ; FULL_CLASS: data +0x18 unsigned long m_unsigned_long
49 ; FULL_CLASS: data +0x20 __int64 m_int64
50 ; FULL_CLASS: data +0x28 unsigned __int64 m_unsigned_int64
51 ; FULL_CLASS: data +0x30 float m_float
52 ; FULL_CLASS: data +0x38 double m_double
53 ; FULL_CLASS: data +0x40 void (__cdecl *m_pfn_2_args)(int, double)
54 ; FULL_CLASS: }
55
56 ; GLOBALS: ---GLOBALS---
57 ; GLOBALS-DAG: func [{{.*}}] (FPO) unsigned __cdecl fpo_func(unsigned n)
58 ; GLOBALS-DAG: data [{{.*}}] static void* g_global_pointer
59 ; GLOBALS-DAG: data [{{.*}}] static int g_global_int