2004-10-05 Kei Sakamoto <sakamoto.kei@renesas.com>
authorKazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
Tue, 5 Oct 2004 04:07:10 +0000 (04:07 +0000)
committerKazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
Tue, 5 Oct 2004 04:07:10 +0000 (04:07 +0000)
* m32r-tdep.c (m32r_use_struct_convention): Delete function.
(m32r_extract_struct_value_address): Delete function.
(m32r_return_value): New function.
(m32r_gdbarch_init): Instead of store_return_value,
extract_return_value, deprecated_extract_struct_value_address
and deprecated_use_struct_convention, set return_value.

gdb/ChangeLog
gdb/m32r-tdep.c

index e917a410cbc6c9cab9f037f1411ceb4c8149f25e..e63108991a76b5f27c35219022d4e165d2b98402 100644 (file)
@@ -1,3 +1,12 @@
+2004-10-05  Kei Sakamoto  <sakamoto.kei@renesas.com>
+
+       * m32r-tdep.c (m32r_use_struct_convention): Delete function.
+       (m32r_extract_struct_value_address): Delete function.
+       (m32r_return_value): New function.
+       (m32r_gdbarch_init): Instead of store_return_value,
+       extract_return_value, deprecated_extract_struct_value_address
+       and deprecated_use_struct_convention, set return_value.
+
 2004-10-03  Daniel Jacobowitz  <dan@debian.org>
 
        * dwarf2read.c (read_subrange_type): Add comment for variable
index 73dce73b6c7dbc4e4dccb4567776bc8da55763b6..3d8dfecec285f3d17835ba4f22e4a03a884f20dc 100644 (file)
@@ -55,19 +55,6 @@ m32r_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp)
   return sp & ~3;
 }
 
-/* Should we use DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS instead of
-   EXTRACT_RETURN_VALUE?  GCC_P is true if compiled with gcc and TYPE
-   is the type (which is known to be struct, union or array).
-
-   The m32r returns anything less than 8 bytes in size in
-   registers. */
-
-static int
-m32r_use_struct_convention (int gcc_p, struct type *type)
-{
-  return (TYPE_LENGTH (type) > 8);
-}
-
 
 /* BREAKPOINT */
 #define M32R_BE_BREAKPOINT32 {0x10, 0xf1, 0x70, 0x00}
@@ -266,19 +253,6 @@ m32r_store_return_value (struct type *type, struct regcache *regcache,
     }
 }
 
-/* Extract from an array REGBUF containing the (raw) register state
-   the address in which a function should return its structure value,
-   as a CORE_ADDR (or an expression that can be used as one).  */
-
-static CORE_ADDR
-m32r_extract_struct_value_address (struct regcache *regcache)
-{
-  ULONGEST addr;
-  regcache_cooked_read_unsigned (regcache, ARG1_REGNUM, &addr);
-  return addr;
-}
-
-
 /* This is required by skip_prologue. The results of decoding a prologue
    should be cached because this thrashing is getting nuts.  */
 
@@ -781,6 +755,24 @@ m32r_extract_return_value (struct type *type, struct regcache *regcache,
     }
 }
 
+enum return_value_convention
+m32r_return_value (struct gdbarch *gdbarch, struct type *valtype,
+                  struct regcache *regcache, void *readbuf,
+                  const void *writebuf)
+{
+  if (TYPE_LENGTH (valtype) > 8)
+    return RETURN_VALUE_STRUCT_CONVENTION;
+  else
+    {
+      if (readbuf != NULL)
+       m32r_extract_return_value (valtype, regcache, readbuf);
+      if (writebuf != NULL)
+       m32r_store_return_value (valtype, regcache, writebuf);
+      return RETURN_VALUE_REGISTER_CONVENTION;
+    }
+}
+
+
 
 static CORE_ADDR
 m32r_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
@@ -900,13 +892,8 @@ m32r_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   set_gdbarch_register_name (gdbarch, m32r_register_name);
   set_gdbarch_register_type (gdbarch, m32r_register_type);
 
-  set_gdbarch_extract_return_value (gdbarch, m32r_extract_return_value);
   set_gdbarch_push_dummy_call (gdbarch, m32r_push_dummy_call);
-  set_gdbarch_store_return_value (gdbarch, m32r_store_return_value);
-  set_gdbarch_deprecated_extract_struct_value_address (gdbarch,
-                                                      m32r_extract_struct_value_address);
-  set_gdbarch_deprecated_use_struct_convention (gdbarch,
-                                               m32r_use_struct_convention);
+  set_gdbarch_return_value (gdbarch, m32r_return_value);
 
   set_gdbarch_skip_prologue (gdbarch, m32r_skip_prologue);
   set_gdbarch_inner_than (gdbarch, core_addr_lessthan);