summaryrefslogtreecommitdiff
path: root/test/lsan/TestCases/ignore_object_errors.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test/lsan/TestCases/ignore_object_errors.cc')
-rw-r--r--test/lsan/TestCases/ignore_object_errors.cc22
1 files changed, 22 insertions, 0 deletions
diff --git a/test/lsan/TestCases/ignore_object_errors.cc b/test/lsan/TestCases/ignore_object_errors.cc
new file mode 100644
index 0000000000000..39b9b0288bb3d
--- /dev/null
+++ b/test/lsan/TestCases/ignore_object_errors.cc
@@ -0,0 +1,22 @@
+// Test for incorrect use of __lsan_ignore_object().
+// RUN: LSAN_BASE="verbosity=2"
+// RUN: %clangxx_lsan %s -o %t
+// RUN: LSAN_OPTIONS=$LSAN_BASE %run %t 2>&1 | FileCheck %s
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "sanitizer/lsan_interface.h"
+
+int main() {
+ void *p = malloc(1337);
+ fprintf(stderr, "Test alloc: %p.\n", p);
+ __lsan_ignore_object(p);
+ __lsan_ignore_object(p);
+ free(p);
+ __lsan_ignore_object(p);
+ return 0;
+}
+// CHECK: Test alloc: [[ADDR:.*]].
+// CHECK: heap object at [[ADDR]] is already being ignored
+// CHECK: no heap object found at [[ADDR]]