]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/compiler-rt/lib/asan/asan_mapping_myriad.h
Merge clang 7.0.1 and several follow-up changes
[FreeBSD/FreeBSD.git] / contrib / compiler-rt / lib / asan / asan_mapping_myriad.h
1 //===-- asan_mapping_myriad.h -----------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file is a part of AddressSanitizer, an address sanity checker.
11 //
12 // Myriad-specific definitions for ASan memory mapping.
13 //===----------------------------------------------------------------------===//
14 #ifndef ASAN_MAPPING_MYRIAD_H
15 #define ASAN_MAPPING_MYRIAD_H
16
17 #define RAW_ADDR(mem) ((mem) & ~kMyriadCacheBitMask32)
18 #define MEM_TO_SHADOW(mem) \
19   (((RAW_ADDR(mem) - kLowMemBeg) >> SHADOW_SCALE) + (SHADOW_OFFSET))
20
21 #define kLowMemBeg     kMyriadMemoryOffset32
22 #define kLowMemEnd     (SHADOW_OFFSET - 1)
23
24 #define kLowShadowBeg  SHADOW_OFFSET
25 #define kLowShadowEnd  MEM_TO_SHADOW(kLowMemEnd)
26
27 #define kHighMemBeg    0
28
29 #define kHighShadowBeg 0
30 #define kHighShadowEnd 0
31
32 #define kMidShadowBeg  0
33 #define kMidShadowEnd  0
34
35 #define kShadowGapBeg  (kLowShadowEnd + 1)
36 #define kShadowGapEnd  kMyriadMemoryEnd32
37
38 #define kShadowGap2Beg 0
39 #define kShadowGap2End 0
40
41 #define kShadowGap3Beg 0
42 #define kShadowGap3End 0
43
44 namespace __asan {
45
46 static inline bool AddrIsInLowMem(uptr a) {
47   PROFILE_ASAN_MAPPING();
48   a = RAW_ADDR(a);
49   return a >= kLowMemBeg && a <= kLowMemEnd;
50 }
51
52 static inline bool AddrIsInLowShadow(uptr a) {
53   PROFILE_ASAN_MAPPING();
54   a = RAW_ADDR(a);
55   return a >= kLowShadowBeg && a <= kLowShadowEnd;
56 }
57
58 static inline bool AddrIsInMidMem(uptr a) {
59   PROFILE_ASAN_MAPPING();
60   return false;
61 }
62
63 static inline bool AddrIsInMidShadow(uptr a) {
64   PROFILE_ASAN_MAPPING();
65   return false;
66 }
67
68 static inline bool AddrIsInHighMem(uptr a) {
69   PROFILE_ASAN_MAPPING();
70   return false;
71 }
72
73 static inline bool AddrIsInHighShadow(uptr a) {
74   PROFILE_ASAN_MAPPING();
75   return false;
76 }
77
78 static inline bool AddrIsInShadowGap(uptr a) {
79   PROFILE_ASAN_MAPPING();
80   a = RAW_ADDR(a);
81   return a >= kShadowGapBeg && a <= kShadowGapEnd;
82 }
83
84 }  // namespace __asan
85
86 #endif  // ASAN_MAPPING_MYRIAD_H