diff options
author | Andrew Cagney <cagney@redhat.com> | 2003-10-02 04:40:58 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2003-10-02 04:40:58 +0000 |
commit | 5fe830e4fe7e59c595fac7082edb4954e17a7688 (patch) | |
tree | 55f991d8a7cf010be108660dd195484028959b29 /gdb/values.c | |
parent | d810ef463692eb22404564fffbcbbafe0adc7891 (diff) | |
download | fsf-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.c | 61 |
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; } |