From 4e7d75111e767a216cd9230c1ce8f45f3874d133 Mon Sep 17 00:00:00 2001 From: Michael Snyder Date: Thu, 31 Jul 2003 23:41:25 +0000 Subject: [PATCH] 2003-07-31 Michael Snyder * value.h, values.c, infcall.c, infcmd.c: Revert 07-30 change, which is already covered by the new frames infrastructure. --- gdb/ChangeLog | 7 ++++++- gdb/infcall.c | 6 ++---- gdb/infcmd.c | 18 +++++++----------- gdb/value.h | 3 +-- gdb/values.c | 47 +++++++++++++++++++++-------------------------- 5 files changed, 37 insertions(+), 44 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 6765475a619..536f34f5e96 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2003-07-31 Michael Snyder + + * value.h, values.c, infcall.c, infcmd.c: Revert 07-30 change, + which is already covered by the new frames infrastructure. + 2003-07-31 Andrew Cagney * user-regs.c (struct user_reg): Add "next" link. @@ -21,7 +26,7 @@ 2003-07-30 Michael Snyder - * structs.h (value_being_returned): Add a struct_addr argument. + * value.h (value_being_returned): Add a struct_addr argument. * infcall.c (call_function_by_hand): Pass struct_addr to value_being_returned. * infcmd.c (print_return_value): Pass zero as struct_addr. diff --git a/gdb/infcall.c b/gdb/infcall.c index b00785c119a..4fd97ae5652 100644 --- a/gdb/infcall.c +++ b/gdb/infcall.c @@ -1056,10 +1056,8 @@ the function call).", name); } else { - struct value *retval = value_being_returned (value_type, - retbuf, - struct_return, - struct_addr); + struct value *retval = value_being_returned (value_type, retbuf, + struct_return); do_cleanups (retbuf_cleanup); return retval; } diff --git a/gdb/infcmd.c b/gdb/infcmd.c index c47c9eac876..df7d9508cca 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -1077,11 +1077,10 @@ print_return_value (int structure_return, struct type *value_type) if (!structure_return) { - value = value_being_returned (value_type, stop_registers, 0, 0); + value = value_being_returned (value_type, stop_registers, structure_return); stb = ui_out_stream_new (uiout); ui_out_text (uiout, "Value returned is "); - ui_out_field_fmt (uiout, "gdb-result-var", "$%d", - record_latest_value (value)); + ui_out_field_fmt (uiout, "gdb-result-var", "$%d", record_latest_value (value)); ui_out_text (uiout, " = "); value_print (value, stb->stream, 0, Val_no_prettyprint); ui_out_field_stream (uiout, "return-value", stb); @@ -1089,23 +1088,20 @@ print_return_value (int structure_return, struct type *value_type) } else { + /* We cannot determine the contents of the structure because + it is on the stack, and we don't know where, since we did not + initiate the call, as opposed to the call_function_by_hand case */ #ifdef VALUE_RETURNED_FROM_STACK - /* We cannot determine the contents of the structure because it - is on the stack, and we don't know where, since we did not - initiate the call, as opposed to the call_function_by_hand - case. */ value = 0; ui_out_text (uiout, "Value returned has type: "); ui_out_field_string (uiout, "return-type", TYPE_NAME (value_type)); ui_out_text (uiout, "."); ui_out_text (uiout, " Cannot determine contents\n"); #else - value = value_being_returned (value_type, stop_registers, - structure_return, 0); + value = value_being_returned (value_type, stop_registers, structure_return); stb = ui_out_stream_new (uiout); ui_out_text (uiout, "Value returned is "); - ui_out_field_fmt (uiout, "gdb-result-var", "$%d", - record_latest_value (value)); + ui_out_field_fmt (uiout, "gdb-result-var", "$%d", record_latest_value (value)); ui_out_text (uiout, " = "); value_print (value, stb->stream, 0, Val_no_prettyprint); ui_out_field_stream (uiout, "return-value", stb); diff --git a/gdb/value.h b/gdb/value.h index 77d9d3955f8..d50626edf17 100644 --- a/gdb/value.h +++ b/gdb/value.h @@ -420,8 +420,7 @@ extern struct value *value_subscript (struct value *array, struct value *idx); extern struct value *value_being_returned (struct type *valtype, struct regcache *retbuf, - int struct_return, - CORE_ADDR struct_addr); + int struct_return); extern struct value *value_in (struct value *element, struct value *set); diff --git a/gdb/values.c b/gdb/values.c index 7e7e9b15534..42395c886e2 100644 --- a/gdb/values.c +++ b/gdb/values.c @@ -1212,36 +1212,31 @@ value_from_double (struct type *type, DOUBLEST num) /* ARGSUSED */ struct value * value_being_returned (struct type *valtype, struct regcache *retbuf, - int struct_return, CORE_ADDR struct_addr) + int struct_return) { struct value *val; CORE_ADDR addr; - if (struct_return) - { - if (struct_addr != 0) - { - /* Struct return addr supplied by hand_function_call. */ - return value_at (valtype, struct_addr, NULL); - } - /* If one of these is not defined, just use EXTRACT_RETURN_VALUE - instead. */ - else if (EXTRACT_STRUCT_VALUE_ADDRESS_P ()) - { - addr = EXTRACT_STRUCT_VALUE_ADDRESS (retbuf); - if (!addr) - error ("Function return value unknown."); - return value_at (valtype, addr, NULL); - } - else if (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P ()) - { - 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); - } - } + /* 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); CHECK_TYPEDEF (valtype); -- 2.30.2