]> git.proxmox.com Git - rustc.git/blob - src/compiler-rt/test/esan/TestCases/mmap-shadow-conflict.c
New upstream version 1.19.0+dfsg3
[rustc.git] / src / compiler-rt / test / esan / TestCases / mmap-shadow-conflict.c
1 // RUN: %clang_esan_frag -O0 %s -o %t 2>&1
2 // RUN: %env_esan_opts=verbosity=1 %run %t 2>&1 | FileCheck --check-prefix=%arch --check-prefix=CHECK %s
3
4 #include <unistd.h>
5 #include <sys/mman.h>
6 #include <stdio.h>
7
8 int main(int argc, char **argv) {
9 #if defined(__mips64)
10 void *Map = mmap((void *)0x0000001600000000ULL, 0x1000, PROT_READ,
11 MAP_ANON|MAP_PRIVATE|MAP_FIXED, -1, 0);
12 #else
13 void *Map = mmap((void *)0x0000016000000000ULL, 0x1000, PROT_READ,
14 MAP_ANON|MAP_PRIVATE|MAP_FIXED, -1, 0);
15 #endif
16 if (Map == (void *)-1)
17 fprintf(stderr, "map failed\n");
18 else
19 fprintf(stderr, "mapped %p\n", Map);
20 #if defined(__mips64)
21 Map = mmap((void *)0x0000001600000000ULL, 0x1000, PROT_READ,
22 MAP_ANON|MAP_PRIVATE, -1, 0);
23 #else
24 Map = mmap((void *)0x0000016000000000ULL, 0x1000, PROT_READ,
25 MAP_ANON|MAP_PRIVATE, -1, 0);
26 #endif
27 fprintf(stderr, "mapped %p\n", Map);
28 // CHECK: in esan::initializeLibrary
29 // (There can be a re-exec for stack limit here.)
30 // x86_64: Shadow scale=2 offset=0x440000000000
31 // x86_64-NEXT: Shadow #0: [110000000000-114000000000) (256GB)
32 // x86_64-NEXT: Shadow #1: [124000000000-12c000000000) (512GB)
33 // x86_64-NEXT: Shadow #2: [148000000000-150000000000) (512GB)
34 // mips64: Shadow scale=2 offset=0x4400000000
35 // mips64-NEXT: Shadow #0: [1140000000-1180000000) (1GB)
36 // mips64-NEXT: Shadow #1: [1380000000-13c0000000) (1GB)
37 // mips64-NEXT: Shadow #2: [14c0000000-1500000000) (1GB)
38 // CHECK-NEXT: mmap conflict: {{.*}}
39 // CHECK-NEXT: map failed
40 // CHECK-NEXT: mmap conflict: {{.*}}
41 // CHECK-NEXT: mapped {{.*}}
42 // CHECK-NEXT: in esan::finalizeLibrary
43 return 0;
44 }