summaryrefslogtreecommitdiff
path: root/test/asan/TestCases/contiguous_container.cc
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2014-05-06 14:41:01 +0000
committerKostya Serebryany <kcc@google.com>2014-05-06 14:41:01 +0000
commit056fa2293af34285767cbd118596f0accfd8cd5b (patch)
treef8161b5afa3525d1a62d1f7d66288e6b791cd1f2 /test/asan/TestCases/contiguous_container.cc
parent9d7ac84bcf38574ad935b45f0ec41c18f87818f5 (diff)
[asan] introduce interface function __sanitizer_verify_contiguous_container to verify annotations in vector-like containers
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@208092 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/asan/TestCases/contiguous_container.cc')
-rw-r--r--test/asan/TestCases/contiguous_container.cc12
1 files changed, 6 insertions, 6 deletions
diff --git a/test/asan/TestCases/contiguous_container.cc b/test/asan/TestCases/contiguous_container.cc
index e02f0e5eb..8d8c8d049 100644
--- a/test/asan/TestCases/contiguous_container.cc
+++ b/test/asan/TestCases/contiguous_container.cc
@@ -6,12 +6,7 @@
#include <stdio.h>
#include <string.h>
#include <assert.h>
-
-extern "C" {
-void __sanitizer_annotate_contiguous_container(void *beg, void *end,
- void *old_mid, void *new_mid);
-bool __asan_address_is_poisoned(void *addr);
-} // extern "C"
+#include <sanitizer/asan_interface.h>
void TestContainer(size_t capacity) {
char *beg = new char[capacity];
@@ -30,6 +25,11 @@ void TestContainer(size_t capacity) {
assert(!__asan_address_is_poisoned(beg + idx));
for (size_t idx = size; idx < capacity; idx++)
assert(__asan_address_is_poisoned(beg + idx));
+ assert(__sanitizer_verify_contiguous_container(beg, mid, end));
+ if (mid != beg)
+ assert(!__sanitizer_verify_contiguous_container(beg, mid - 1, end));
+ if (mid != end)
+ assert(!__sanitizer_verify_contiguous_container(beg, mid + 1, end));
}
// Don't forget to unpoison the whole thing before destroing/reallocating.