summaryrefslogtreecommitdiff
path: root/gcc/config/alpha/linux.h
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2003-10-01 06:01:47 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2003-10-01 06:01:47 +0000
commitc49ad9ef92ccbf9ca427e3cd0e359f42fd11a809 (patch)
tree20abd603a5bcb42f4ffe7929126e0ebc032fc438 /gcc/config/alpha/linux.h
parent853f6a41c245ec7ae212fce1223b05c69f1717bc (diff)
downloadgcc-c49ad9ef92ccbf9ca427e3cd0e359f42fd11a809.tar.gz
* dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Honor
DWARF_ALT_FRAME_RETURN_COLUMN. * unwind-dw2.c (dwarf_reg_size_table): Expand by one. (_Unwind_GetGR, _Unwind_SetGR): Validate lookup column. (uw_frame_state_for): Return end-of-stack for null return address. * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Add. * config/alpha/alpha.c (alpha_sa_mask): Add r31 for eh_return. (alpha_expand_prologue): Store a zero for it. (alpha_expand_epilogue): Don't reload it. * config/alpha/alpha.h (DWARF_ALT_FRAME_RETURN_COLUMN): New. * config/alpha/linux.h (MD_FALLBACK_FRAME_STATE_FOR): Use column 64 for the sigframe return address. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@71967 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/alpha/linux.h')
-rw-r--r--gcc/config/alpha/linux.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/config/alpha/linux.h b/gcc/config/alpha/linux.h
index 0853369171d..2c9cc8ea6a1 100644
--- a/gcc/config/alpha/linux.h
+++ b/gcc/config/alpha/linux.h
@@ -85,6 +85,8 @@ Boston, MA 02111-1307, USA. */
if (pc_[0] != 0x47fe0410 /* mov $30,$16 */ \
|| pc_[2] != 0x00000083 /* callsys */) \
break; \
+ if ((CONTEXT)->cfa == 0) \
+ break; \
if (pc_[1] == 0x201f0067) /* lda $0,NR_sigreturn */ \
sc_ = (CONTEXT)->cfa; \
else if (pc_[1] == 0x201f015f) /* lda $0,NR_rt_sigreturn */ \
@@ -113,8 +115,8 @@ Boston, MA 02111-1307, USA. */
(FS)->regs.reg[i_+32].loc.offset \
= (long)&sc_->sc_fpregs[i_] - new_cfa_; \
} \
- (FS)->regs.reg[31].how = REG_SAVED_OFFSET; \
- (FS)->regs.reg[31].loc.offset = (long)&sc_->sc_pc - new_cfa_; \
- (FS)->retaddr_column = 31; \
+ (FS)->regs.reg[64].how = REG_SAVED_OFFSET; \
+ (FS)->regs.reg[64].loc.offset = (long)&sc_->sc_pc - new_cfa_; \
+ (FS)->retaddr_column = 64; \
goto SUCCESS; \
} while (0)