| 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 |