]>
git.proxmox.com Git - rustc.git/blob - 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
8 int main(int argc
, char **argv
) {
10 void *Map
= mmap((void *)0x0000001600000000ULL
, 0x1000, PROT_READ
,
11 MAP_ANON
|MAP_PRIVATE
|MAP_FIXED
, -1, 0);
13 void *Map
= mmap((void *)0x0000016000000000ULL
, 0x1000, PROT_READ
,
14 MAP_ANON
|MAP_PRIVATE
|MAP_FIXED
, -1, 0);
16 if (Map
== (void *)-1)
17 fprintf(stderr
, "map failed\n");
19 fprintf(stderr
, "mapped %p\n", Map
);
21 Map
= mmap((void *)0x0000001600000000ULL
, 0x1000, PROT_READ
,
22 MAP_ANON
|MAP_PRIVATE
, -1, 0);
24 Map
= mmap((void *)0x0000016000000000ULL
, 0x1000, PROT_READ
,
25 MAP_ANON
|MAP_PRIVATE
, -1, 0);
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