This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[obish] Don't define extract_struct_value_address when return_value


Hello,

Ref: [RFC] Struct return values
http://sources.redhat.com/ml/gdb/2004-01/msg00123.html

For an architecture that implements the new return_value method, GDB's core code never calls the old extract_struct_value_address - supplying that method is redundant. Once you realise this, removing this dead code becomes "pretty obvious" :-)

In the case of 32-bit SPARC, as that discussin thread identified, it is going to be possible to find the address of a struct-convention return-value but doing it will require other changes ("return" needs to be significantly changed). Consequently, for that architecture, I've left retained method but disabled it.

Andrew
2004-01-17  Andrew Cagney  <cagney@redhat.com>

	* x86-64-tdep.c (x86_64_init_abi): No need to clear
	extract_struct_value_address, i386 does not set it.
	* sparc64-tdep.c (sparc64_init_abi): Do not set
	extract_struct_value_address, never called.
	(sparc64_extract_struct_value_address): Delete function.
	* m68hc11-tdep.c: Update copyright.
	(m68hc11_gdbarch_init): Delete redundant assignment of
	extract_struct_value_address.
	* i386-tdep.c: Update copyright.
	(i386_gdbarch_init): Do not set extract_struct_value_address,
	never called.
	(i386_extract_struct_value_address): Delete function.
	* sparc-tdep.c (sparc32_gdbarch_init): Do not set
	extract_struct_value_address, never called.
	(sparc32_extract_struct_value_address): #if 0 function.

Index: i386-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/i386-tdep.c,v
retrieving revision 1.179
diff -u -r1.179 i386-tdep.c
--- i386-tdep.c	13 Jan 2004 21:38:46 -0000	1.179
+++ i386-tdep.c	17 Jan 2004 21:53:45 -0000
@@ -1,7 +1,8 @@
 /* Intel 386 target-dependent stuff.
 
    Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
-   1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+   1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+   Foundation, Inc.
 
    This file is part of GDB.
 
@@ -1274,19 +1275,6 @@
 
 #undef I387_ST0_REGNUM
 }
-
-/* Extract from REGCACHE, which contains the (raw) register state, the
-   address in which a function should return its structure value, as a
-   CORE_ADDR.  */
-
-static CORE_ADDR
-i386_extract_struct_value_address (struct regcache *regcache)
-{
-  char buf[4];
-
-  regcache_cooked_read (regcache, I386_EAX_REGNUM, buf);
-  return extract_unsigned_integer (buf, 4);
-}
 
 
 /* This is the variable that is set with "set struct-convention", and
@@ -1995,8 +1983,6 @@
   set_gdbarch_value_to_register (gdbarch, i386_value_to_register);
 
   set_gdbarch_return_value (gdbarch, i386_return_value);
-  set_gdbarch_extract_struct_value_address (gdbarch,
-					    i386_extract_struct_value_address);
 
   set_gdbarch_skip_prologue (gdbarch, i386_skip_prologue);
 
Index: m68hc11-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/m68hc11-tdep.c,v
retrieving revision 1.95
diff -u -r1.95 m68hc11-tdep.c
--- m68hc11-tdep.c	17 Jan 2004 15:34:12 -0000	1.95
+++ m68hc11-tdep.c	17 Jan 2004 21:53:52 -0000
@@ -1,5 +1,8 @@
 /* Target-dependent code for Motorola 68HC11 & 68HC12
-   Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+   Copyright 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+   Foundation, Inc.
+
    Contributed by Stephane Carrez, stcarrez@nerim.fr
 
 This file is part of GDB.
@@ -1549,8 +1552,6 @@
   set_gdbarch_return_value_on_stack (gdbarch, m68hc11_return_value_on_stack);
 
   set_gdbarch_store_return_value (gdbarch, m68hc11_store_return_value);
-  set_gdbarch_extract_struct_value_address (gdbarch, m68hc11_extract_struct_value_address);
-
   set_gdbarch_store_return_value (gdbarch, m68hc11_store_return_value);
   set_gdbarch_extract_struct_value_address (gdbarch, m68hc11_extract_struct_value_address);
   set_gdbarch_use_struct_convention (gdbarch, m68hc11_use_struct_convention);
Index: sparc-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sparc-tdep.c,v
retrieving revision 1.141
diff -u -r1.141 sparc-tdep.c
--- sparc-tdep.c	17 Jan 2004 15:34:12 -0000	1.141
+++ sparc-tdep.c	17 Jan 2004 21:53:57 -0000
@@ -834,6 +834,7 @@
   return RETURN_VALUE_REGISTER_CONVENTION;
 }
 
+#if 0
 /* Extract from REGCACHE, which contains the (raw) register state, the
    address in which a function should return its structure value, as a
    CORE_ADDR.  */
@@ -846,6 +847,7 @@
   regcache_cooked_read_unsigned (regcache, SPARC_SP_REGNUM, &sp);
   return read_memory_unsigned_integer (sp + 64, 4);
 }
+#endif
 
 static int
 sparc32_stabs_argument_has_addr (struct gdbarch *gdbarch, struct type *type)
@@ -1069,8 +1071,6 @@
   set_gdbarch_push_dummy_call (gdbarch, sparc32_push_dummy_call);
 
   set_gdbarch_return_value (gdbarch, sparc32_return_value);
-  set_gdbarch_extract_struct_value_address
-    (gdbarch, sparc32_extract_struct_value_address);
   set_gdbarch_stabs_argument_has_addr
     (gdbarch, sparc32_stabs_argument_has_addr);
 
Index: sparc64-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sparc64-tdep.c,v
retrieving revision 1.9
diff -u -r1.9 sparc64-tdep.c
--- sparc64-tdep.c	11 Jan 2004 20:47:53 -0000	1.9
+++ sparc64-tdep.c	17 Jan 2004 21:54:00 -0000
@@ -1086,19 +1086,6 @@
 
   return RETURN_VALUE_REGISTER_CONVENTION;
 }
-
-/* Extract from REGCACHE, which contains the (raw) register state, the
-   address in which a function should return its structure value, as a
-   CORE_ADDR.  */
-
-static CORE_ADDR
-sparc64_extract_struct_value_address (struct regcache *regcache)
-{
-  ULONGEST addr;
-
-  regcache_cooked_read_unsigned (regcache, SPARC_O0_REGNUM, &addr);
-  return addr;
-}
 
 
 void
@@ -1130,8 +1117,6 @@
   set_gdbarch_push_dummy_call (gdbarch, sparc64_push_dummy_call);
 
   set_gdbarch_return_value (gdbarch, sparc64_return_value);
-  set_gdbarch_extract_struct_value_address
-    (gdbarch, sparc64_extract_struct_value_address);
   set_gdbarch_stabs_argument_has_addr
     (gdbarch, default_stabs_argument_has_addr);
 
Index: x86-64-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/x86-64-tdep.c,v
retrieving revision 1.111
diff -u -r1.111 x86-64-tdep.c
--- x86-64-tdep.c	10 Jan 2004 17:58:30 -0000	1.111
+++ x86-64-tdep.c	17 Jan 2004 21:54:01 -0000
@@ -1109,8 +1109,6 @@
   set_gdbarch_value_to_register (gdbarch, i387_value_to_register);
 
   set_gdbarch_return_value (gdbarch, amd64_return_value);
-  /* Override, since this is handled by amd64_extract_return_value.  */
-  set_gdbarch_extract_struct_value_address (gdbarch, NULL);
 
   set_gdbarch_skip_prologue (gdbarch, amd64_skip_prologue);
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]