diff options
Diffstat (limited to 'debuginfo-tests/dexter-tests/asan-deque.cpp')
-rw-r--r-- | debuginfo-tests/dexter-tests/asan-deque.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/debuginfo-tests/dexter-tests/asan-deque.cpp b/debuginfo-tests/dexter-tests/asan-deque.cpp new file mode 100644 index 00000000000..50fe1675048 --- /dev/null +++ b/debuginfo-tests/dexter-tests/asan-deque.cpp @@ -0,0 +1,47 @@ +// REQUIRES: !asan, system-linux, lldb +// Zorg configures the ASAN stage2 bots to not build the asan +// compiler-rt. Only run this test on non-asanified configurations. +// UNSUPPORTED: apple-lldb-pre-1000 + +// XFAIL: lldb +// lldb-8, even outside of dexter, will sometimes trigger an asan fault in +// the debugged process and generally freak out. + +// RUN: %dexter --fail-lt 1.0 -w \ +// RUN: --builder 'clang' --debugger 'lldb' \ +// RUN: --cflags "-O1 -glldb -fsanitize=address -arch x86_64" \ +// RUN: --ldflags="-fsanitize=address" -- %s +#include <deque> + +struct A { + int a; + A(int a) : a(a) {} + A() : a(0) {} +}; + +using deq_t = std::deque<A>; + +template class std::deque<A>; + +static void __attribute__((noinline, optnone)) escape(deq_t &deq) { + static volatile deq_t *sink; + sink = &deq; +} + +int main() { + deq_t deq; + deq.push_back(1234); + deq.push_back(56789); + escape(deq); // DexLabel('first') + while (!deq.empty()) { + auto record = deq.front(); + deq.pop_front(); + escape(deq); // DexLabel('second') + } +} + +// DexExpectWatchValue('deq[0].a', '1234', on_line='first') +// DexExpectWatchValue('deq[1].a', '56789', on_line='first') + +// DexExpectWatchValue('deq[0].a', '56789', '0', on_line='second') + |