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