2002-08-20 Michael Snyder <msnyder@redhat.com>
authorMichael Snyder <msnyder@vmware.com>
Tue, 20 Aug 2002 19:26:23 +0000 (19:26 +0000)
committerMichael Snyder <msnyder@vmware.com>
Tue, 20 Aug 2002 19:26:23 +0000 (19:26 +0000)
* config/mips/tm-mips.h (STORE_STRUCT_RETURN): Delete.
(EXTRACT_STRUCT_VALUE_ADDRESS): Delete.
* mips-tdep.c (mips_store_struct_return): New function.
(mips_extract_struct_value_address): New function.
(mips_gdbarch_init): Set store_struct_return and
extract_struct_value_address.

gdb/ChangeLog
gdb/mips-tdep.c

index c72abc016d499c5f3f65ea80bc8fc21033f60f1e..9accf146e2cb9008b0d77a15050348350d5a2374 100644 (file)
@@ -1,3 +1,12 @@
+2002-08-20  Michael Snyder  <msnyder@redhat.com>
+
+       * config/mips/tm-mips.h (STORE_STRUCT_RETURN): Delete.
+       (EXTRACT_STRUCT_VALUE_ADDRESS): Delete.
+       * mips-tdep.c (mips_store_struct_return): New function.
+       (mips_extract_struct_value_address): New function.
+       (mips_gdbarch_init): Set store_struct_return and
+       extract_struct_value_address.
+
 2002-08-20  David Carlton  <carlton@math.stanford.edu>
 
        * dwarf2read.c (dwarf2_build_psymtabs): Check that
index 5bc44ba180a7bc97b0f56d5d361ddce904377e68..6308e4f735db678af64c87f80e6f71d03f0db2d9 100644 (file)
@@ -4863,6 +4863,21 @@ mips_n32n64_store_return_value (struct type *type, char *valbuf)
   mips_n32n64_xfer_return_value (type, current_regcache, NULL, valbuf);
 }
 
+static void
+mips_store_struct_return (CORE_ADDR addr, CORE_ADDR sp)
+{
+  /* Nothing to do -- push_arguments does all the work.  */
+}
+
+static CORE_ADDR
+mips_extract_struct_value_address (struct regcache *ignore)
+{
+  /* 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);
+}
+
 /* Exported procedure: Is PC in the signal trampoline code */
 
 static int
@@ -5934,6 +5949,9 @@ mips_gdbarch_init (struct gdbarch_info info,
   /* Hook in OS ABI-specific overrides, if they have been registered.  */
   gdbarch_init_osabi (info, gdbarch, osabi);
 
+  set_gdbarch_store_struct_return (gdbarch, mips_store_struct_return);
+  set_gdbarch_extract_struct_value_address (gdbarch, 
+                                           mips_extract_struct_value_address);
   return gdbarch;
 }