The pdb lldb tests do not work correctly with both the VS2019 and VS2017 toolsets at the moment. This change updates several of the tests to work with both toolsets. Unfortunately, this makes the tests suboptimal for both toolsets, but we can update them to be better for VS2019 once we officially drop VS2017. This change is meant to bridge the gap until the update happens, so that the buildbots can work with either toolset. Differential Revision: https://reviews.llvm.org/D115482
93 lines
3.2 KiB
Plaintext
93 lines
3.2 KiB
Plaintext
REQUIRES: system-windows, msvc
|
|
RUN: %build --compiler=clang-cl --mode=compile --arch=32 --nodefaultlib --output=%T/ClassLayoutTest.cpp.obj %S/Inputs/ClassLayoutTest.cpp
|
|
RUN: %build --compiler=msvc --mode=link --arch=32 --nodefaultlib --output=%T/ClassLayoutTest.cpp.exe %T/ClassLayoutTest.cpp.obj
|
|
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck %s
|
|
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=ENUM %s
|
|
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=UNION %s
|
|
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=STRUCT %s
|
|
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=COMPLEX %s
|
|
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=LIST %s
|
|
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=UNNAMED-STRUCT %s
|
|
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=BASE %s
|
|
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=FRIEND %s
|
|
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=CLASS %s
|
|
|
|
CHECK: Module [[MOD:.*]]
|
|
CHECK: SymbolFile pdb ([[MOD]])
|
|
CHECK: {{^[0-9A-F]+}}: CompileUnit{{[{]0x[0-9a-f]+[}]}}, language = "c++", file = '{{.*}}\ClassLayoutTest.cpp'
|
|
|
|
ENUM: name = "Enum", size = 4, decl = ClassLayoutTest.cpp:5
|
|
ENUM-SAME: enum Enum {
|
|
ENUM: RED,
|
|
ENUM: GREEN,
|
|
ENUM: BLUE
|
|
ENUM:}
|
|
|
|
UNION: name = "Union", size = 4, decl = ClassLayoutTest.cpp:9
|
|
UNION-SAME: union Union {
|
|
UNION: short Row;
|
|
UNION: unsigned short Col;
|
|
UNION: int Line : 16;
|
|
UNION: long Table;
|
|
UNION:}
|
|
|
|
STRUCT: name = "Struct", size = 64, decl = ClassLayoutTest.cpp:22
|
|
STRUCT-SAME: struct Struct {
|
|
STRUCT: bool A;
|
|
STRUCT: unsigned char UCharVar;
|
|
STRUCT: unsigned int UIntVar;
|
|
STRUCT: long long LongLongVar;
|
|
STRUCT: Enum EnumVar;
|
|
STRUCT: int array[10];
|
|
STRUCT:}
|
|
|
|
COMPLEX: name = "Complex", size = 368, decl = ClassLayoutTest.cpp:33
|
|
COMPLEX-SAME: struct Complex {
|
|
COMPLEX: _List *array[90];
|
|
COMPLEX: int x;
|
|
COMPLEX: int a;
|
|
COMPLEX: float b;
|
|
COMPLEX:}
|
|
|
|
LIST: name = "_List", size = 12, decl = ClassLayoutTest.cpp:45
|
|
LIST-SAME: struct _List {
|
|
LIST: _List *current;
|
|
LIST: _List *previous;
|
|
LIST: _List *next;
|
|
LIST:}
|
|
|
|
UNNAMED-STRUCT: name = "UnnamedStruct", size = 4, decl = ClassLayoutTest.cpp:52
|
|
UNNAMED-STRUCT-SAME: struct UnnamedStruct {
|
|
UNNAMED-STRUCT: int a;
|
|
UNNAMED-STRUCT:}
|
|
|
|
BASE: name = "Base", size = 4, decl = ClassLayoutTest.cpp:59
|
|
BASE-SAME: class Base {
|
|
BASE: int a;
|
|
BASE: Base();
|
|
BASE: ~Base();
|
|
BASE: int Get();
|
|
BASE:}
|
|
|
|
FRIEND: name = "Friend", size = 1, decl = ClassLayoutTest.cpp:70
|
|
FRIEND-SAME: class Friend {
|
|
FRIEND: int f();
|
|
FRIEND: }
|
|
|
|
CLASS: name = "Class", size = 88, decl = ClassLayoutTest.cpp:74
|
|
CLASS-SAME: class Class : public MemberTest::Base {
|
|
CLASS: static int m_static;
|
|
CLASS: int m_public;
|
|
CLASS: Struct m_struct;
|
|
CLASS: Union m_union;
|
|
CLASS: int m_private;
|
|
CLASS: int m_protected;
|
|
CLASS: Class();
|
|
CLASS: Class(int);
|
|
CLASS: ~Class();
|
|
CLASS: {{(static )?}}int {{.*}}StaticMemberFunc(int, ...);
|
|
CLASS: int Get();
|
|
CLASS: int f(MemberTest::Friend);
|
|
CLASS: bool operator==(const MemberTest::Class &)
|
|
CLASS:}
|