1 //===-- interception_mac.cc -------------------------------------*- 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 // Mac-specific interception methods. 13 //===----------------------------------------------------------------------===// 14 15 #ifdef __APPLE__ 16 17 #include "interception.h" 18 #include "mach_override/mach_override.h" 19 20 namespace __interception { 21 bool OverrideFunction(uptr old_func, uptr new_func, uptr *orig_old_func) { 22 *orig_old_func = 0; 23 int res = __asan_mach_override_ptr_custom((void*)old_func, (void*)new_func, 24 (void**)orig_old_func, 25 __interception_allocate_island, 26 __interception_deallocate_island); 27 return (res == 0) && (*orig_old_func != 0); 28 } 29 } // namespace __interception 30 31 #endif // __APPLE__ 32