]> gcc.gnu.org Git - gcc.git/commitdiff
unwind-dw2.c: Add declarations for uw_update_context and uw_frame_state_for.
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>
Wed, 17 May 2006 15:35:36 +0000 (15:35 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Wed, 17 May 2006 15:35:36 +0000 (15:35 +0000)
* unwind-dw2.c: Add declarations for uw_update_context and
uw_frame_state_for.
* pa/hpux-unwind.h (pa_fallback_frame_state): When an export stub is
detected, advance frame state and context once to skip over stub.

From-SVN: r113865

gcc/ChangeLog
gcc/config/pa/hpux-unwind.h
gcc/unwind-dw2.c

index 9baecb1796a883dff76a57aa2069342546d4ac50..d71b1b4c2768b5a781862d0615c3c4adf2019811 100644 (file)
@@ -1,3 +1,10 @@
+2006-05-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       * unwind-dw2.c: Add declarations for uw_update_context and
+       uw_frame_state_for.
+       * pa/hpux-unwind.h (pa_fallback_frame_state): When an export stub is
+       detected, advance frame state and context once to skip over stub.
+
 2006-05-17  Sebastian Pop  <pop@cri.ensmp.fr>
 
        PR middle-end/20256
index 383b07216ae4fe29b74667805d94d17b2111f0fe..d52149889e3998a5db62ec77fdcf82eff28341f4 100644 (file)
@@ -155,7 +155,11 @@ pa_fallback_frame_state (struct _Unwind_Context *context,
       fs->regs.reg[0].how = REG_SAVED_OFFSET;
       fs->regs.reg[0].loc.offset = -24;
 
-      return _URC_NO_REASON;
+      /* Update context to describe the stub frame.  */
+      uw_update_context (context, fs);
+
+      /* Set up fs to describe the FDE for the caller of this stub.  */
+      return uw_frame_state_for (context, fs);
     }
   /* Check if the return address points to a relocation stub.  */
   else if (!TARGET_64BIT
@@ -171,7 +175,11 @@ pa_fallback_frame_state (struct _Unwind_Context *context,
       fs->regs.reg[0].how = REG_SAVED_OFFSET;
       fs->regs.reg[0].loc.offset = -8;
 
-      return _URC_NO_REASON;
+      /* Update context to describe the stub frame.  */
+      uw_update_context (context, fs);
+
+      /* Set up fs to describe the FDE for the caller of this stub.  */
+      return uw_frame_state_for (context, fs);
     }
 
   /* Check if the return address is an export stub as signal handlers
index 55a6143d370e922a05c11d0be2035e27f84600bd..d205122263ddcd53dc9432ed4b5e1d76bc0275ee 100644 (file)
@@ -92,6 +92,10 @@ union unaligned
   signed s8 __attribute__ ((mode (DI)));
 } __attribute__ ((packed));
 
+static void uw_update_context (struct _Unwind_Context *, _Unwind_FrameState *);
+static _Unwind_Reason_Code uw_frame_state_for (struct _Unwind_Context *,
+                                              _Unwind_FrameState *);
+
 static inline void *
 read_pointer (const void *p) { const union unaligned *up = p; return up->p; }
 
This page took 0.203066 seconds and 5 git commands to generate.