OLD | NEW |
1 //===- subzero/runtime/szrt_asan.c - AddressSanitizer Runtime -----*- C -*-===// | 1 //===- subzero/runtime/szrt_asan.c - AddressSanitizer Runtime -----*- C -*-===// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 /// | 9 /// |
10 /// \file | 10 /// \file |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 while (__sync_swap((mutex), 1) != 0) { \ | 43 while (__sync_swap((mutex), 1) != 0) { \ |
44 sched_yield(); \ | 44 sched_yield(); \ |
45 } | 45 } |
46 #define MUTEX_UNLOCK(mutex) (__sync_swap((mutex), 0)) | 46 #define MUTEX_UNLOCK(mutex) (__sync_swap((mutex), 0)) |
47 | 47 |
48 #endif // _POSIX_THREADS | 48 #endif // _POSIX_THREADS |
49 | 49 |
50 #define RZ_SIZE (32) | 50 #define RZ_SIZE (32) |
51 #define SHADOW_SCALE_LOG2 (3) | 51 #define SHADOW_SCALE_LOG2 (3) |
52 #define SHADOW_SCALE ((size_t)1 << SHADOW_SCALE_LOG2) | 52 #define SHADOW_SCALE ((size_t)1 << SHADOW_SCALE_LOG2) |
53 #define DEBUG (1) | 53 #define DEBUG (0) |
54 | 54 |
55 // Assuming 48 bit address space on 64 bit systems | 55 // Assuming 48 bit address space on 64 bit systems |
56 #define SHADOW_LENGTH_64 (1u << (48 - SHADOW_SCALE_LOG2)) | 56 #define SHADOW_LENGTH_64 (1u << (48 - SHADOW_SCALE_LOG2)) |
57 #define SHADOW_LENGTH_32 (1u << (32 - SHADOW_SCALE_LOG2)) | 57 #define SHADOW_LENGTH_32 (1u << (32 - SHADOW_SCALE_LOG2)) |
58 #define WORD_SIZE (sizeof(uint32_t)) | 58 #define WORD_SIZE (sizeof(uint32_t)) |
59 #define IS_32_BIT (sizeof(void *) == WORD_SIZE) | 59 #define IS_32_BIT (sizeof(void *) == WORD_SIZE) |
60 | 60 |
61 #define SHADOW_OFFSET(p) ((uintptr_t)(p) % SHADOW_SCALE) | 61 #define SHADOW_OFFSET(p) ((uintptr_t)(p) % SHADOW_SCALE) |
62 #define IS_SHADOW_ALIGNED(p) (SHADOW_OFFSET(p) == 0) | 62 #define IS_SHADOW_ALIGNED(p) (SHADOW_OFFSET(p) == 0) |
63 | 63 |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
305 void __asan_unpoison(char *ptr, int size) { | 305 void __asan_unpoison(char *ptr, int size) { |
306 char *end = ptr + size; | 306 char *end = ptr + size; |
307 assert(IS_SHADOW_ALIGNED(end)); | 307 assert(IS_SHADOW_ALIGNED(end)); |
308 DUMP("unpoison %d bytes at %p: %p - %p\n", size, ptr, MEM2SHADOW(ptr), | 308 DUMP("unpoison %d bytes at %p: %p - %p\n", size, ptr, MEM2SHADOW(ptr), |
309 MEM2SHADOW(end)); | 309 MEM2SHADOW(end)); |
310 *(char *)MEM2SHADOW(ptr) = 0; | 310 *(char *)MEM2SHADOW(ptr) = 0; |
311 ptr += SHADOW_OFFSET(size); | 311 ptr += SHADOW_OFFSET(size); |
312 assert(IS_SHADOW_ALIGNED(ptr)); | 312 assert(IS_SHADOW_ALIGNED(ptr)); |
313 memset(MEM2SHADOW(ptr), 0, (end - ptr) >> SHADOW_SCALE_LOG2); | 313 memset(MEM2SHADOW(ptr), 0, (end - ptr) >> SHADOW_SCALE_LOG2); |
314 } | 314 } |
OLD | NEW |