OSDN Git Service

* config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
authorrupp <rupp@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 14 Aug 2009 20:49:40 +0000 (20:49 +0000)
committerrupp <rupp@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 14 Aug 2009 20:49:40 +0000 (20:49 +0000)
commit17a745fe676e600247e18bfe957864d45335396d
treef84e66234a111d9d52810e971f1c6349093821d8
parentf51dfe4da5c967c6ec1e8b8baabad7748f8dfaa6
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150777 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/ia64/linux-unwind.h
gcc/config/ia64/unwind-ia64.c