OSDN Git Service

* config/mips/linux-unwind.h (mips_fallback_frame_state): Adjust
authordrow <drow@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 11 Feb 2005 20:18:59 +0000 (20:18 +0000)
committerdrow <drow@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 11 Feb 2005 20:18:59 +0000 (20:18 +0000)
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

gcc/ChangeLog
gcc/config/mips/linux-unwind.h

index dd6defd..f41bfac 100644 (file)
@@ -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.
index afe06cb..8a41c8c 100644 (file)
@@ -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