aboutsummaryrefslogtreecommitdiff
path: root/gdb/values.c
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2003-10-02 04:40:58 +0000
committerAndrew Cagney <cagney@redhat.com>2003-10-02 04:40:58 +0000
commit5fe830e4fe7e59c595fac7082edb4954e17a7688 (patch)
tree55f991d8a7cf010be108660dd195484028959b29 /gdb/values.c
parentd810ef463692eb22404564fffbcbbafe0adc7891 (diff)
downloadfsf-binutils-gdb-5fe830e4fe7e59c595fac7082edb4954e17a7688.zip
fsf-binutils-gdb-5fe830e4fe7e59c595fac7082edb4954e17a7688.tar.gz
fsf-binutils-gdb-5fe830e4fe7e59c595fac7082edb4954e17a7688.tar.bz2
2003-10-01 Andrew Cagney <cagney@redhat.com>
* value.h (register_value_being_returned): Declare. Replace "value_being_returned". * infcall.c (call_function_by_hand): Use register_value_being_returned. * infcmd.c (print_return_value): Call "register_value_being_returned", handle struct return locally. * values.c (register_value_being_returned): New function. Replace "value_being_returned".
Diffstat (limited to 'gdb/values.c')
-rw-r--r--gdb/values.c61
1 files changed, 13 insertions, 48 deletions
diff --git a/gdb/values.c b/gdb/values.c
index 3d32383..3b1bca8 100644
--- a/gdb/values.c
+++ b/gdb/values.c
@@ -1202,60 +1202,25 @@ value_from_double (struct type *type, DOUBLEST num)
return val;
}
-/* Deal with the value that is "about to be returned". */
-
-/* Return the value that a function returning now
- would be returning to its caller, assuming its type is VALTYPE.
- RETBUF is where we look for what ought to be the contents
- of the registers (in raw form). This is because it is often
- desirable to restore old values to those registers
- after saving the contents of interest, and then call
- this function using the saved values.
- struct_return is non-zero when the function in question is
- using the structure return conventions on the machine in question;
- 0 when it is using the value returning conventions (this often
- means returning pointer to where structure is vs. returning value). */
-
-/* FIXME: cagney/2003-09-27: Should move the "struct return
- convention" code to the only call site in print_return_value that
- needs it. This function can then be renamed to
- "register_value_being_returned" and with the "struct_return"
- parameter dropped. */
+/* Deal with the value that is "about to be returned".
+
+ Return the value that a function, using the register convention,
+ returning now would be returning to its caller, assuming its type
+ is VALTYPE. RETBUF is where we look for what ought to be the
+ contents of the registers (in raw form). This is because it is
+ often desirable to restore old values to those registers after
+ saving the contents of interest, and then call this function using
+ the saved values. */
struct value *
-value_being_returned (struct type *valtype, struct regcache *retbuf,
- int struct_return)
+register_value_being_returned (struct type *valtype, struct regcache *retbuf)
{
- struct value *val;
- CORE_ADDR addr;
-
- /* If this is not defined, just use EXTRACT_RETURN_VALUE instead. */
- if (EXTRACT_STRUCT_VALUE_ADDRESS_P ())
- if (struct_return)
- {
- addr = EXTRACT_STRUCT_VALUE_ADDRESS (retbuf);
- if (!addr)
- error ("Function return value unknown.");
- return value_at (valtype, addr, NULL);
- }
-
- /* If this is not defined, just use EXTRACT_RETURN_VALUE instead. */
- if (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P ())
- if (struct_return)
- {
- char *buf = deprecated_grub_regcache_for_registers (retbuf);
- addr = DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS (buf);
- if (!addr)
- error ("Function return value unknown.");
- return value_at (valtype, addr, NULL);
- }
-
- val = allocate_value (valtype);
+ struct value *val = allocate_value (valtype);
CHECK_TYPEDEF (valtype);
- /* If the function returns void, don't bother fetching the return value. */
+ /* If the function returns void, don't bother fetching the return
+ value. */
if (TYPE_CODE (valtype) != TYPE_CODE_VOID)
EXTRACT_RETURN_VALUE (valtype, retbuf, VALUE_CONTENTS_RAW (val));
-
return val;
}