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