summaryrefslogtreecommitdiffstats
path: root/debuginfo-tests/dexter-tests/asan-deque.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'debuginfo-tests/dexter-tests/asan-deque.cpp')
-rw-r--r--debuginfo-tests/dexter-tests/asan-deque.cpp47
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')
+
OpenPOWER on IntegriCloud