diff options
| author | Jeremy Morse <jeremy.morse@sony.com> | 2019-10-31 16:51:53 +0000 |
|---|---|---|
| committer | Jeremy Morse <jeremy.morse@sony.com> | 2019-10-31 16:51:53 +0000 |
| commit | 984fad243d179564df31c5f9531a52442e24581a (patch) | |
| tree | aba85a27f1596d456079f6f5eb69e09408730b49 /debuginfo-tests/dexter-tests/asan-deque.cpp | |
| parent | 34f3c0fc44a5fd8a0f9186002749336e398837cf (diff) | |
| download | bcm5719-llvm-984fad243d179564df31c5f9531a52442e24581a.tar.gz bcm5719-llvm-984fad243d179564df31c5f9531a52442e24581a.zip | |
Reapply "Import Dexter to debuginfo-tests""
This reverts commit cb935f345683194e42e6e883d79c5a16479acd74.
Discussion in D68708 advises that green dragon is being briskly
refurbished, and it's good to have this patch up testing it.
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') + |

