unwind-arm.h: Make _Unwind_GetIP...
2017-05-17 Andreas Tobler <andreast@gcc.gnu.org> * config/arm/unwind-arm.h: Make _Unwind_GetIP, _Unwind_GetIPInfo and _Unwind_SetIP available as functions for arm*-*-freebsd*. * config/arm/unwind-arm.c: Implement the above. From-SVN: r248173
This commit is contained in:
parent
0152001bc8
commit
78eca3093f
3 changed files with 35 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
|||
2017-05-17 Andreas Tobler <andreast@gcc.gnu.org>
|
||||
|
||||
* config/arm/unwind-arm.h: Make _Unwind_GetIP, _Unwind_GetIPInfo and
|
||||
_Unwind_SetIP available as functions for arm*-*-freebsd*.
|
||||
* config/arm/unwind-arm.c: Implement the above.
|
||||
|
||||
2017-05-15 Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||
|
||||
* config/sparc/lb1spc.S [__ELF__ && __linux__]: Emit .note.GNU-stack
|
||||
|
|
|
@ -509,3 +509,25 @@ __aeabi_unwind_cpp_pr2 (_Unwind_State state,
|
|||
{
|
||||
return __gnu_unwind_pr_common (state, ucbp, context, 2);
|
||||
}
|
||||
|
||||
#ifdef __FreeBSD__
|
||||
/* FreeBSD expects these to be functions */
|
||||
inline _Unwind_Ptr
|
||||
_Unwind_GetIP (struct _Unwind_Context *context)
|
||||
{
|
||||
return _Unwind_GetGR (context, 15) & ~(_Unwind_Word)1;
|
||||
}
|
||||
|
||||
inline _Unwind_Ptr
|
||||
_Unwind_GetIPInfo (struct _Unwind_Context *context, int *ip_before_insn)
|
||||
{
|
||||
*ip_before_insn = 0;
|
||||
return _Unwind_GetIP (context);
|
||||
}
|
||||
|
||||
inline void
|
||||
_Unwind_SetIP (struct _Unwind_Context *context, _Unwind_Ptr val)
|
||||
{
|
||||
_Unwind_SetGR (context, 15, val | (_Unwind_GetGR (context, 15) & 1));
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -72,12 +72,19 @@ extern "C" {
|
|||
{
|
||||
return _URC_FAILURE;
|
||||
}
|
||||
#ifndef __FreeBSD__
|
||||
/* Return the address of the instruction, not the actual IP value. */
|
||||
#define _Unwind_GetIP(context) \
|
||||
(_Unwind_GetGR (context, 15) & ~(_Unwind_Word)1)
|
||||
|
||||
#define _Unwind_SetIP(context, val) \
|
||||
_Unwind_SetGR (context, 15, val | (_Unwind_GetGR (context, 15) & 1))
|
||||
#else
|
||||
#undef _Unwind_GetIPInfo
|
||||
_Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *);
|
||||
_Unwind_Ptr _Unwind_GetIPInfo (struct _Unwind_Context *, int *);
|
||||
void _Unwind_SetIP (struct _Unwind_Context *, _Unwind_Ptr);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
|
|
Loading…
Add table
Reference in a new issue