forked from OSchip/llvm-project
45 lines
1.7 KiB
C
45 lines
1.7 KiB
C
// RUN: %clang_esan_frag -O0 %s -o %t 2>&1
|
|
// RUN: %env_esan_opts=verbosity=1 %run %t 2>&1 | FileCheck --check-prefix=%arch --check-prefix=CHECK %s
|
|
|
|
#include <unistd.h>
|
|
#include <sys/mman.h>
|
|
#include <stdio.h>
|
|
|
|
int main(int argc, char **argv) {
|
|
#if defined(__mips64)
|
|
void *Map = mmap((void *)0x0000001600000000ULL, 0x1000, PROT_READ,
|
|
MAP_ANON|MAP_PRIVATE|MAP_FIXED, -1, 0);
|
|
#else
|
|
void *Map = mmap((void *)0x0000016000000000ULL, 0x1000, PROT_READ,
|
|
MAP_ANON|MAP_PRIVATE|MAP_FIXED, -1, 0);
|
|
#endif
|
|
if (Map == (void *)-1)
|
|
fprintf(stderr, "map failed\n");
|
|
else
|
|
fprintf(stderr, "mapped %p\n", Map);
|
|
#if defined(__mips64)
|
|
Map = mmap((void *)0x0000001600000000ULL, 0x1000, PROT_READ,
|
|
MAP_ANON|MAP_PRIVATE, -1, 0);
|
|
#else
|
|
Map = mmap((void *)0x0000016000000000ULL, 0x1000, PROT_READ,
|
|
MAP_ANON|MAP_PRIVATE, -1, 0);
|
|
#endif
|
|
fprintf(stderr, "mapped %p\n", Map);
|
|
// CHECK: in esan::initializeLibrary
|
|
// (There can be a re-exec for stack limit here.)
|
|
// x86_64: Shadow scale=2 offset=0x440000000000
|
|
// x86_64-NEXT: Shadow #0: [110000000000-114000000000) (256GB)
|
|
// x86_64-NEXT: Shadow #1: [124000000000-12c000000000) (512GB)
|
|
// x86_64-NEXT: Shadow #2: [148000000000-150000000000) (512GB)
|
|
// mips64: Shadow scale=2 offset=0x4400000000
|
|
// mips64-NEXT: Shadow #0: [1140000000-1180000000) (1GB)
|
|
// mips64-NEXT: Shadow #1: [1380000000-13c0000000) (1GB)
|
|
// mips64-NEXT: Shadow #2: [14c0000000-1500000000) (1GB)
|
|
// CHECK-NEXT: mmap conflict: {{.*}}
|
|
// CHECK-NEXT: map failed
|
|
// CHECK-NEXT: mmap conflict: {{.*}}
|
|
// CHECK-NEXT: mapped {{.*}}
|
|
// CHECK-NEXT: in esan::finalizeLibrary
|
|
return 0;
|
|
}
|