2002-09-05 Michael Snyder <msnyder@redhat.com>
authorMichael Snyder <msnyder@vmware.com>
Thu, 5 Sep 2002 18:31:07 +0000 (18:31 +0000)
committerMichael Snyder <msnyder@vmware.com>
Thu, 5 Sep 2002 18:31:07 +0000 (18:31 +0000)
* mips-tdep.c (mips_n32n64_push_arguments): Remove alignment
adjustment that doesn't conform to the ABI.
(mips_extract_struct_value_address): Retrieve V0_REGNUM from
saved regcache, not from current regcache.

gdb/ChangeLog
gdb/mips-tdep.c

index 388861949bb4c5555c598e7fe27c74c806d4eee6..415773c87b461c158d2f96fe64e3e318069fbd90 100644 (file)
@@ -1,3 +1,10 @@
+2002-09-05  Michael Snyder  <msnyder@redhat.com>
+
+       * mips-tdep.c (mips_n32n64_push_arguments): Remove alignment
+       adjustment that doesn't conform to the ABI.
+       (mips_extract_struct_value_address): Retrieve V0_REGNUM from
+       saved regcache, not from current regcache.
+
 2002-09-05  Andrew Cagney  <ac131313@redhat.com>
 
        * NEWS: Update for 5.3.  Add new section ``Changes since 5.3''.
index 58e1a8b128d4eaae3cd37719f27c0682f5c9ea06..eeffe24f8e893ede541625b6ff4120467dd705a1 100644 (file)
@@ -2955,10 +2955,6 @@ mips_n32n64_push_arguments (int nargs,
                           typecode == TYPE_CODE_PTR ||
                           typecode == TYPE_CODE_FLT) && len <= 4)
                        longword_offset = MIPS_STACK_ARGSIZE - len;
-                     else if ((typecode == TYPE_CODE_STRUCT ||
-                               typecode == TYPE_CODE_UNION) &&
-                              TYPE_LENGTH (arg_type) < MIPS_STACK_ARGSIZE)
-                       longword_offset = MIPS_STACK_ARGSIZE - len;
                    }
 
                  if (mips_debug)
@@ -4906,12 +4902,14 @@ mips_store_struct_return (CORE_ADDR addr, CORE_ADDR sp)
 }
 
 static CORE_ADDR
-mips_extract_struct_value_address (struct regcache *ignore)
+mips_extract_struct_value_address (struct regcache *regcache)
 {
   /* FIXME: This will only work at random.  The caller passes the
      struct_return address in V0, but it is not preserved.  It may
      still be there, or this may be a random value.  */
-  return read_register (V0_REGNUM);
+  CORE_ADDR val;
+  regcache_cooked_read_unsigned (regcache, V0_REGNUM, &val);
+  return val;
 }
 
 /* Exported procedure: Is PC in the signal trampoline code */