OLD | NEW |
1 // Copyright 2014 Google Inc. All Rights Reserved. | 1 // Copyright 2014 Google Inc. All Rights Reserved. |
2 // | 2 // |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
6 // | 6 // |
7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
8 // | 8 // |
9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 F(16, read_access, AsanReadAccess) \ | 91 F(16, read_access, AsanReadAccess) \ |
92 F(32, read_access, AsanReadAccess) \ | 92 F(32, read_access, AsanReadAccess) \ |
93 F(1, write_access, AsanWriteAccess) \ | 93 F(1, write_access, AsanWriteAccess) \ |
94 F(2, write_access, AsanWriteAccess) \ | 94 F(2, write_access, AsanWriteAccess) \ |
95 F(4, write_access, AsanWriteAccess) \ | 95 F(4, write_access, AsanWriteAccess) \ |
96 F(8, write_access, AsanWriteAccess) \ | 96 F(8, write_access, AsanWriteAccess) \ |
97 F(10, write_access, AsanWriteAccess) \ | 97 F(10, write_access, AsanWriteAccess) \ |
98 F(16, write_access, AsanWriteAccess) \ | 98 F(16, write_access, AsanWriteAccess) \ |
99 F(32, write_access, AsanWriteAccess) | 99 F(32, write_access, AsanWriteAccess) |
100 | 100 |
101 #define ASAN_STRING_INTERCEPT_FUNCTIONS(F) \ | 101 #define ASAN_STRING_INTERCEPT_FUNCTIONS(F) \ |
102 F(cmps, _repz_, ecx, AsanReadAccess, AsanReadAccess, 4, 1) \ | 102 F(cmps, _repz_, ecx, AsanReadAccess, AsanReadAccess, 4, 1) \ |
103 F(cmps, _repz_, ecx, AsanReadAccess, AsanReadAccess, 2, 1) \ | 103 F(cmps, _repz_, ecx, AsanReadAccess, AsanReadAccess, 2, 1) \ |
104 F(cmps, _repz_, ecx, AsanReadAccess, AsanReadAccess, 1, 1) \ | 104 F(cmps, _repz_, ecx, AsanReadAccess, AsanReadAccess, 1, 1) \ |
105 F(cmps, _, 1, AsanReadAccess, AsanReadAccess, 4, 1) \ | 105 F(cmps, _, 1, AsanReadAccess, AsanReadAccess, 4, 1) \ |
106 F(cmps, _, 1, AsanReadAccess, AsanReadAccess, 2, 1) \ | 106 F(cmps, _, 1, AsanReadAccess, AsanReadAccess, 2, 1) \ |
107 F(cmps, _, 1, AsanReadAccess, AsanReadAccess, 1, 1) \ | 107 F(cmps, _, 1, AsanReadAccess, AsanReadAccess, 1, 1) \ |
108 F(movs, _repz_, ecx, AsanWriteAccess, AsanReadAccess, 4, 0) \ | 108 F(lods, _repz_, ecx, AsanWriteAccess, AsanReadAccess, 4, 0) \ |
109 F(movs, _repz_, ecx, AsanWriteAccess, AsanReadAccess, 2, 0) \ | 109 F(lods, _repz_, ecx, AsanWriteAccess, AsanReadAccess, 2, 0) \ |
110 F(movs, _repz_, ecx, AsanWriteAccess, AsanReadAccess, 1, 0) \ | 110 F(lods, _repz_, ecx, AsanWriteAccess, AsanReadAccess, 1, 0) \ |
111 F(movs, _, 1, AsanWriteAccess, AsanReadAccess, 4, 0) \ | 111 F(lods, _, 1, AsanWriteAccess, AsanReadAccess, 4, 0) \ |
112 F(movs, _, 1, AsanWriteAccess, AsanReadAccess, 2, 0) \ | 112 F(lods, _, 1, AsanWriteAccess, AsanReadAccess, 2, 0) \ |
113 F(movs, _, 1, AsanWriteAccess, AsanReadAccess, 1, 0) \ | 113 F(lods, _, 1, AsanWriteAccess, AsanReadAccess, 1, 0) \ |
114 F(stos, _repz_, ecx, AsanWriteAccess, AsanUnknownAccess, 4, 0) \ | 114 F(movs, _repz_, ecx, AsanWriteAccess, AsanReadAccess, 4, 0) \ |
115 F(stos, _repz_, ecx, AsanWriteAccess, AsanUnknownAccess, 2, 0) \ | 115 F(movs, _repz_, ecx, AsanWriteAccess, AsanReadAccess, 2, 0) \ |
116 F(stos, _repz_, ecx, AsanWriteAccess, AsanUnknownAccess, 1, 0) \ | 116 F(movs, _repz_, ecx, AsanWriteAccess, AsanReadAccess, 1, 0) \ |
117 F(stos, _, 1, AsanWriteAccess, AsanUnknownAccess, 4, 0) \ | 117 F(movs, _, 1, AsanWriteAccess, AsanReadAccess, 4, 0) \ |
118 F(stos, _, 1, AsanWriteAccess, AsanUnknownAccess, 2, 0) \ | 118 F(movs, _, 1, AsanWriteAccess, AsanReadAccess, 2, 0) \ |
119 F(stos, _, 1, AsanWriteAccess, AsanUnknownAccess, 1, 0) | 119 F(movs, _, 1, AsanWriteAccess, AsanReadAccess, 1, 0) \ |
| 120 F(stos, _repz_, ecx, AsanWriteAccess, AsanUnknownAccess, 4, 0) \ |
| 121 F(stos, _repz_, ecx, AsanWriteAccess, AsanUnknownAccess, 2, 0) \ |
| 122 F(stos, _repz_, ecx, AsanWriteAccess, AsanUnknownAccess, 1, 0) \ |
| 123 F(stos, _, 1, AsanWriteAccess, AsanUnknownAccess, 4, 0) \ |
| 124 F(stos, _, 1, AsanWriteAccess, AsanUnknownAccess, 2, 0) \ |
| 125 F(stos, _, 1, AsanWriteAccess, AsanUnknownAccess, 1, 0) |
120 | 126 |
121 } // namespace asan | 127 } // namespace asan |
122 } // namespace agent | 128 } // namespace agent |
123 | 129 |
124 extern "C" { | 130 extern "C" { |
125 | 131 |
126 // The no-op memory access checker. | 132 // The no-op memory access checker. |
127 void asan_no_check(); | 133 void asan_no_check(); |
128 | 134 |
129 // The no-op string instruction memory access checker. | 135 // The no-op string instruction memory access checker. |
(...skipping 26 matching lines...) Expand all Loading... |
156 | 162 |
157 // Declare all the string instruction interceptor functions. Note that these | 163 // Declare all the string instruction interceptor functions. Note that these |
158 // functions have a custom calling convention, and can't be invoked directly. | 164 // functions have a custom calling convention, and can't be invoked directly. |
159 ASAN_STRING_INTERCEPT_FUNCTIONS(DECLARE_STRING_INTERCEPT_FUNCTIONS) | 165 ASAN_STRING_INTERCEPT_FUNCTIONS(DECLARE_STRING_INTERCEPT_FUNCTIONS) |
160 | 166 |
161 #undef DECLARE_STRING_INTERCEPT_FUNCTIONS | 167 #undef DECLARE_STRING_INTERCEPT_FUNCTIONS |
162 | 168 |
163 } // extern "C" | 169 } // extern "C" |
164 | 170 |
165 #endif // SYZYGY_AGENT_ASAN_MEMORY_INTERCEPTORS_H_ | 171 #endif // SYZYGY_AGENT_ASAN_MEMORY_INTERCEPTORS_H_ |
OLD | NEW |