aboutsummaryrefslogtreecommitdiff
path: root/gdb/arch-utils.c
diff options
context:
space:
mode:
authorJim Blandy <jimb@codesourcery.com>2001-11-29 22:24:42 +0000
committerJim Blandy <jimb@codesourcery.com>2001-11-29 22:24:42 +0000
commitc8f9d51ce2e3eb695d8539d5615d0831ff906b3b (patch)
tree341cf684c7d00a33aa95ff2226760e85cb8a5af1 /gdb/arch-utils.c
parentaf667503bbcea170ccc0c5d98894ea9edb074567 (diff)
downloadgdb-c8f9d51ce2e3eb695d8539d5615d0831ff906b3b.zip
gdb-c8f9d51ce2e3eb695d8539d5615d0831ff906b3b.tar.gz
gdb-c8f9d51ce2e3eb695d8539d5615d0831ff906b3b.tar.bz2
Tighten up GDB's support for returning structs by value.
* s390-tdep.c (s390_use_struct_convention): New function. (s390_gdbarch_init): Register it as the S/390's USE_STRUCT_CONVENTION method. Register generic_cannot_extract_struct_value_address as our EXTRACT_STRUCT_VALUE_ADDRESS method. * arch-utils.c (generic_cannot_extract_struct_value_address): New function. * arch-utils.h: Add corresponding prototype.
Diffstat (limited to 'gdb/arch-utils.c')
-rw-r--r--gdb/arch-utils.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/gdb/arch-utils.c b/gdb/arch-utils.c
index 0dab00c..2b23951 100644
--- a/gdb/arch-utils.c
+++ b/gdb/arch-utils.c
@@ -240,6 +240,21 @@ generic_register_convertible_not (int num)
}
+/* Under some ABI's that specify the `struct convention' for returning
+ structures by value, by the time we've returned from the function,
+ the return value is sitting there in the caller's buffer, but GDB
+ has no way to find the address of that buffer.
+
+ On such architectures, use this function as your
+ extract_struct_value_address method. When asked to a struct
+ returned by value in this fashion, GDB will print a nice error
+ message, instead of garbage. */
+CORE_ADDR
+generic_cannot_extract_struct_value_address (char *dummy)
+{
+ return 0;
+}
+
int
default_register_sim_regno (int num)
{