[asan] run-time tests for adaptive redzones
authorKostya Serebryany <kcc@google.com>
Thu, 24 Jan 2013 10:36:11 +0000 (10:36 +0000)
committerKostya Serebryany <kcc@google.com>
Thu, 24 Jan 2013 10:36:11 +0000 (10:36 +0000)
llvm-svn: 173336

compiler-rt/lib/asan/tests/asan_globals_test.cc
compiler-rt/lib/asan/tests/asan_noinst_test.cc
compiler-rt/lib/asan/tests/asan_test_utils.h

index 15e6a9a47b1d671716d0d419ce1cfb6a562cd45d..5042ef07378d3d5f093af7eeb5926544a730ec67 100644 (file)
@@ -30,6 +30,9 @@ char glob14[14];
 char glob15[15];
 char glob16[16];
 char glob17[17];
+char glob1000[1000];
+char glob10000[10000];
+char glob100000[100000];
 
 static char static10[10];
 
index 60835346283e5ec9d1a75010d1f76e68f959b649..b7b4a4bab899d9607fe87c7e7d5b9e926e202863 100644 (file)
@@ -651,6 +651,9 @@ TEST(AddressSanitizerInterface, GlobalRedzones) {
   GOOD_ACCESS(glob15, 15 - 1);
   GOOD_ACCESS(glob16, 16 - 1);
   GOOD_ACCESS(glob17, 17 - 1);
+  GOOD_ACCESS(glob1000, 1000 - 1);
+  GOOD_ACCESS(glob10000, 10000 - 1);
+  GOOD_ACCESS(glob100000, 100000 - 1);
 
   BAD_ACCESS(glob1, 1);
   BAD_ACCESS(glob2, 2);
@@ -669,6 +672,12 @@ TEST(AddressSanitizerInterface, GlobalRedzones) {
   BAD_ACCESS(glob15, 15);
   BAD_ACCESS(glob16, 16);
   BAD_ACCESS(glob17, 17);
+  BAD_ACCESS(glob1000, 1000);
+  BAD_ACCESS(glob1000, 1100);  // Redzone is at least 101 bytes.
+  BAD_ACCESS(glob10000, 10000);
+  BAD_ACCESS(glob10000, 11000);  // Redzone is at least 1001 bytes.
+  BAD_ACCESS(glob100000, 100000);
+  BAD_ACCESS(glob100000, 110000);  // Redzone is at least 10001 bytes.
 }
 
 // Make sure that each aligned block of size "2^granularity" doesn't have
index 31d35646923423118d9ccef720ed0e9679c6d9ea..824f7e322b6619a48638c5bb6eeb7bf8049e1cca 100644 (file)
@@ -103,6 +103,9 @@ extern char glob14[14];
 extern char glob15[15];
 extern char glob16[16];
 extern char glob17[17];
+extern char glob1000[1000];
+extern char glob10000[10000];
+extern char glob100000[100000];
 extern int GlobalsTest(int x);
 
 #endif  // ASAN_TEST_UTILS_H