[llvm-dev] [PATCH compiler-rt 5/5] asan: extend swapcontext_test

Paweł Dziepak via llvm-dev
2016-02-02T14:42:43Z

This patch extends swapcontext_test to verify that the shadow memory
of the stack is properly cleared after throw.
---
 test/asan/TestCases/Linux/swapcontext_test.cc | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/test/asan/TestCases/Linux/swapcontext_test.cc
b/test/asan/TestCases/Linux/swapcontext_test.cc
index 86ed593..279566c 100644
--- a/test/asan/TestCases/Linux/swapcontext_test.cc
+++ b/test/asan/TestCases/Linux/swapcontext_test.cc
@@ -17,16 +17,31 @@ ucontext_t child_context;

 const int kStackSize = 1 << 20;

+volatile int force_write;
+
 __attribute__((noinline))
 void Throw() {
+  char buf[1024];
+  for (int i = 0; i < 1024; i++) {
+    buf[i] = force_write;
+  }
   throw 1;
 }

 __attribute__((noinline))
+void Func() {
+  int buf[4 * 1024];
+  for (int i = 0; i < 4 * 1024; i++) {
+    buf[i] = force_write;
+  }
+}
+
+__attribute__((noinline))
 void ThrowAndCatch() {
   try {
     Throw();
   } catch(int a) {
+    Func();
     printf("ThrowAndCatch: %d\n", a);
   }
 }
--
2.5.0