+Thu Mar 28 06:51:26 1996 Fred Fish <fnf@cygnus.com>
+
+ * valops.c (value_assign): Make copy of internal variable value
+ before returning it as a new value, since it is owned by the
+ internal variable and will be freed along with it.
+
Wed Mar 27 08:36:17 1996 Jeffrey A Law (law@cygnus.com)
* From Peter Schauer.
#include <errno.h>
#include "gdb_string.h"
+/* Default to coercing float to double in function calls only when there is
+ no prototype. Otherwise on targets where the debug information is incorrect
+ for either the prototype or non-prototype case, we can force it by defining
+ COERCE_FLOAT_TO_DOUBLE in the target configuration file. */
+
+#ifndef COERCE_FLOAT_TO_DOUBLE
+#define COERCE_FLOAT_TO_DOUBLE (param_type == NULL)
+#endif
+
/* Local functions. */
static int typecmp PARAMS ((int staticp, struct type *t1[], value_ptr t2[]));
{
case lval_internalvar:
set_internalvar (VALUE_INTERNALVAR (toval), fromval);
- return VALUE_INTERNALVAR (toval)->value;
+ return value_copy (VALUE_INTERNALVAR (toval)->value);
case lval_internalvar_component:
set_internalvar_component (VALUE_INTERNALVAR (toval),
break;
case TYPE_CODE_FLT:
/* coerce float to double, unless the function prototype specifies float */
-#if 0
- if (param_type == 0)
-#endif
+ if (COERCE_FLOAT_TO_DOUBLE)
{
if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_double))
type = builtin_type_double;