11510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org/* libunwind - a platform-independent unwind library
21510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org   Copyright (C) 2009 Red Hat
31510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org	Contributed by Jan Kratochvil <jan.kratochvil@redhat.com>
41510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org
51510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgThis file is part of libunwind.
61510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org
71510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgPermission is hereby granted, free of charge, to any person obtaining
81510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orga copy of this software and associated documentation files (the
91510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org"Software"), to deal in the Software without restriction, including
101510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgwithout limitation the rights to use, copy, modify, merge, publish,
111510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgdistribute, sublicense, and/or sell copies of the Software, and to
121510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgpermit persons to whom the Software is furnished to do so, subject to
131510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgthe following conditions:
141510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org
151510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgThe above copyright notice and this permission notice shall be
161510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgincluded in all copies or substantial portions of the Software.
171510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org
181510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
191510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
201510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
211510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
221510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
231510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
241510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
251510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org
261510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org#include "unwind-internal.h"
271510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org
281510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org/* gcc/unwind-dw2.c: Retrieve the return address and flag whether that IP is
291510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org   before or after first not yet fully executed instruction.  */
301510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org
311510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgPROTECTED unsigned long
321510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org_Unwind_GetIPInfo (struct _Unwind_Context *context, int *ip_before_insn)
331510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org{
341510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org  unw_word_t val;
351510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org
361510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org  unw_get_reg (&context->cursor, UNW_REG_IP, &val);
371510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org  *ip_before_insn = unw_is_signal_frame (&context->cursor);
381510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org  return val;
391510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org}
401510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org
411510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgunsigned long __libunwind_Unwind_GetIPInfo (struct _Unwind_Context *, int *)
421510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org     ALIAS (_Unwind_GetIPInfo);
431510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org