148fb7bfaSmrg /* Backward compatibility unwind routines.
2*e9e6e0f6Smrg Copyright (C) 2004-2022 Free Software Foundation, Inc.
348fb7bfaSmrg
448fb7bfaSmrg This file is part of GCC.
548fb7bfaSmrg
648fb7bfaSmrg GCC is free software; you can redistribute it and/or modify it
748fb7bfaSmrg under the terms of the GNU General Public License as published by
848fb7bfaSmrg the Free Software Foundation; either version 3, or (at your option)
948fb7bfaSmrg any later version.
1048fb7bfaSmrg
1148fb7bfaSmrg GCC is distributed in the hope that it will be useful, but WITHOUT
1248fb7bfaSmrg ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
1348fb7bfaSmrg or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
1448fb7bfaSmrg License for more details.
1548fb7bfaSmrg
1648fb7bfaSmrg Under Section 7 of GPL version 3, you are granted additional
1748fb7bfaSmrg permissions described in the GCC Runtime Library Exception, version
1848fb7bfaSmrg 3.1, as published by the Free Software Foundation.
1948fb7bfaSmrg
2048fb7bfaSmrg You should have received a copy of the GNU General Public License and
2148fb7bfaSmrg a copy of the GCC Runtime Library Exception along with this program;
2248fb7bfaSmrg see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
2348fb7bfaSmrg <http://www.gnu.org/licenses/>. */
2448fb7bfaSmrg
2548fb7bfaSmrg #if defined (USE_GAS_SYMVER) && defined (USE_LIBUNWIND_EXCEPTIONS)
2648fb7bfaSmrg #include "tconfig.h"
2748fb7bfaSmrg #include "tsystem.h"
2848fb7bfaSmrg #include "unwind.h"
2948fb7bfaSmrg #include "unwind-dw2-fde.h"
3048fb7bfaSmrg #include "unwind-compat.h"
3148fb7bfaSmrg
3248fb7bfaSmrg extern _Unwind_Reason_Code __libunwind_Unwind_Backtrace
3348fb7bfaSmrg (_Unwind_Trace_Fn, void *);
3448fb7bfaSmrg
3548fb7bfaSmrg _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
_Unwind_Backtrace(_Unwind_Trace_Fn trace,void * trace_argument)3648fb7bfaSmrg _Unwind_Backtrace (_Unwind_Trace_Fn trace, void *trace_argument)
3748fb7bfaSmrg {
3848fb7bfaSmrg return __libunwind_Unwind_Backtrace (trace, trace_argument);
3948fb7bfaSmrg }
4048fb7bfaSmrg symver (_Unwind_Backtrace, GCC_3.3);
4148fb7bfaSmrg
4248fb7bfaSmrg extern void __libunwind_Unwind_DeleteException
4348fb7bfaSmrg (struct _Unwind_Exception *);
4448fb7bfaSmrg
4548fb7bfaSmrg void
_Unwind_DeleteException(struct _Unwind_Exception * exc)4648fb7bfaSmrg _Unwind_DeleteException (struct _Unwind_Exception *exc)
4748fb7bfaSmrg {
4848fb7bfaSmrg return __libunwind_Unwind_DeleteException (exc);
4948fb7bfaSmrg }
5048fb7bfaSmrg symver (_Unwind_DeleteException, GCC_3.0);
5148fb7bfaSmrg
5248fb7bfaSmrg extern void * __libunwind_Unwind_FindEnclosingFunction (void *);
5348fb7bfaSmrg
5448fb7bfaSmrg void *
_Unwind_FindEnclosingFunction(void * pc)5548fb7bfaSmrg _Unwind_FindEnclosingFunction (void *pc)
5648fb7bfaSmrg {
5748fb7bfaSmrg return __libunwind_Unwind_FindEnclosingFunction (pc);
5848fb7bfaSmrg }
5948fb7bfaSmrg symver (_Unwind_FindEnclosingFunction, GCC_3.3);
6048fb7bfaSmrg
6148fb7bfaSmrg extern _Unwind_Reason_Code __libunwind_Unwind_ForcedUnwind
6248fb7bfaSmrg (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
6348fb7bfaSmrg
6448fb7bfaSmrg _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
_Unwind_ForcedUnwind(struct _Unwind_Exception * exc,_Unwind_Stop_Fn stop,void * stop_argument)6548fb7bfaSmrg _Unwind_ForcedUnwind (struct _Unwind_Exception *exc,
6648fb7bfaSmrg _Unwind_Stop_Fn stop, void * stop_argument)
6748fb7bfaSmrg {
6848fb7bfaSmrg return __libunwind_Unwind_ForcedUnwind (exc, stop, stop_argument);
6948fb7bfaSmrg }
7048fb7bfaSmrg symver (_Unwind_ForcedUnwind, GCC_3.0);
7148fb7bfaSmrg
7248fb7bfaSmrg extern _Unwind_Word __libunwind_Unwind_GetCFA
7348fb7bfaSmrg (struct _Unwind_Context *);
7448fb7bfaSmrg
7548fb7bfaSmrg _Unwind_Word
_Unwind_GetCFA(struct _Unwind_Context * context)7648fb7bfaSmrg _Unwind_GetCFA (struct _Unwind_Context *context)
7748fb7bfaSmrg {
7848fb7bfaSmrg return __libunwind_Unwind_GetCFA (context);
7948fb7bfaSmrg }
8048fb7bfaSmrg symver (_Unwind_GetCFA, GCC_3.3);
8148fb7bfaSmrg
8248fb7bfaSmrg #ifdef __ia64__
8348fb7bfaSmrg extern _Unwind_Word __libunwind_Unwind_GetBSP
8448fb7bfaSmrg (struct _Unwind_Context *);
8548fb7bfaSmrg
8648fb7bfaSmrg _Unwind_Word
_Unwind_GetBSP(struct _Unwind_Context * context)8748fb7bfaSmrg _Unwind_GetBSP (struct _Unwind_Context * context)
8848fb7bfaSmrg {
8948fb7bfaSmrg return __libunwind_Unwind_GetBSP (context);
9048fb7bfaSmrg }
9148fb7bfaSmrg symver (_Unwind_GetBSP, GCC_3.3.2);
9248fb7bfaSmrg #else
9348fb7bfaSmrg extern _Unwind_Ptr __libunwind_Unwind_GetDataRelBase
9448fb7bfaSmrg (struct _Unwind_Context *);
9548fb7bfaSmrg
9648fb7bfaSmrg _Unwind_Ptr
_Unwind_GetDataRelBase(struct _Unwind_Context * context)9748fb7bfaSmrg _Unwind_GetDataRelBase (struct _Unwind_Context *context)
9848fb7bfaSmrg {
9948fb7bfaSmrg return __libunwind_Unwind_GetDataRelBase (context);
10048fb7bfaSmrg }
10148fb7bfaSmrg symver (_Unwind_GetDataRelBase, GCC_3.0);
10248fb7bfaSmrg
10348fb7bfaSmrg extern _Unwind_Ptr __libunwind_Unwind_GetTextRelBase
10448fb7bfaSmrg (struct _Unwind_Context *);
10548fb7bfaSmrg
10648fb7bfaSmrg _Unwind_Ptr
_Unwind_GetTextRelBase(struct _Unwind_Context * context)10748fb7bfaSmrg _Unwind_GetTextRelBase (struct _Unwind_Context *context)
10848fb7bfaSmrg {
10948fb7bfaSmrg return __libunwind_Unwind_GetTextRelBase (context);
11048fb7bfaSmrg }
11148fb7bfaSmrg symver (_Unwind_GetTextRelBase, GCC_3.0);
11248fb7bfaSmrg #endif
11348fb7bfaSmrg
11448fb7bfaSmrg extern _Unwind_Word __libunwind_Unwind_GetGR
11548fb7bfaSmrg (struct _Unwind_Context *, int );
11648fb7bfaSmrg
11748fb7bfaSmrg _Unwind_Word
_Unwind_GetGR(struct _Unwind_Context * context,int index)11848fb7bfaSmrg _Unwind_GetGR (struct _Unwind_Context *context, int index)
11948fb7bfaSmrg {
12048fb7bfaSmrg return __libunwind_Unwind_GetGR (context, index);
12148fb7bfaSmrg }
12248fb7bfaSmrg symver (_Unwind_GetGR, GCC_3.0);
12348fb7bfaSmrg
12448fb7bfaSmrg extern _Unwind_Ptr __libunwind_Unwind_GetIP (struct _Unwind_Context *);
12548fb7bfaSmrg
12648fb7bfaSmrg _Unwind_Ptr
_Unwind_GetIP(struct _Unwind_Context * context)12748fb7bfaSmrg _Unwind_GetIP (struct _Unwind_Context *context)
12848fb7bfaSmrg {
12948fb7bfaSmrg return __libunwind_Unwind_GetIP (context);
13048fb7bfaSmrg }
13148fb7bfaSmrg symver (_Unwind_GetIP, GCC_3.0);
13248fb7bfaSmrg
13348fb7bfaSmrg _Unwind_Ptr
_Unwind_GetIPInfo(struct _Unwind_Context * context,int * ip_before_insn)13448fb7bfaSmrg _Unwind_GetIPInfo (struct _Unwind_Context *context, int *ip_before_insn)
13548fb7bfaSmrg {
13648fb7bfaSmrg *ip_before_insn = 0;
13748fb7bfaSmrg return __libunwind_Unwind_GetIP (context);
13848fb7bfaSmrg }
13948fb7bfaSmrg
14047a96e3aSjoerg extern _Unwind_Ptr __libunwind_Unwind_GetLanguageSpecificData
14148fb7bfaSmrg (struct _Unwind_Context *);
14248fb7bfaSmrg
14347a96e3aSjoerg _Unwind_Ptr
_Unwind_GetLanguageSpecificData(struct _Unwind_Context * context)14448fb7bfaSmrg _Unwind_GetLanguageSpecificData (struct _Unwind_Context *context)
14548fb7bfaSmrg {
14648fb7bfaSmrg return __libunwind_Unwind_GetLanguageSpecificData (context);
14748fb7bfaSmrg }
14848fb7bfaSmrg symver (_Unwind_GetLanguageSpecificData, GCC_3.0);
14948fb7bfaSmrg
15048fb7bfaSmrg extern _Unwind_Ptr __libunwind_Unwind_GetRegionStart
15148fb7bfaSmrg (struct _Unwind_Context *);
15248fb7bfaSmrg
15348fb7bfaSmrg _Unwind_Ptr
_Unwind_GetRegionStart(struct _Unwind_Context * context)15448fb7bfaSmrg _Unwind_GetRegionStart (struct _Unwind_Context *context)
15548fb7bfaSmrg {
15648fb7bfaSmrg return __libunwind_Unwind_GetRegionStart (context);
15748fb7bfaSmrg }
15848fb7bfaSmrg symver (_Unwind_GetRegionStart, GCC_3.0);
15948fb7bfaSmrg
16048fb7bfaSmrg extern _Unwind_Reason_Code __libunwind_Unwind_RaiseException
16148fb7bfaSmrg (struct _Unwind_Exception *);
16248fb7bfaSmrg
16348fb7bfaSmrg _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
_Unwind_RaiseException(struct _Unwind_Exception * exc)16448fb7bfaSmrg _Unwind_RaiseException(struct _Unwind_Exception *exc)
16548fb7bfaSmrg {
16648fb7bfaSmrg return __libunwind_Unwind_RaiseException (exc);
16748fb7bfaSmrg }
16848fb7bfaSmrg symver (_Unwind_RaiseException, GCC_3.0);
16948fb7bfaSmrg
17048fb7bfaSmrg extern void __libunwind_Unwind_Resume (struct _Unwind_Exception *);
17148fb7bfaSmrg
17248fb7bfaSmrg void LIBGCC2_UNWIND_ATTRIBUTE
_Unwind_Resume(struct _Unwind_Exception * exc)17348fb7bfaSmrg _Unwind_Resume (struct _Unwind_Exception *exc)
17448fb7bfaSmrg {
17548fb7bfaSmrg __libunwind_Unwind_Resume (exc);
17648fb7bfaSmrg }
17748fb7bfaSmrg symver (_Unwind_Resume, GCC_3.0);
17848fb7bfaSmrg
17948fb7bfaSmrg extern _Unwind_Reason_Code __libunwind_Unwind_Resume_or_Rethrow
18048fb7bfaSmrg (struct _Unwind_Exception *);
18148fb7bfaSmrg
18248fb7bfaSmrg _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
_Unwind_Resume_or_Rethrow(struct _Unwind_Exception * exc)18348fb7bfaSmrg _Unwind_Resume_or_Rethrow (struct _Unwind_Exception *exc)
18448fb7bfaSmrg {
18548fb7bfaSmrg return __libunwind_Unwind_Resume_or_Rethrow (exc);
18648fb7bfaSmrg }
18748fb7bfaSmrg symver (_Unwind_Resume_or_Rethrow, GCC_3.3);
18848fb7bfaSmrg
18948fb7bfaSmrg extern void __libunwind_Unwind_SetGR
19048fb7bfaSmrg (struct _Unwind_Context *, int, _Unwind_Word);
19148fb7bfaSmrg
19248fb7bfaSmrg void
_Unwind_SetGR(struct _Unwind_Context * context,int index,_Unwind_Word val)19348fb7bfaSmrg _Unwind_SetGR (struct _Unwind_Context *context, int index,
19448fb7bfaSmrg _Unwind_Word val)
19548fb7bfaSmrg {
19648fb7bfaSmrg __libunwind_Unwind_SetGR (context, index, val);
19748fb7bfaSmrg }
19848fb7bfaSmrg symver (_Unwind_SetGR, GCC_3.0);
19948fb7bfaSmrg
20048fb7bfaSmrg extern void __libunwind_Unwind_SetIP
20148fb7bfaSmrg (struct _Unwind_Context *, _Unwind_Ptr);
20248fb7bfaSmrg
20348fb7bfaSmrg void
_Unwind_SetIP(struct _Unwind_Context * context,_Unwind_Ptr val)20448fb7bfaSmrg _Unwind_SetIP (struct _Unwind_Context *context, _Unwind_Ptr val)
20548fb7bfaSmrg {
20648fb7bfaSmrg return __libunwind_Unwind_SetIP (context, val);
20748fb7bfaSmrg }
20848fb7bfaSmrg symver (_Unwind_SetIP, GCC_3.0);
20948fb7bfaSmrg #endif
210