aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2003-04-02 18:06:55 -0800
committerRichard Henderson <rth@gcc.gnu.org>2003-04-02 18:06:55 -0800
commit378683cf6216f2edcd3bb5bf2f093fa54c6aa524 (patch)
tree7433063c424c782545dd2cf4acde6bc197bcc1e4 /gcc
parent63dfa9bb2a6459eebb2f0ab2469d9e6c9307f14e (diff)
downloadgcc-378683cf6216f2edcd3bb5bf2f093fa54c6aa524.zip
gcc-378683cf6216f2edcd3bb5bf2f093fa54c6aa524.tar.gz
gcc-378683cf6216f2edcd3bb5bf2f093fa54c6aa524.tar.bz2
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
Diffstat (limited to 'gcc')
-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 5142568..548f224 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 21847be..00c72c0 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 88d8d30..bce8e5e 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 8ed0524..bbbbd38 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 535804c..6d6fd8b 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 d7f7f4a..084eebf 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 *);