104 lines · plain
1REQUIRES: target-windows, msvc2RUN: mkdir -p %t.dir3RUN: %build --compiler=clang-cl --mode=compile --arch=32 --nodefaultlib --output=%t.dir/ClassLayoutTest.cpp.obj %S/Inputs/ClassLayoutTest.cpp4RUN: %build --compiler=msvc --mode=link --arch=32 --nodefaultlib --output=%t.dir/ClassLayoutTest.cpp.exe %t.dir/ClassLayoutTest.cpp.obj5RUN: lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck %s6RUN: lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=ENUM %s7RUN: lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=UNION %s8RUN: lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=STRUCT %s9RUN: lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=COMPLEX %s10RUN: lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=LIST %s11RUN: lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=UNNAMED-STRUCT %s12RUN: lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=BASE %s13RUN: lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=FRIEND %s14RUN: lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=CLASS %s15RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck %s16RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=ENUM %s17RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=UNION %s18RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=STRUCT %s19RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=COMPLEX %s20RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=LIST %s21RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=UNNAMED-STRUCT %s22RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=BASE %s23RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=FRIEND %s24RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb-test symbols %t.dir/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=CLASS %s25 26CHECK: Module [[MOD:.*]]27CHECK: SymbolFile {{(native-)?}}pdb ([[MOD]])28CHECK: {{^[0-9A-F]+}}: CompileUnit{{[{]0x[0-9a-f]+[}]}}, language = "c++", file = '{{.*}}\ClassLayoutTest.cpp'29 30ENUM: name = "Enum", size = 4, decl = ClassLayoutTest.cpp:531ENUM-SAME: enum Enum {32ENUM: RED,33ENUM: GREEN,34ENUM: BLUE35ENUM:}36 37UNION: name = "Union", size = 4, decl = ClassLayoutTest.cpp:938UNION-SAME: union Union {39UNION: short Row;40UNION: unsigned short Col;41UNION: int Line : 16;42UNION: long Table;43UNION:}44 45STRUCT: name = "Struct", size = 64, decl = ClassLayoutTest.cpp:2246STRUCT-SAME: struct Struct {47STRUCT: bool A;48STRUCT: unsigned char UCharVar;49STRUCT: unsigned int UIntVar;50STRUCT: long long LongLongVar;51STRUCT: Enum EnumVar;52STRUCT: int array[10];53STRUCT:}54 55COMPLEX: name = "Complex", size = 368, decl = ClassLayoutTest.cpp:3356COMPLEX-SAME: struct Complex {57COMPLEX: _List *array[90];58COMPLEX: int x;59COMPLEX: int a;60COMPLEX: float b;61COMPLEX:}62 63LIST: name = "_List", size = 12, decl = ClassLayoutTest.cpp:4564LIST-SAME: struct _List {65LIST: _List *current;66LIST: _List *previous;67LIST: _List *next;68LIST:}69 70UNNAMED-STRUCT: name = "UnnamedStruct", size = 4, decl = ClassLayoutTest.cpp:5271UNNAMED-STRUCT-SAME: struct UnnamedStruct {72UNNAMED-STRUCT: int a;73UNNAMED-STRUCT:}74 75BASE: name = "Base", size = 4, decl = ClassLayoutTest.cpp:5976BASE-SAME: class Base {77BASE: int a;78BASE: Base();79BASE: ~Base();80BASE: int Get();81BASE:}82 83FRIEND: name = "Friend", size = 1, decl = ClassLayoutTest.cpp:7084FRIEND-SAME: class Friend {85FRIEND: int f();86FRIEND: }87 88CLASS: name = "Class", size = 88, decl = ClassLayoutTest.cpp:7489CLASS-SAME: class Class : public MemberTest::Base {90CLASS: static int m_static;91CLASS: int m_public;92CLASS: Struct m_struct;93CLASS: Union m_union;94CLASS: int m_private;95CLASS: int m_protected;96CLASS: Class();97CLASS: Class(int);98CLASS: ~Class();99CLASS: {{(static )?}}int {{.*}}StaticMemberFunc(int, ...);100CLASS: int Get();101CLASS: int f(MemberTest::Friend);102CLASS: bool operator==(const MemberTest::Class &)103CLASS:}104