]>
git.proxmox.com Git - rustc.git/blob - src/compiler-rt/test/tsan/map32bit.cc
1 // RUN: %clangxx_tsan -O1 %s -o %t && %deflake %run %t 2>&1 | FileCheck %s
8 // https://github.com/google/sanitizers/issues/412
10 // MAP_32BIT flag for mmap is supported only for x86_64.
15 // MAP_32BIT doesn't exist on OS X.
16 // UNSUPPORTED: darwin
18 void *Thread(void *ptr
) {
20 barrier_wait(&barrier
);
25 barrier_init(&barrier
, 2);
26 void *ptr
= mmap(0, 128 << 10, PROT_READ
|PROT_WRITE
,
27 MAP_32BIT
|MAP_PRIVATE
|MAP_ANONYMOUS
, -1, 0);
28 fprintf(stderr
, "ptr=%p\n", ptr
);
29 if (ptr
== MAP_FAILED
) {
30 fprintf(stderr
, "mmap failed: %d\n", errno
);
33 if ((uintptr_t)ptr
>= (1ull << 32)) {
34 fprintf(stderr
, "ptr is too high\n");
38 pthread_create(&t
, 0, Thread
, ptr
);
39 barrier_wait(&barrier
);
42 munmap(ptr
, 128 << 10);
43 fprintf(stderr
, "DONE\n");
46 // CHECK: WARNING: ThreadSanitizer: data race