* valops.c (value_assign): Set `type' after coercing toval.

* c-valprint.c (c_val_print), ch-valprint.c (chill_val_print):
	Use extract_unsigned_integer to get the address of a reference.
This commit is contained in:
Peter Schauer 1994-01-25 21:03:56 +00:00
parent 8638431e66
commit 67e9b3b31b
4 changed files with 34 additions and 18 deletions

View File

@ -1,3 +1,9 @@
Tue Jan 25 12:58:26 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
* valops.c (value_assign): Set `type' after coercing toval.
* c-valprint.c (c_val_print), ch-valprint.c (chill_val_print):
Use extract_unsigned_integer to get the address of a reference.
Tue Jan 25 11:31:53 1994 Jim Kingdon (kingdon@lioth.cygnus.com) Tue Jan 25 11:31:53 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
* stabsread.c (STABS_CONTINUE, error_type), partial-stab.h: * stabsread.c (STABS_CONTINUE, error_type), partial-stab.h:
@ -35,7 +41,7 @@ Sat Jan 22 17:08:48 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
Sat Jan 22 20:25:11 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) Sat Jan 22 20:25:11 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
* mips-tdep.c (init_extra_frame_info): Use frame relative stack * mips-tdep.c (init_extra_frame_info): Use frame relative stack
pointer value when fixing up the frame at the start of a function pointer value when fixing up the frame at the start of a function.
Sat Jan 22 12:29:13 1994 Stu Grossman (grossman at cygnus.com) Sat Jan 22 12:29:13 1994 Stu Grossman (grossman at cygnus.com)

View File

