1c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm/* libunwind - a platform-independent unwind library 266100609bb7fb01811e64318bec3018d0bc9abd5homeip.net!davidm Copyright (C) 2003-2004 Hewlett-Packard Co 3c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm Contributed by David Mosberger-Tang <davidm@hpl.hp.com> 4c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm 5c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidmThis file is part of libunwind. 6c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm 7c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidmPermission is hereby granted, free of charge, to any person obtaining 8c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidma copy of this software and associated documentation files (the 9c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm"Software"), to deal in the Software without restriction, including 10c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidmwithout limitation the rights to use, copy, modify, merge, publish, 11c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidmdistribute, sublicense, and/or sell copies of the Software, and to 12c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidmpermit persons to whom the Software is furnished to do so, subject to 13c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidmthe following conditions: 14c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm 15c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidmThe above copyright notice and this permission notice shall be 16c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidmincluded in all copies or substantial portions of the Software. 17c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm 18c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidmTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 19c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidmEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidmMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 21c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidmNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 22c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidmLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 23c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidmOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 24c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidmWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ 25c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm 26c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm#include "unwind-internal.h" 27c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm 28c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidmPROTECTED _Unwind_Reason_Code 29c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm_Unwind_Resume_or_Rethrow (struct _Unwind_Exception *exception_object) 30c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm{ 31c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm struct _Unwind_Context context; 32c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm unw_context_t uc; 33c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm 34c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm if (exception_object->private_1) 35c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm { 362319e0f1aec9e1f716eff88987b0023c5b2f6c07Christopher Ferris int ret; 372319e0f1aec9e1f716eff88987b0023c5b2f6c07Christopher Ferris /* ANDROID support update. */ 382319e0f1aec9e1f716eff88987b0023c5b2f6c07Christopher Ferris int destroy_map = 1; 392319e0f1aec9e1f716eff88987b0023c5b2f6c07Christopher Ferris 402319e0f1aec9e1f716eff88987b0023c5b2f6c07Christopher Ferris unw_map_local_create (); 412319e0f1aec9e1f716eff88987b0023c5b2f6c07Christopher Ferris 42c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm if (_Unwind_InitContext (&context, &uc) < 0) 432319e0f1aec9e1f716eff88987b0023c5b2f6c07Christopher Ferris ret = _URC_FATAL_PHASE2_ERROR; 442319e0f1aec9e1f716eff88987b0023c5b2f6c07Christopher Ferris else 452319e0f1aec9e1f716eff88987b0023c5b2f6c07Christopher Ferris ret = _Unwind_Phase2 (exception_object, &context, &destroy_map); 462319e0f1aec9e1f716eff88987b0023c5b2f6c07Christopher Ferris 472319e0f1aec9e1f716eff88987b0023c5b2f6c07Christopher Ferris if (destroy_map) 482319e0f1aec9e1f716eff88987b0023c5b2f6c07Christopher Ferris unw_map_local_destroy (); 49c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm 502319e0f1aec9e1f716eff88987b0023c5b2f6c07Christopher Ferris return ret; 512319e0f1aec9e1f716eff88987b0023c5b2f6c07Christopher Ferris /* End ANDROID support. */ 52c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm } 53c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm else 54c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm return _Unwind_RaiseException (exception_object); 55c130a12b8137c9622a95f7ff041d08351788bd96hp.com!davidm} 5666100609bb7fb01811e64318bec3018d0bc9abd5homeip.net!davidm 5766100609bb7fb01811e64318bec3018d0bc9abd5homeip.net!davidm_Unwind_Reason_Code 5866100609bb7fb01811e64318bec3018d0bc9abd5homeip.net!davidm__libunwind_Unwind_Resume_or_Rethrow (struct _Unwind_Exception *) 5966100609bb7fb01811e64318bec3018d0bc9abd5homeip.net!davidm ALIAS (_Unwind_Resume_or_Rethrow); 60