From: Richard Henderson Date: Thu, 3 Apr 2003 02:06:55 +0000 (-0800) Subject: libgcc-std.ver (_Unwind_GetCFA): New. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=378683cf6216f2edcd3bb5bf2f093fa54c6aa524;p=gcc.git libgcc-std.ver (_Unwind_GetCFA): New. * libgcc-std.ver (_Unwind_GetCFA): New. * unwind-dw2.c (_Unwind_GetCFA): New. * unwind-libunwind.c (_Unwind_GetCFA): New. * unwind-sjlj.c (_Unwind_GetCFA): New. * unwind.h: Declare it. From-SVN: r65190 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 514256844f3..548f2249c41 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2003-04-02 Richard Henderson + + * libgcc-std.ver (_Unwind_GetCFA): New. + * unwind-dw2.c (_Unwind_GetCFA): New. + * unwind-libunwind.c (_Unwind_GetCFA): New. + * unwind-sjlj.c (_Unwind_GetCFA): New. + * unwind.h: Declare it. + Thu Apr 3 00:31:21 CEST 2003 Jan Hubicka PR inline-asm/8088 diff --git a/gcc/libgcc-std.ver b/gcc/libgcc-std.ver index 21847be6b92..00c72c0c4af 100644 --- a/gcc/libgcc-std.ver +++ b/gcc/libgcc-std.ver @@ -179,6 +179,7 @@ GCC_3.0 { %inherit GCC_3.3 GCC_3.0 GCC_3.3 { _Unwind_FindEnclosingFunction + _Unwind_GetCFA } %inherit GCC_3.4 GCC_3.3 diff --git a/gcc/unwind-dw2.c b/gcc/unwind-dw2.c index 88d8d3047de..bce8e5ee5b7 100644 --- a/gcc/unwind-dw2.c +++ b/gcc/unwind-dw2.c @@ -173,6 +173,14 @@ _Unwind_GetGR (struct _Unwind_Context *context, int index) return * (_Unwind_Word *) context->reg[index]; } +/* Get the value of the CFA as saved in CONTEXT. */ + +_Unwind_Word +_Unwind_GetCFA (struct _Unwind_Context *context) +{ + return context->cfa; +} + /* Overwrite the saved value for register REG in CONTEXT with VAL. */ inline void diff --git a/gcc/unwind-libunwind.c b/gcc/unwind-libunwind.c index 8ed05245350..bbbbd3882b1 100644 --- a/gcc/unwind-libunwind.c +++ b/gcc/unwind-libunwind.c @@ -105,6 +105,15 @@ _Unwind_GetGR (struct _Unwind_Context *context, int index) return ret; } +/* Get the value of the CFA as saved in CONTEXT. */ + +_Unwind_Word +_Unwind_GetCFA (struct _Unwind_Context *context) +{ + /* ??? Is there any way to get this information? */ + return NULL; +} + /* Overwrite the saved value for register REG in CONTEXT with VAL. */ void diff --git a/gcc/unwind-sjlj.c b/gcc/unwind-sjlj.c index 535804c1166..6d6fd8bc9b5 100644 --- a/gcc/unwind-sjlj.c +++ b/gcc/unwind-sjlj.c @@ -170,6 +170,15 @@ _Unwind_GetGR (struct _Unwind_Context *context, int index) return context->fc->data[index]; } +/* Get the value of the CFA as saved in CONTEXT. */ + +_Unwind_Word +_Unwind_GetCFA (struct _Unwind_Context *context) +{ + /* ??? Ideally __builtin_setjmp places the CFA in the jmpbuf. */ + return NULL; +} + void _Unwind_SetGR (struct _Unwind_Context *context, int index, _Unwind_Word val) { diff --git a/gcc/unwind.h b/gcc/unwind.h index d7f7f4ae607..084eebfa875 100644 --- a/gcc/unwind.h +++ b/gcc/unwind.h @@ -138,6 +138,9 @@ extern void _Unwind_SetGR (struct _Unwind_Context *, int, _Unwind_Word); extern _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *); extern void _Unwind_SetIP (struct _Unwind_Context *, _Unwind_Ptr); +/* @@@ Retrieve the CFA of the given context. */ +extern _Unwind_Word _Unwind_GetCFA (struct _Unwind_Context *); + extern void *_Unwind_GetLanguageSpecificData (struct _Unwind_Context *); extern _Unwind_Ptr _Unwind_GetRegionStart (struct _Unwind_Context *);