63 lines
1.3 KiB
Plaintext
63 lines
1.3 KiB
Plaintext
# Test that LLDB displays indirect virtual bases correctly
|
|
|
|
# REQUIRES: lld, x86, system-windows
|
|
|
|
# RUN: split-file %s %t
|
|
|
|
# RUN: %clang_cl_host -Z7 -c /GS- /Fo%t.cv.obj -- %t/main.cpp
|
|
# RUN: %clang_cl_host -Z7 -gdwarf -c /GS- /Fo%t.dwarf.obj -- %t/main.cpp
|
|
|
|
# RUN: lld-link -debug -nodefaultlib -entry:main %t.cv.obj -out:%t.cv.exe
|
|
# RUN: lld-link -debug -nodefaultlib -entry:main %t.dwarf.obj -out:%t.dwarf.exe
|
|
|
|
# RUN: %lldb -f %t.cv.exe -s %t/commands.input 2>&1 | FileCheck %s
|
|
# RUN: %lldb -f %t.dwarf.exe -s %t/commands.input 2>&1 | FileCheck %s
|
|
|
|
#--- main.cpp
|
|
|
|
struct VBase1 {
|
|
short member = 1;
|
|
};
|
|
struct VBase2 {
|
|
short member = 2;
|
|
};
|
|
struct Base1 {
|
|
short member = 3;
|
|
};
|
|
struct Base2 {
|
|
short member = 4;
|
|
};
|
|
|
|
struct User : public virtual VBase1, public virtual VBase2 {
|
|
short member = 5;
|
|
};
|
|
|
|
struct UserUser : public Base1, public User, public Base2 {
|
|
short member = 6;
|
|
};
|
|
|
|
int main() {
|
|
UserUser useruser;
|
|
|
|
return 0; // break here
|
|
}
|
|
|
|
#--- commands.input
|
|
|
|
br set -p "break here"
|
|
r
|
|
v useruser
|
|
exit
|
|
|
|
# CHECK: (lldb) v useruser
|
|
# CHECK-NEXT: (UserUser) useruser = {
|
|
# CHECK-NEXT: Base1 = (member = 3)
|
|
# CHECK-NEXT: User = {
|
|
# CHECK-NEXT: VBase1 = (member = 1)
|
|
# CHECK-NEXT: VBase2 = (member = 2)
|
|
# CHECK-NEXT: member = 5
|
|
# CHECK-NEXT: }
|
|
# CHECK-NEXT: Base2 = (member = 4)
|
|
# CHECK-NEXT: member = 6
|
|
# CHECK-NEXT: }
|