summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/esan/TestCases/mmap-shadow-conflict.c29
-rw-r--r--test/esan/TestCases/verbose-simple.c4
2 files changed, 33 insertions, 0 deletions
diff --git a/test/esan/TestCases/mmap-shadow-conflict.c b/test/esan/TestCases/mmap-shadow-conflict.c
new file mode 100644
index 000000000..9790975b1
--- /dev/null
+++ b/test/esan/TestCases/mmap-shadow-conflict.c
@@ -0,0 +1,29 @@
+// RUN: %clang_esan_frag -O0 %s -o %t 2>&1
+// RUN: %env_esan_opts=verbosity=1 %run %t 2>&1 | FileCheck %s
+
+#include <unistd.h>
+#include <sys/mman.h>
+#include <stdio.h>
+
+int main(int argc, char **argv) {
+ void *Map = mmap((void *)0x0000016000000000ULL, 0x1000, PROT_READ,
+ MAP_ANON|MAP_PRIVATE|MAP_FIXED, -1, 0);
+ if (Map == (void *)-1)
+ fprintf(stderr, "map failed\n");
+ else
+ fprintf(stderr, "mapped %p\n", Map);
+ Map = mmap((void *)0x0000016000000000ULL, 0x1000, PROT_READ,
+ MAP_ANON|MAP_PRIVATE, -1, 0);
+ fprintf(stderr, "mapped %p\n", Map);
+ // CHECK: in esan::initializeLibrary
+ // CHECK-NEXT: Shadow scale=2 offset=0x440000000000
+ // CHECK-NEXT: Shadow #0: [110000000000-114000000000) (256GB)
+ // CHECK-NEXT: Shadow #1: [124000000000-12c000000000) (512GB)
+ // CHECK-NEXT: Shadow #2: [14c000000000-150000000000) (256GB)
+ // CHECK-NEXT: mmap conflict: {{.*}}
+ // CHECK-NEXT: map failed
+ // CHECK-NEXT: mmap conflict: {{.*}}
+ // CHECK-NEXT: mapped {{.*}}
+ // CHECK-NEXT: in esan::finalizeLibrary
+ return 0;
+}
diff --git a/test/esan/TestCases/verbose-simple.c b/test/esan/TestCases/verbose-simple.c
index 76869b6af..d8e5bced6 100644
--- a/test/esan/TestCases/verbose-simple.c
+++ b/test/esan/TestCases/verbose-simple.c
@@ -3,6 +3,10 @@
int main(int argc, char **argv) {
// CHECK: in esan::initializeLibrary
+ // CHECK-NEXT: Shadow scale=2 offset=0x440000000000
+ // CHECK-NEXT: Shadow #0: [110000000000-114000000000) (256GB)
+ // CHECK-NEXT: Shadow #1: [124000000000-12c000000000) (512GB)
+ // CHECK-NEXT: Shadow #2: [14c000000000-150000000000) (256GB)
// CHECK-NEXT: in esan::finalizeLibrary
// CHECK-NEXT: {{.*}}EfficiencySanitizer is not finished: nothing yet to report
return 0;