unwind-dw2.c: Add declarations for uw_update_context and uw_frame_state_for.

* 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
This commit is contained in:
John David Anglin 2006-05-17 15:35:36 +00:00 committed by John David Anglin
parent 9e6fb77dba
commit edbaf6a24d
3 changed files with 21 additions and 2 deletions

View 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

View 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

View 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; }