unwind-ia64.c (struct _Unwind_Context): Add new field 'signal_pfs_loc'.
authorEric Botcazou <ebotcazou@adacore.com>
Fri, 14 Aug 2009 20:49:40 +0000 (20:49 +0000)
committerDouglas Rupp <rupp@gcc.gnu.org>
Fri, 14 Aug 2009 20:49:40 +0000 (20:49 +0000)
commitac77b88e5267498679463fb578fe89ba973977e2
treef84e66234a111d9d52810e971f1c6349093821d8
parentc24db30451c80100f6431dec406702fefa549ec6
unwind-ia64.c (struct _Unwind_Context): Add new field 'signal_pfs_loc'.

* config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
field 'signal_pfs_loc'.
(uw_frame_state_for): Remove duplicate code dealing with leaf
procedures without unwind info.
If in the frame after unwinding through a signal handler, restore
the AR.PFS register instead of the CFM if AR.PFS has not been saved.
* config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
'pfs_loc' to the AR.PFS location in the signal context; instead
set 'signal_pfs_loc'.
Manually generate the unwind info for the AR.PFS register.
(ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
(ia64_handle_unwabi): Test 'fs->unwabi' against them.
Do not set 'pfs_loc' to the AR.PFS location in the signal context;
instead set 'signal_pfs_loc'.
Remove code preventing the AR.PFS register from being restored
from the signal context.

From-SVN: r150777
gcc/ChangeLog
gcc/config/ia64/linux-unwind.h
gcc/config/ia64/unwind-ia64.c