unwind-compat.c revision 146895
1148771Scperciva/* Backward compatibility unwind routines.
2148771Scperciva   Copyright (C) 2004
3148771Scperciva   Free Software Foundation, Inc.
4148771Scperciva
5148771Scperciva   This file is part of GCC.
6148771Scperciva
7148771Scperciva   GCC is free software; you can redistribute it and/or modify it
8148771Scperciva   under the terms of the GNU General Public License as published by
9148771Scperciva   the Free Software Foundation; either version 2, or (at your option)
10148771Scperciva   any later version.
11148771Scperciva
12148771Scperciva   In addition to the permissions in the GNU General Public License, the
13148771Scperciva   Free Software Foundation gives you unlimited permission to link the
14148771Scperciva   compiled version of this file into combinations with other programs,
15148771Scperciva   and to distribute those combinations without any restriction coming
16148771Scperciva   from the use of this file.  (The General Public License restrictions
17148771Scperciva   do apply in other respects; for example, they cover modification of
18148771Scperciva   the file, and distribution when not linked into a combined
19148771Scperciva   executable.)
20148771Scperciva
21148771Scperciva   GCC is distributed in the hope that it will be useful, but WITHOUT
22148771Scperciva   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
23148771Scperciva   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
24148771Scperciva   License for more details.
25148771Scperciva
26148771Scperciva   You should have received a copy of the GNU General Public License
27148771Scperciva   along with GCC; see the file COPYING.  If not, write to the Free
28148771Scperciva   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
29148771Scperciva   02111-1307, USA.  */
30148771Scperciva
31148771Scperciva#if defined (USE_GAS_SYMVER) && defined (USE_LIBUNWIND_EXCEPTIONS)
32148771Scperciva#include "unwind.h"
33148771Scperciva#include "unwind-dw2-fde.h"
34148771Scperciva#include "unwind-compat.h"
35148771Scperciva
36148771Scpercivaextern _Unwind_Reason_Code __libunwind_Unwind_Backtrace
37148771Scperciva  (_Unwind_Trace_Fn, void *);
38164922Scperciva
39164922Scperciva_Unwind_Reason_Code
40164922Scperciva_Unwind_Backtrace (_Unwind_Trace_Fn trace, void *trace_argument)
41164922Scperciva{
42148771Scperciva  return __libunwind_Unwind_Backtrace (trace, trace_argument);
43148771Scperciva}
44148771Scpercivasymver (_Unwind_Backtrace, GCC_3.3);
45148771Scperciva
46148771Scpercivaextern void __libunwind_Unwind_DeleteException
47148771Scperciva  (struct _Unwind_Exception *);
48148771Scperciva
49148771Scpercivavoid
50148771Scperciva_Unwind_DeleteException (struct _Unwind_Exception *exc)
51148771Scperciva{
52148771Scperciva  return __libunwind_Unwind_DeleteException (exc);
53148771Scperciva}
54148771Scpercivasymver (_Unwind_DeleteException, GCC_3.0);
55148771Scperciva
56148771Scpercivaextern void * __libunwind_Unwind_FindEnclosingFunction (void *);
57148771Scperciva
58148771Scpercivavoid *
59148771Scperciva_Unwind_FindEnclosingFunction (void *pc)
60148771Scperciva{
61148771Scperciva  return __libunwind_Unwind_FindEnclosingFunction (pc);
62148771Scperciva}
63148771Scpercivasymver (_Unwind_FindEnclosingFunction, GCC_3.3);
64148771Scperciva
65148771Scpercivaextern _Unwind_Reason_Code __libunwind_Unwind_ForcedUnwind
66148771Scperciva  (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
67148771Scperciva
68148771Scperciva_Unwind_Reason_Code
69148771Scperciva_Unwind_ForcedUnwind (struct _Unwind_Exception *exc,
70148771Scperciva		      _Unwind_Stop_Fn stop, void * stop_argument)
71148771Scperciva{
72148771Scperciva  return __libunwind_Unwind_ForcedUnwind (exc, stop, stop_argument);
73148771Scperciva}
74148771Scpercivasymver (_Unwind_ForcedUnwind, GCC_3.0);
75148771Scperciva
76148771Scpercivaextern _Unwind_Word __libunwind_Unwind_GetCFA
77148771Scperciva  (struct _Unwind_Context *);
78164922Scperciva
79148771Scperciva_Unwind_Word
80148771Scperciva_Unwind_GetCFA (struct _Unwind_Context *context)
81148771Scperciva{
82148771Scperciva  return __libunwind_Unwind_GetCFA (context);
83148771Scperciva}
84148771Scpercivasymver (_Unwind_GetCFA, GCC_3.3);
85148771Scperciva
86148771Scperciva#ifdef __ia64__
87148771Scpercivaextern _Unwind_Word __libunwind_Unwind_GetBSP
88148771Scperciva  (struct _Unwind_Context *);
89148771Scperciva
90148771Scperciva_Unwind_Word
91148771Scperciva_Unwind_GetBSP (struct _Unwind_Context * context)
92148771Scperciva{
93148771Scperciva  return __libunwind_Unwind_GetBSP (context);
94148771Scperciva}
95148771Scpercivasymver (_Unwind_GetBSP, GCC_3.3.2);
96148771Scperciva#else
97148771Scpercivaextern _Unwind_Ptr __libunwind_Unwind_GetDataRelBase
98148771Scperciva  (struct _Unwind_Context *);
99148771Scperciva
100148771Scperciva_Unwind_Ptr
101148771Scperciva_Unwind_GetDataRelBase (struct _Unwind_Context *context)
102148771Scperciva{
103148771Scperciva  return __libunwind_Unwind_GetDataRelBase (context);
104148771Scperciva}
105148771Scpercivasymver (_Unwind_GetDataRelBase, GCC_3.0);
106148771Scperciva
107148771Scpercivaextern _Unwind_Ptr __libunwind_Unwind_GetTextRelBase
108148771Scperciva  (struct _Unwind_Context *);
109148771Scperciva
110148771Scperciva_Unwind_Ptr
111148771Scperciva_Unwind_GetTextRelBase (struct _Unwind_Context *context)
112148771Scperciva{
113148771Scperciva  return __libunwind_Unwind_GetTextRelBase (context);
114148771Scperciva}
115148771Scpercivasymver (_Unwind_GetTextRelBase, GCC_3.0);
116164922Scperciva#endif
117148771Scperciva
118148771Scpercivaextern _Unwind_Word __libunwind_Unwind_GetGR
119148771Scperciva  (struct _Unwind_Context *, int );
120148771Scperciva
121148771Scperciva_Unwind_Word
122148771Scperciva_Unwind_GetGR (struct _Unwind_Context *context, int index)
123164922Scperciva{
124148771Scperciva  return __libunwind_Unwind_GetGR (context, index);
125148771Scperciva}
126148771Scpercivasymver (_Unwind_GetGR, GCC_3.0);
127148771Scperciva
128148771Scpercivaextern _Unwind_Ptr __libunwind_Unwind_GetIP (struct _Unwind_Context *);
129148771Scperciva
130164922Scperciva_Unwind_Ptr
131148771Scperciva_Unwind_GetIP (struct _Unwind_Context *context)
132148771Scperciva{
133148771Scperciva  return __libunwind_Unwind_GetIP (context);
134148771Scperciva}
135148771Scpercivasymver (_Unwind_GetIP, GCC_3.0);
136148771Scperciva
137148771Scpercivaextern void *__libunwind_Unwind_GetLanguageSpecificData
138164922Scperciva  (struct _Unwind_Context *);
139148771Scperciva
140148771Scpercivavoid *
141148771Scperciva_Unwind_GetLanguageSpecificData (struct _Unwind_Context *context)
142148771Scperciva{
143148771Scperciva  return __libunwind_Unwind_GetLanguageSpecificData (context);
144148771Scperciva}
145148771Scpercivasymver (_Unwind_GetLanguageSpecificData, GCC_3.0);
146148771Scperciva
147148771Scpercivaextern _Unwind_Ptr __libunwind_Unwind_GetRegionStart
148148771Scperciva  (struct _Unwind_Context *);
149148771Scperciva
150148771Scperciva_Unwind_Ptr
151148771Scperciva_Unwind_GetRegionStart (struct _Unwind_Context *context)
152148771Scperciva{
153148771Scperciva  return __libunwind_Unwind_GetRegionStart (context);
154148771Scperciva}
155148771Scpercivasymver (_Unwind_GetRegionStart, GCC_3.0);
156148771Scperciva
157148771Scpercivaextern _Unwind_Reason_Code __libunwind_Unwind_RaiseException
158148771Scperciva  (struct _Unwind_Exception *);
159148771Scperciva
160148771Scperciva_Unwind_Reason_Code
161148771Scperciva_Unwind_RaiseException(struct _Unwind_Exception *exc)
162148771Scperciva{
163148771Scperciva  return __libunwind_Unwind_RaiseException (exc);
164148771Scperciva}
165148771Scpercivasymver (_Unwind_RaiseException, GCC_3.0);
166148771Scperciva
167148771Scpercivaextern void __libunwind_Unwind_Resume (struct _Unwind_Exception *);
168148771Scperciva
169148771Scpercivavoid
170148771Scperciva_Unwind_Resume (struct _Unwind_Exception *exc)
171148771Scperciva{
172148771Scperciva  __libunwind_Unwind_Resume (exc);
173148771Scperciva}
174148771Scpercivasymver (_Unwind_Resume, GCC_3.0);
175148771Scperciva
176148771Scpercivaextern _Unwind_Reason_Code __libunwind_Unwind_Resume_or_Rethrow
177148771Scperciva   (struct _Unwind_Exception *);
178148771Scperciva
179148771Scperciva_Unwind_Reason_Code
180148771Scperciva_Unwind_Resume_or_Rethrow (struct _Unwind_Exception *exc)
181148771Scperciva{
182148771Scperciva  return __libunwind_Unwind_Resume_or_Rethrow (exc);
183148771Scperciva}
184148771Scpercivasymver (_Unwind_Resume_or_Rethrow, GCC_3.3);
185148771Scperciva
186148771Scpercivaextern void __libunwind_Unwind_SetGR
187148771Scperciva  (struct _Unwind_Context *, int, _Unwind_Word);
188148771Scperciva
189148771Scpercivavoid
190148771Scperciva_Unwind_SetGR (struct _Unwind_Context *context, int index,
191148771Scperciva	       _Unwind_Word val)
192148771Scperciva{
193148771Scperciva  __libunwind_Unwind_SetGR (context, index, val);
194148771Scperciva}
195148771Scpercivasymver (_Unwind_SetGR, GCC_3.0);
196148771Scperciva
197148771Scpercivaextern void __libunwind_Unwind_SetIP
198148771Scperciva  (struct _Unwind_Context *, _Unwind_Ptr);
199164922Scperciva
200148771Scpercivavoid
201148771Scperciva_Unwind_SetIP (struct _Unwind_Context *context, _Unwind_Ptr val)
202148771Scperciva{
203148771Scperciva  return __libunwind_Unwind_SetIP (context, val);
204148771Scperciva}
205148771Scpercivasymver (_Unwind_SetIP, GCC_3.0);
206148771Scperciva#endif
207148771Scperciva