This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[obish] Don't define extract_struct_value_address when return_value
- From: Andrew Cagney <cagney at gnu dot org>
- To: gdb-patches at sources dot redhat dot com
- Date: Sat, 17 Jan 2004 17:44:12 -0500
- Subject: [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);