+2003-07-31 Michael Snyder <msnyder@redhat.com>
+
+ * 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 <cagney@redhat.com>
* user-regs.c (struct user_reg): Add "next" link.
2003-07-30 Michael Snyder <msnyder@redhat.com>
- * 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.
}
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;
}
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);
}
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);
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);
/* 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);