summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/libgcc-std.ver1
-rw-r--r--gcc/unwind-dw2.c8
-rw-r--r--gcc/unwind-libunwind.c9
-rw-r--r--gcc/unwind-sjlj.c9
-rw-r--r--gcc/unwind.h3
6 files changed, 38 insertions, 0 deletions
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 <rth@redhat.com>
+
+ * 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 <jh@suse.cz>
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 *);
OpenPOWER on IntegriCloud