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