unwind-ia64.c (_Unwind_GetCFA): New.
authorRichard Henderson <rth@redhat.com>
Wed, 18 Jun 2003 22:53:06 +0000 (15:53 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Wed, 18 Jun 2003 22:53:06 +0000 (15:53 -0700)
        * config/ia64/unwind-ia64.c (_Unwind_GetCFA): New.
        (_Unwind_FindEnclosingFunction): Implement.

From-SVN: r68168

gcc/ChangeLog
gcc/config/ia64/unwind-ia64.c

index 1e942f6d2a982519a64e196931d8d4c754b69f5a..c78a88340de160884158142128071f5dd6ec1ce4 100644 (file)
@@ -1,3 +1,8 @@
+2003-06-18  Richard Henderson  <rth@redhat.com>
+
+        * config/ia64/unwind-ia64.c (_Unwind_GetCFA): New.
+        (_Unwind_FindEnclosingFunction): Implement.
+
 2003-06-18  Kazu Hirata  <kazu@cs.umass.edu>
 
        * toplev.c (rest_of_handle_sched): Hide the entire function if
index 573a84a75cef404e3e3c0c58fd82803ecf55348b..9b6023da58af821f790de957c4632cf6cddcd3b5 100644 (file)
@@ -1647,7 +1647,24 @@ _Unwind_GetRegionStart (struct _Unwind_Context *context)
 void *
 _Unwind_FindEnclosingFunction (void *pc)
 {
-  return NULL;
+  struct unw_table_entry *ent;
+  unsigned long segment_base, gp;
+
+  ent = _Unwind_FindTableEntry (pc, &segment_base, &gp);
+  if (ent == NULL)
+    return NULL;
+  else
+    return (void *)(segment_base + ent->start_offset);
+}
+
+/* Get the value of the CFA as saved in CONTEXT.  In GCC/Dwarf2 parlance,
+   the CFA is the value of the stack pointer on entry; In IA-64 unwind
+   parlance, this is the PSP.  */
+
+_Unwind_Word
+_Unwind_GetCFA (struct _Unwind_Context *context)
+{
+  return (_Unwind_Ptr) context->psp;
 }
 
 \f