summaryrefslogtreecommitdiff
path: root/gdb/gdbarch.sh
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2004-01-26 20:52:13 +0000
committerAndrew Cagney <cagney@redhat.com>2004-01-26 20:52:13 +0000
commit551c381532adebda534d22eeeb290e65e0a5268d (patch)
treed4182fad453d11daf7b6c315c13f5343a9bca026 /gdb/gdbarch.sh
parentb84f4ee1174249cc590fd4a97f6c69bcd017b6d8 (diff)
downloadgdb-551c381532adebda534d22eeeb290e65e0a5268d.tar.gz
2004-01-26 Andrew Cagney <cagney@redhat.com>
* gdbarch.sh (EXTRACT_STRUCT_VALUE_ADDRESS): Deprecate. Add comments mentioning extract_returned_value_address. * infcmd.c (print_return_value): Update. Add comments on extract_returned_value_address. * stack.c (return_command): Add comments on extract_returned_value_address. * values.c: Update comment. * m32r-tdep.c: Update comment. * sparc-tdep.c: Update comment. * ia64-tdep.c (ia64_use_struct_convention): Update comment. * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. * sh64-tdep.c (sh64_gdbarch_init): Update. * sh-tdep.c (sh_gdbarch_init): Update. * s390-tdep.c (s390_gdbarch_init): Update. * rs6000-tdep.c (rs6000_gdbarch_init): Update. * m68klinux-tdep.c (m68k_linux_init_abi): Update. * m68k-tdep.c (m68k_gdbarch_init): Update. * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. * m32r-tdep.c (m32r_gdbarch_init): Update. * ia64-tdep.c (ia64_gdbarch_init): Update. * h8300-tdep.c (h8300_gdbarch_init): Update. * frv-tdep.c (frv_gdbarch_init): Update. * arm-tdep.c (arm_gdbarch_init): Update. * alpha-tdep.c (alpha_gdbarch_init): Update. Index: doc/ChangeLog 2004-01-26 Andrew Cagney <cagney@redhat.com> * gdbint.texinfo (Target Architecture Definition): Rename EXTRACT_STRUCT_VALUE_ADDRESS to DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS.
Diffstat (limited to 'gdb/gdbarch.sh')
-rwxr-xr-xgdb/gdbarch.sh29
1 files changed, 22 insertions, 7 deletions
diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh
index 1801e8fb662..db7588b2071 100755
--- a/gdb/gdbarch.sh
+++ b/gdb/gdbarch.sh
@@ -606,11 +606,7 @@ M:::enum return_value_convention:return_value:struct type *valtype, struct regca
# The deprecated methods RETURN_VALUE_ON_STACK, EXTRACT_RETURN_VALUE,
# STORE_RETURN_VALUE and USE_STRUCT_CONVENTION have all been folded
-# into RETURN_VALUE. For the moment do not try to fold in
-# EXTRACT_STRUCT_VALUE_ADDRESS as, dependant on the ABI, the debug
-# info, and the level of effort, it may well be possible to find the
-# address of a structure being return on the stack. Someone else can
-# make that change.
+# into RETURN_VALUE.
f:2:RETURN_VALUE_ON_STACK:int:return_value_on_stack:struct type *type:type:::generic_return_value_on_stack_not::0
f:2:EXTRACT_RETURN_VALUE:void:extract_return_value:struct type *type, struct regcache *regcache, void *valbuf:type, regcache, valbuf:::legacy_extract_return_value::0
@@ -619,8 +615,27 @@ f:2:DEPRECATED_EXTRACT_RETURN_VALUE:void:deprecated_extract_return_value:struct
f:2:DEPRECATED_STORE_RETURN_VALUE:void:deprecated_store_return_value:struct type *type, char *valbuf:type, valbuf
f:2:USE_STRUCT_CONVENTION:int:use_struct_convention:int gcc_p, struct type *value_type:gcc_p, value_type:::generic_use_struct_convention::0
-F:2:EXTRACT_STRUCT_VALUE_ADDRESS:CORE_ADDR:extract_struct_value_address:struct regcache *regcache:regcache
-#
+# As of 2004-01-17 only the 32-bit SPARC ABI has been identified as an
+# ABI suitable for the implementation of a robust extract
+# struct-convention return-value address method (the sparc saves the
+# address in the callers frame). All the other cases so far examined,
+# the DEPRECATED_EXTRACT_STRUCT_VALUE implementation has been
+# erreneous - the code was incorrectly assuming that the return-value
+# address, stored in a register, was preserved across the entire
+# function call.
+
+# For the moment retain DEPRECATED_EXTRACT_STRUCT_VALUE as a marker of
+# the ABIs that are still to be analyzed - perhaps this should simply
+# be deleted. The commented out extract_returned_value_address method
+# is provided as a starting point for the 32-bit SPARC. It, or
+# something like it, along with changes to both infcmd.c and stack.c
+# will be needed for that case to work. NB: It is passed the callers
+# frame since it is only after the callee has returned that this
+# function is used.
+
+#M:::CORE_ADDR:extract_returned_value_address:struct frame_info *caller_frame:caller_frame
+F:2:DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS:CORE_ADDR:deprecated_extract_struct_value_address:struct regcache *regcache:regcache
+
F:2:DEPRECATED_FRAME_INIT_SAVED_REGS:void:deprecated_frame_init_saved_regs:struct frame_info *frame:frame
F:2:DEPRECATED_INIT_EXTRA_FRAME_INFO:void:deprecated_init_extra_frame_info:int fromleaf, struct frame_info *frame:fromleaf, frame
#