blob: 789fbbe1b1a552d7ae440668f4aa4f0a6265f24d [file] [log] [blame] [edit]
# 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: }