OLD | NEW |
1 // Copyright 2012 Google Inc. All Rights Reserved. | 1 // Copyright 2012 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 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 } | 214 } |
215 | 215 |
216 void WINAPI asan_SetOnExceptionCallback(OnExceptionCallback callback) { | 216 void WINAPI asan_SetOnExceptionCallback(OnExceptionCallback callback) { |
217 if (callback != nullptr) { | 217 if (callback != nullptr) { |
218 agent::asan::SetOnExceptionCallback(base::Bind(callback)); | 218 agent::asan::SetOnExceptionCallback(base::Bind(callback)); |
219 } else { | 219 } else { |
220 agent::asan::ClearOnExceptionCallback(); | 220 agent::asan::ClearOnExceptionCallback(); |
221 } | 221 } |
222 } | 222 } |
223 | 223 |
224 #ifndef _WIN64 | |
225 // Unittesting seam. | 224 // Unittesting seam. |
226 AsanRuntime* WINAPI asan_GetActiveRuntime() { | 225 AsanRuntime* WINAPI asan_GetActiveRuntime() { |
227 return asan_runtime; | 226 return asan_runtime; |
228 } | 227 } |
229 | 228 |
| 229 #ifndef _WIN64 |
230 void __declspec(naked) asan_SetAllocationFilterFlag() { | 230 void __declspec(naked) asan_SetAllocationFilterFlag() { |
231 __asm { | 231 __asm { |
232 pushad | 232 pushad |
233 pushfd | 233 pushfd |
234 } | 234 } |
235 asan_runtime->set_allocation_filter_flag(true); | 235 asan_runtime->set_allocation_filter_flag(true); |
236 __asm { | 236 __asm { |
237 popfd | 237 popfd |
238 popad | 238 popad |
239 ret | 239 ret |
(...skipping 13 matching lines...) Expand all Loading... |
253 } | 253 } |
254 } | 254 } |
255 #endif // !defined _WIN64 | 255 #endif // !defined _WIN64 |
256 | 256 |
257 int asan_CrashForException(EXCEPTION_POINTERS* exception) { | 257 int asan_CrashForException(EXCEPTION_POINTERS* exception) { |
258 DCHECK_NE(static_cast<EXCEPTION_POINTERS*>(nullptr), exception); | 258 DCHECK_NE(static_cast<EXCEPTION_POINTERS*>(nullptr), exception); |
259 return agent::asan::AsanRuntime::CrashForException(exception); | 259 return agent::asan::AsanRuntime::CrashForException(exception); |
260 } | 260 } |
261 | 261 |
262 } // extern "C" | 262 } // extern "C" |
OLD | NEW |