
Tests in the `cross-project-tests/debuginfo-tests/llgdb-tests` directory run gdb on non-darwin platforms. gdb versions less than 10.1 cannot parse the DWARF v5 emitted by clang, and DWARF v5 is now the default, so these tests fail on Linux with gdb versions less than 10.1. This patch lets us XFAIL the tests under these conditions. Add `gdb-clang-incompatibility` to the `available_features` in `cross-project-tests/lit.cfg.py` when clang's default DWARF version is 5 or greater and the gdb (if found) version is less than 10.1. Discourse discussion: https://llvm.discourse.group/t/gdb-10-1-cant-read-clangs-dwarf-v5/6035 Reviewed By: jmorse Differential Revision: https://reviews.llvm.org/D118468
73 lines
1.0 KiB
C++
73 lines
1.0 KiB
C++
// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
|
|
// RUN: %clangxx %target_itanium_abi_host_triple %t.o -o %t.out
|
|
// RUN: %test_debuginfo %s %t.out
|
|
// XFAIL: !system-darwin && gdb-clang-incompatibility
|
|
// Radar 8775834
|
|
// DEBUGGER: break 63
|
|
// DEBUGGER: r
|
|
// DEBUGGER: p a
|
|
// CHECK: ${{[0-9]+}} =
|
|
// LLDB does not print artificial members.
|
|
// CHECK: {{(_vptr\$A =)?.*}}m_int = 12
|
|
|
|
class A
|
|
{
|
|
public:
|
|
A (int i=0);
|
|
A (const A& rhs);
|
|
const A&
|
|
operator= (const A& rhs);
|
|
virtual ~A() {}
|
|
|
|
int get_int();
|
|
|
|
protected:
|
|
int m_int;
|
|
};
|
|
|
|
A::A (int i) :
|
|
m_int(i)
|
|
{
|
|
}
|
|
|
|
A::A (const A& rhs) :
|
|
m_int (rhs.m_int)
|
|
{
|
|
}
|
|
|
|
const A &
|
|
A::operator =(const A& rhs)
|
|
{
|
|
m_int = rhs.m_int;
|
|
return *this;
|
|
}
|
|
|
|
int A::get_int()
|
|
{
|
|
return m_int;
|
|
}
|
|
|
|
class B
|
|
{
|
|
public:
|
|
B () {}
|
|
|
|
A AInstance();
|
|
};
|
|
|
|
A
|
|
B::AInstance()
|
|
{
|
|
A a(12);
|
|
return a;
|
|
}
|
|
|
|
int main (int argc, char const *argv[])
|
|
{
|
|
B b;
|
|
int return_val = b.AInstance().get_int();
|
|
|
|
A a(b.AInstance());
|
|
return return_val;
|
|
}
|