| // Copyright 2015 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef BASE_MAC_CALL_WITH_EH_FRAME_H_ | 
 | #define BASE_MAC_CALL_WITH_EH_FRAME_H_ | 
 |  | 
 | #include "base/base_export.h" | 
 |  | 
 | namespace base { | 
 | namespace mac { | 
 |  | 
 | // Invokes the specified block in a stack frame with a special exception | 
 | // handler. This function creates an exception handling stack frame that | 
 | // specifies a custom C++ exception personality routine, which terminates the | 
 | // search for an exception handler at this frame. | 
 | // | 
 | // The purpose of this function is to prevent a try/catch statement in system | 
 | // libraries, acting as a global exception handler, from handling exceptions | 
 | // in such a way that disrupts the generation of useful stack traces. | 
 | void BASE_EXPORT CallWithEHFrame(void (^block)(void)); | 
 |  | 
 | }  // namespace mac | 
 | }  // namespace base | 
 |  | 
 | #endif  // BASE_MAC_CALL_WITH_EH_FRAME_H_ |