summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordrow <drow@138bc75d-0d04-0410-961f-82ee72b054a4>2005-02-11 20:18:59 +0000
committerdrow <drow@138bc75d-0d04-0410-961f-82ee72b054a4>2005-02-11 20:18:59 +0000
commite8fbda02bd8ecb4fbc482d958ee511a5c29e13f9 (patch)
treecda7d323c0e0ef6375bed0b5aa0a37a7d6a8db98
parenta11d44c6819f573632c0bdd3d8c409c3e32c90d6 (diff)
downloadppe42-gcc-e8fbda02bd8ecb4fbc482d958ee511a5c29e13f9.tar.gz
ppe42-gcc-e8fbda02bd8ecb4fbc482d958ee511a5c29e13f9.zip
* config/mips/linux-unwind.h (mips_fallback_frame_state): Adjust
offsets for the big-endian 32-bit case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94888 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/mips/linux-unwind.h7
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index dd6defd9463..f41bfac366b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2005-02-11 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * config/mips/linux-unwind.h (mips_fallback_frame_state): Adjust
+ offsets for the big-endian 32-bit case.
+
2005-02-11 Joseph S. Myers <joseph@codesourcery.com>
* config/ia64/hpux.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Define.
diff --git a/gcc/config/mips/linux-unwind.h b/gcc/config/mips/linux-unwind.h
index afe06cbff24..8a41c8c7757 100644
--- a/gcc/config/mips/linux-unwind.h
+++ b/gcc/config/mips/linux-unwind.h
@@ -86,6 +86,13 @@ mips_fallback_frame_state (struct _Unwind_Context *context,
fs->cfa_reg = STACK_POINTER_REGNUM;
fs->cfa_offset = new_cfa - (_Unwind_Ptr) context->cfa;
+#if _MIPS_SIM == _ABIO32 && defined __MIPSEB__
+ /* On o32 Linux, the register save slots in the sigcontext are
+ eight bytes. We need the lower half of each register slot,
+ so slide our view of the structure back four bytes. */
+ new_cfa -= 4;
+#endif
+
for (i = 0; i < 32; i++) {
fs->regs.reg[i].how = REG_SAVED_OFFSET;
fs->regs.reg[i].loc.offset
OpenPOWER on IntegriCloud