xref: /llvm-project/lldb/test/Shell/SymbolFile/PDB/class-layout.test (revision 20c4e95b9c03a77c2e5ce5f354114752d380c591)
1*20c4e95bSVladislav DzhidzhoevREQUIRES: target-windows, msvc
287aa9c9eSJonas DevlieghereRUN: %build --compiler=clang-cl --mode=compile --arch=32 --nodefaultlib --output=%T/ClassLayoutTest.cpp.obj %S/Inputs/ClassLayoutTest.cpp
387aa9c9eSJonas DevlieghereRUN: %build --compiler=msvc --mode=link --arch=32 --nodefaultlib --output=%T/ClassLayoutTest.cpp.exe %T/ClassLayoutTest.cpp.obj
487aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck %s
587aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=ENUM %s
687aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=UNION %s
787aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=STRUCT %s
887aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=COMPLEX %s
987aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=LIST %s
1087aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=UNNAMED-STRUCT %s
1187aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=BASE %s
1287aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=FRIEND %s
1387aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=CLASS %s
1487aa9c9eSJonas Devlieghere
1587aa9c9eSJonas DevlieghereCHECK: Module [[MOD:.*]]
1687aa9c9eSJonas DevlieghereCHECK: SymbolFile pdb ([[MOD]])
1787aa9c9eSJonas DevlieghereCHECK: {{^[0-9A-F]+}}:   CompileUnit{{[{]0x[0-9a-f]+[}]}}, language = "c++", file = '{{.*}}\ClassLayoutTest.cpp'
1887aa9c9eSJonas Devlieghere
1987aa9c9eSJonas DevlieghereENUM:  name = "Enum", size = 4,  decl = ClassLayoutTest.cpp:5
2087aa9c9eSJonas DevlieghereENUM-SAME: enum Enum {
2187aa9c9eSJonas DevlieghereENUM:    RED,
2287aa9c9eSJonas DevlieghereENUM:    GREEN,
2387aa9c9eSJonas DevlieghereENUM:    BLUE
2487aa9c9eSJonas DevlieghereENUM:}
2587aa9c9eSJonas Devlieghere
2687aa9c9eSJonas DevlieghereUNION:  name = "Union", size = 4, decl = ClassLayoutTest.cpp:9
2787aa9c9eSJonas DevlieghereUNION-SAME: union Union {
2887aa9c9eSJonas DevlieghereUNION:    short Row;
2987aa9c9eSJonas DevlieghereUNION:    unsigned short Col;
3087aa9c9eSJonas DevlieghereUNION:    int Line : 16;
3187aa9c9eSJonas DevlieghereUNION:    long Table;
3287aa9c9eSJonas DevlieghereUNION:}
3387aa9c9eSJonas Devlieghere
3487aa9c9eSJonas DevlieghereSTRUCT:  name = "Struct", size = 64, decl = ClassLayoutTest.cpp:22
3587aa9c9eSJonas DevlieghereSTRUCT-SAME: struct Struct {
3687aa9c9eSJonas DevlieghereSTRUCT:    bool A;
3787aa9c9eSJonas DevlieghereSTRUCT:    unsigned char UCharVar;
3887aa9c9eSJonas DevlieghereSTRUCT:    unsigned int UIntVar;
3987aa9c9eSJonas DevlieghereSTRUCT:    long long LongLongVar;
4087aa9c9eSJonas DevlieghereSTRUCT:    Enum EnumVar;
4187aa9c9eSJonas DevlieghereSTRUCT:    int array[10];
4287aa9c9eSJonas DevlieghereSTRUCT:}
4387aa9c9eSJonas Devlieghere
4487aa9c9eSJonas DevlieghereCOMPLEX:  name = "Complex", size = 368, decl = ClassLayoutTest.cpp:33
4587aa9c9eSJonas DevlieghereCOMPLEX-SAME: struct Complex {
4687aa9c9eSJonas DevlieghereCOMPLEX:    _List *array[90];
4787aa9c9eSJonas DevlieghereCOMPLEX:    int x;
4887aa9c9eSJonas DevlieghereCOMPLEX:    int a;
4987aa9c9eSJonas DevlieghereCOMPLEX:    float b;
5087aa9c9eSJonas DevlieghereCOMPLEX:}
5187aa9c9eSJonas Devlieghere
5287aa9c9eSJonas DevlieghereLIST:  name = "_List", size = 12, decl = ClassLayoutTest.cpp:45
5387aa9c9eSJonas DevlieghereLIST-SAME: struct _List {
5487aa9c9eSJonas DevlieghereLIST:    _List *current;
5587aa9c9eSJonas DevlieghereLIST:    _List *previous;
5687aa9c9eSJonas DevlieghereLIST:    _List *next;
5787aa9c9eSJonas DevlieghereLIST:}
5887aa9c9eSJonas Devlieghere
5987aa9c9eSJonas DevlieghereUNNAMED-STRUCT:  name = "UnnamedStruct", size = 4, decl = ClassLayoutTest.cpp:52
6087aa9c9eSJonas DevlieghereUNNAMED-STRUCT-SAME: struct UnnamedStruct {
6187aa9c9eSJonas DevlieghereUNNAMED-STRUCT:   int a;
6287aa9c9eSJonas DevlieghereUNNAMED-STRUCT:}
6387aa9c9eSJonas Devlieghere
6487aa9c9eSJonas DevlieghereBASE:  name = "Base", size = 4,  decl = ClassLayoutTest.cpp:59
6587aa9c9eSJonas DevlieghereBASE-SAME: class Base {
6687aa9c9eSJonas DevlieghereBASE:    int a;
6787aa9c9eSJonas DevlieghereBASE:    Base();
6887aa9c9eSJonas DevlieghereBASE:    ~Base();
6987aa9c9eSJonas DevlieghereBASE:    int Get();
7087aa9c9eSJonas DevlieghereBASE:}
7187aa9c9eSJonas Devlieghere
7287aa9c9eSJonas DevlieghereFRIEND:  name = "Friend", size = 1, decl = ClassLayoutTest.cpp:70
7387aa9c9eSJonas DevlieghereFRIEND-SAME: class Friend {
7487aa9c9eSJonas DevlieghereFRIEND:    int f();
7587aa9c9eSJonas DevlieghereFRIEND: }
7687aa9c9eSJonas Devlieghere
7787aa9c9eSJonas DevlieghereCLASS:  name = "Class", size = 88, decl = ClassLayoutTest.cpp:74
7887aa9c9eSJonas DevlieghereCLASS-SAME: class Class : public MemberTest::Base {
7987aa9c9eSJonas DevlieghereCLASS:    static int m_static;
8087aa9c9eSJonas DevlieghereCLASS:    int m_public;
8187aa9c9eSJonas DevlieghereCLASS:    Struct m_struct;
8287aa9c9eSJonas DevlieghereCLASS:    Union m_union;
8387aa9c9eSJonas DevlieghereCLASS:    int m_private;
8487aa9c9eSJonas DevlieghereCLASS:    int m_protected;
8587aa9c9eSJonas DevlieghereCLASS:    Class();
8687aa9c9eSJonas DevlieghereCLASS:    Class(int);
8787aa9c9eSJonas DevlieghereCLASS:    ~Class();
88f4abf28cSStella StamenovaCLASS:    {{(static )?}}int {{.*}}StaticMemberFunc(int, ...);
8987aa9c9eSJonas DevlieghereCLASS:    int Get();
9087aa9c9eSJonas DevlieghereCLASS:    int f(MemberTest::Friend);
9187aa9c9eSJonas DevlieghereCLASS:    bool operator==(const MemberTest::Class &)
9287aa9c9eSJonas DevlieghereCLASS:}
93