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