@ -1,5 +1,6 @@
/* Support for printing C values for GDB, the GNU debugger. /* Support for printing C values for GDB, the GNU debugger.
Copyright 1986, 1988, 1989, 1991 Free Software Foundation, Inc. Copyright 1986, 1988, 1989, 1991, 1992, 1993, 1994
Free Software Foundation, Inc.
This file is part of GDB. This file is part of GDB.
@ -251,7 +252,8 @@ c_val_print (type, valaddr, address, stream, format, deref_ref, recurse,
if (addressprint) if (addressprint)
{ {
fprintf_filtered (stream, "@0x%lx", fprintf_filtered (stream, "@0x%lx",
unpack_long (builtin_type_int, valaddr)); extract_unsigned_integer (valaddr,
TARGET_PTR_BIT / HOST_CHAR_BIT));
if (deref_ref) if (deref_ref)
fputs_filtered (": ", stream); fputs_filtered (": ", stream);
} }

View File

@ -1,5 +1,6 @@
/* Support for printing Chill values for GDB, the GNU debugger. /* Support for printing Chill values for GDB, the GNU debugger.
Copyright 1986, 1988, 1989, 1991 Free Software Foundation, Inc. Copyright 1986, 1988, 1989, 1991, 1992, 1993, 1994
Free Software Foundation, Inc.
This file is part of GDB. This file is part of GDB.
@ -265,7 +266,8 @@ chill_val_print (type, valaddr, address, stream, format, deref_ref, recurse,
if (addressprint) if (addressprint)
{ {
fprintf_filtered (stream, "LOC(H'%lx)", fprintf_filtered (stream, "LOC(H'%lx)",
unpack_long (builtin_type_int, valaddr)); extract_unsigned_integer (valaddr,
TARGET_PTR_BIT / HOST_CHAR_BIT));
if (deref_ref) if (deref_ref)
fputs_filtered (": ", stream); fputs_filtered (": ", stream);
} }

View File

@ -1,5 +1,6 @@
/* Perform non-arithmetic operations on values, for GDB. /* Perform non-arithmetic operations on values, for GDB.
Copyright 1986, 1987, 1989, 1991, 1992 Free Software Foundation, Inc. Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994
Free Software Foundation, Inc.
This file is part of GDB. This file is part of GDB.
@ -283,7 +284,7 @@ value
value_assign (toval, fromval) value_assign (toval, fromval)
register value toval, fromval; register value toval, fromval;
{ {
register struct type *type = VALUE_TYPE (toval); register struct type *type;
register value val; register value val;
char raw_buffer[MAX_REGISTER_RAW_SIZE]; char raw_buffer[MAX_REGISTER_RAW_SIZE];
int use_buffer = 0; int use_buffer = 0;
@ -291,6 +292,7 @@ value_assign (toval, fromval)
COERCE_ARRAY (fromval); COERCE_ARRAY (fromval);
COERCE_REF (toval); COERCE_REF (toval);
type = VALUE_TYPE (toval);
if (VALUE_LVAL (toval) != lval_internalvar) if (VALUE_LVAL (toval) != lval_internalvar)
fromval = value_cast (type, fromval); fromval = value_cast (type, fromval);
@ -683,9 +685,9 @@ value_ind (arg1)
CORE_ADDR CORE_ADDR
push_word (sp, word) push_word (sp, word)
CORE_ADDR sp; CORE_ADDR sp;
REGISTER_TYPE word; unsigned LONGEST word;
{ {
register int len = sizeof (REGISTER_TYPE); register int len = REGISTER_SIZE;
char buffer[MAX_REGISTER_RAW_SIZE]; char buffer[MAX_REGISTER_RAW_SIZE];
store_unsigned_integer (buffer, len, word); store_unsigned_integer (buffer, len, word);
@ -865,11 +867,12 @@ call_function_by_hand (function, nargs, args)
register CORE_ADDR sp; register CORE_ADDR sp;
register int i; register int i;
CORE_ADDR start_sp; CORE_ADDR start_sp;
/* CALL_DUMMY is an array of words (REGISTER_TYPE), but each word /* CALL_DUMMY is an array of words (REGISTER_SIZE), but each word
is in host byte order. It is switched to target byte order before calling is in host byte order. Before calling FIX_CALL_DUMMY, we byteswap it
FIX_CALL_DUMMY. */ and remove any extra bytes which might exist because unsigned LONGEST is
static REGISTER_TYPE dummy[] = CALL_DUMMY; bigger than REGISTER_SIZE. */
REGISTER_TYPE dummy1[sizeof dummy / sizeof (REGISTER_TYPE)]; static unsigned LONGEST dummy[] = CALL_DUMMY;
char dummy1[REGISTER_SIZE * sizeof dummy / sizeof (unsigned LONGEST)];
CORE_ADDR old_sp; CORE_ADDR old_sp;
struct type *value_type; struct type *value_type;
unsigned char struct_return; unsigned char struct_return;
@ -917,8 +920,9 @@ call_function_by_hand (function, nargs, args)
/* Create a call sequence customized for this function /* Create a call sequence customized for this function
and the number of arguments for it. */ and the number of arguments for it. */
for (i = 0; i < sizeof dummy / sizeof (REGISTER_TYPE); i++) for (i = 0; i < sizeof dummy / sizeof (dummy[0]); i++)
store_unsigned_integer (&dummy1[i], sizeof (REGISTER_TYPE), store_unsigned_integer (&dummy1[i * REGISTER_SIZE],
REGISTER_SIZE,
(unsigned LONGEST)dummy[i]); (unsigned LONGEST)dummy[i]);
#ifdef GDB_TARGET_IS_HPPA #ifdef GDB_TARGET_IS_HPPA
@ -1408,7 +1412,7 @@ search_struct_method (name, arg1p, args, offset, static_memfuncp, type)
{ {
int i; int i;
value v; value v;
static int name_matched = 0; int name_matched = 0;
char dem_opname[64]; char dem_opname[64];
check_stub_type (type); check_stub_type (type);
@ -1550,7 +1554,9 @@ value_struct_elt (argp, args, name, static_memfuncp, err)
v = search_struct_method (name, argp, args, 0, static_memfuncp, t); v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
if (v == 0 || v == (value) -1) if (v == (value) -1)
error ("Cannot take address of a method");
else if (v == 0)
{ {
if (TYPE_NFN_FIELDS (t)) if (TYPE_NFN_FIELDS (t))
error ("There is no member or method named %s.", name); error ("There is no member or method named %s.", name);