* sparc-tdep.c (sparc_extract_struct_value_address): Move
[deliverable/binutils-gdb.git] / gdb / valops.c
CommitLineData
bd5635a1 1/* Perform non-arithmetic operations on values, for GDB.
67e9b3b3
PS
2 Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994
3 Free Software Foundation, Inc.
bd5635a1
RP
4
5This file is part of GDB.
6
06b6c733 7This program is free software; you can redistribute it and/or modify
bd5635a1 8it under the terms of the GNU General Public License as published by
06b6c733
JG
9the Free Software Foundation; either version 2 of the License, or
10(at your option) any later version.
bd5635a1 11
06b6c733 12This program is distributed in the hope that it will be useful,
bd5635a1
RP
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
06b6c733
JG
18along with this program; if not, write to the Free Software
19Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
bd5635a1 20
bd5635a1 21#include "defs.h"
bd5635a1 22#include "symtab.h"
01be6913 23#include "gdbtypes.h"
bd5635a1
RP
24#include "value.h"
25#include "frame.h"
26#include "inferior.h"
27#include "gdbcore.h"
28#include "target.h"
2e4964ad 29#include "demangle.h"
54023465 30#include "language.h"
bd5635a1
RP
31
32#include <errno.h>
6d34c236 33#include <string.h>
bd5635a1
RP
34
35/* Local functions. */
01be6913 36
a91a6192 37static int typecmp PARAMS ((int staticp, struct type *t1[], value_ptr t2[]));
01be6913 38
a91a6192 39static CORE_ADDR find_function_addr PARAMS ((value_ptr, struct type **));
01be6913 40
a91a6192 41static CORE_ADDR value_push PARAMS ((CORE_ADDR, value_ptr));
01be6913 42
a91a6192
SS
43static value_ptr search_struct_field PARAMS ((char *, value_ptr, int,
44 struct type *, int));
01be6913 45
a91a6192
SS
46static value_ptr search_struct_method PARAMS ((char *, value_ptr *,
47 value_ptr *,
48 int, int *, struct type *));
01be6913 49
a91a6192 50static int check_field_in PARAMS ((struct type *, const char *));
a163ddec 51
a91a6192 52static CORE_ADDR allocate_space_in_inferior PARAMS ((int));
9ed8604f 53
5222ca60 54static value_ptr cast_into_complex PARAMS ((struct type *, value_ptr));
9ed8604f
PS
55
56#define VALUE_SUBSTRING_START(VAL) VALUE_FRAME(VAL)
57
bd5635a1 58\f
a163ddec
MT
59/* Allocate NBYTES of space in the inferior using the inferior's malloc
60 and return a value that is a pointer to the allocated space. */
61
62static CORE_ADDR
63allocate_space_in_inferior (len)
64 int len;
65{
a91a6192 66 register value_ptr val;
a163ddec
MT
67 register struct symbol *sym;
68 struct minimal_symbol *msymbol;
69 struct type *type;
a91a6192 70 value_ptr blocklen;
a163ddec
MT
71 LONGEST maddr;
72
73 /* Find the address of malloc in the inferior. */
74
75 sym = lookup_symbol ("malloc", 0, VAR_NAMESPACE, 0, NULL);
76 if (sym != NULL)
77 {
78 if (SYMBOL_CLASS (sym) != LOC_BLOCK)
79 {
80 error ("\"malloc\" exists in this program but is not a function.");
81 }
479fdd26 82 val = value_of_variable (sym, NULL);
a163ddec
MT
83 }
84 else
85 {
5222ca60 86 msymbol = lookup_minimal_symbol ("malloc", NULL, NULL);
a163ddec
MT
87 if (msymbol != NULL)
88 {
89 type = lookup_pointer_type (builtin_type_char);
90 type = lookup_function_type (type);
91 type = lookup_pointer_type (type);
92 maddr = (LONGEST) SYMBOL_VALUE_ADDRESS (msymbol);
93 val = value_from_longest (type, maddr);
94 }
95 else
96 {
97 error ("evaluation of this expression requires the program to have a function \"malloc\".");
98 }
99 }
100
101 blocklen = value_from_longest (builtin_type_int, (LONGEST) len);
102 val = call_function_by_hand (val, 1, &blocklen);
103 if (value_logical_not (val))
104 {
105 error ("No memory available to program.");
106 }
107 return (value_as_long (val));
108}
109
bd5635a1
RP
110/* Cast value ARG2 to type TYPE and return as a value.
111 More general than a C cast: accepts any two types of the same length,
112 and if ARG2 is an lvalue it can be cast into anything at all. */
54023465 113/* In C++, casts may change pointer or object representations. */
bd5635a1 114
a91a6192 115value_ptr
bd5635a1
RP
116value_cast (type, arg2)
117 struct type *type;
a91a6192 118 register value_ptr arg2;
bd5635a1
RP
119{
120 register enum type_code code1;
121 register enum type_code code2;
122 register int scalar;
123
f91a9e05
PB
124 if (VALUE_TYPE (arg2) == type)
125 return arg2;
126
bd5635a1
RP
127 /* Coerce arrays but not enums. Enums will work as-is
128 and coercing them would cause an infinite recursion. */
129 if (TYPE_CODE (VALUE_TYPE (arg2)) != TYPE_CODE_ENUM)
130 COERCE_ARRAY (arg2);
131
5222ca60
PB
132 COERCE_VARYING_ARRAY (arg2);
133
bd5635a1
RP
134 code1 = TYPE_CODE (type);
135 code2 = TYPE_CODE (VALUE_TYPE (arg2));
9ed8604f
PS
136
137 if (code1 == TYPE_CODE_COMPLEX)
5222ca60 138 return cast_into_complex (type, arg2);
9ed8604f
PS
139 if (code1 == TYPE_CODE_BOOL)
140 code1 = TYPE_CODE_INT;
141 if (code2 == TYPE_CODE_BOOL)
13ffa6be
JL
142 code2 = TYPE_CODE_INT;
143
144 /* A cast to an undetermined-length array_type, such as (TYPE [])OBJECT,
145 is treated like a cast to (TYPE [N])OBJECT,
146 where N is sizeof(OBJECT)/sizeof(TYPE). */
147 if (code1 == TYPE_CODE_ARRAY
148 && TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0
149 && TYPE_ARRAY_UPPER_BOUND_TYPE (type) == BOUND_CANNOT_BE_DETERMINED)
150 {
151 struct type *element_type = TYPE_TARGET_TYPE (type);
152 struct type *range_type = TYPE_INDEX_TYPE (type);
153 int low_bound = TYPE_LOW_BOUND (range_type);
154 int val_length = TYPE_LENGTH (VALUE_TYPE (arg2));
155 int new_length = val_length / TYPE_LENGTH (element_type);
156 if (val_length % TYPE_LENGTH (element_type) != 0)
157 warning("array element type size does not divide object size in cast");
158 range_type = create_range_type ((struct type *) NULL,
159 TYPE_TARGET_TYPE (range_type),
160 low_bound, new_length + low_bound - 1);
161 VALUE_TYPE (arg2) = create_array_type ((struct type *) NULL,
162 element_type, range_type);
163 return arg2;
164 }
9ed8604f 165
bd5635a1 166 scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
f91a9e05 167 || code2 == TYPE_CODE_ENUM || code2 == TYPE_CODE_RANGE);
bd5635a1 168
54023465
JK
169 if ( code1 == TYPE_CODE_STRUCT
170 && code2 == TYPE_CODE_STRUCT
171 && TYPE_NAME (type) != 0)
172 {
173 /* Look in the type of the source to see if it contains the
174 type of the target as a superclass. If so, we'll need to
175 offset the object in addition to changing its type. */
a91a6192
SS
176 value_ptr v = search_struct_field (type_name_no_tag (type),
177 arg2, 0, VALUE_TYPE (arg2), 1);
54023465
JK
178 if (v)
179 {
180 VALUE_TYPE (v) = type;
181 return v;
182 }
183 }
bd5635a1
RP
184 if (code1 == TYPE_CODE_FLT && scalar)
185 return value_from_double (type, value_as_double (arg2));
f91a9e05
PB
186 else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM
187 || code1 == TYPE_CODE_RANGE)
bd5635a1 188 && (scalar || code2 == TYPE_CODE_PTR))
06b6c733 189 return value_from_longest (type, value_as_long (arg2));
bd5635a1
RP
190 else if (TYPE_LENGTH (type) == TYPE_LENGTH (VALUE_TYPE (arg2)))
191 {
192 if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
193 {
194 /* Look in the type of the source to see if it contains the
195 type of the target as a superclass. If so, we'll need to
196 offset the pointer rather than just change its type. */
197 struct type *t1 = TYPE_TARGET_TYPE (type);
198 struct type *t2 = TYPE_TARGET_TYPE (VALUE_TYPE (arg2));
2a5ec41d 199 if ( TYPE_CODE (t1) == TYPE_CODE_STRUCT
bd5635a1
RP
200 && TYPE_CODE (t2) == TYPE_CODE_STRUCT
201 && TYPE_NAME (t1) != 0) /* if name unknown, can't have supercl */
202 {
a91a6192
SS
203 value_ptr v = search_struct_field (type_name_no_tag (t1),
204 value_ind (arg2), 0, t2, 1);
bd5635a1
RP
205 if (v)
206 {
207 v = value_addr (v);
208 VALUE_TYPE (v) = type;
209 return v;
210 }
211 }
212 /* No superclass found, just fall through to change ptr type. */
213 }
214 VALUE_TYPE (arg2) = type;
215 return arg2;
216 }
f91a9e05
PB
217 else if (chill_varying_type (type))
218 {
219 struct type *range1, *range2, *eltype1, *eltype2;
220 value_ptr val;
221 int count1, count2;
222 char *valaddr, *valaddr_data;
223 if (code2 == TYPE_CODE_BITSTRING)
224 error ("not implemented: converting bitstring to varying type");
225 if ((code2 != TYPE_CODE_ARRAY && code2 != TYPE_CODE_STRING)
226 || (eltype1 = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 1)),
227 eltype2 = TYPE_TARGET_TYPE (VALUE_TYPE (arg2)),
228 (TYPE_LENGTH (eltype1) != TYPE_LENGTH (eltype2)
229 /* || TYPE_CODE (eltype1) != TYPE_CODE (eltype2) */ )))
230 error ("Invalid conversion to varying type");
231 range1 = TYPE_FIELD_TYPE (TYPE_FIELD_TYPE (type, 1), 0);
232 range2 = TYPE_FIELD_TYPE (VALUE_TYPE (arg2), 0);
233 count1 = TYPE_HIGH_BOUND (range1) - TYPE_LOW_BOUND (range1) + 1;
234 count2 = TYPE_HIGH_BOUND (range2) - TYPE_LOW_BOUND (range2) + 1;
235 if (count2 > count1)
236 error ("target varying type is too small");
237 val = allocate_value (type);
238 valaddr = VALUE_CONTENTS_RAW (val);
239 valaddr_data = valaddr + TYPE_FIELD_BITPOS (type, 1) / 8;
240 /* Set val's __var_length field to count2. */
241 store_signed_integer (valaddr, TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0)),
242 count2);
243 /* Set the __var_data field to count2 elements copied from arg2. */
244 memcpy (valaddr_data, VALUE_CONTENTS (arg2),
245 count2 * TYPE_LENGTH (eltype2));
246 /* Zero the rest of the __var_data field of val. */
247 memset (valaddr_data + count2 * TYPE_LENGTH (eltype2), '\0',
248 (count1 - count2) * TYPE_LENGTH (eltype2));
249 return val;
250 }
bd5635a1
RP
251 else if (VALUE_LVAL (arg2) == lval_memory)
252 {
253 return value_at_lazy (type, VALUE_ADDRESS (arg2) + VALUE_OFFSET (arg2));
254 }
d11c44f1
JG
255 else if (code1 == TYPE_CODE_VOID)
256 {
257 return value_zero (builtin_type_void, not_lval);
258 }
bd5635a1
RP
259 else
260 {
261 error ("Invalid cast.");
262 return 0;
263 }
264}
265
266/* Create a value of type TYPE that is zero, and return it. */
267
a91a6192 268value_ptr
bd5635a1
RP
269value_zero (type, lv)
270 struct type *type;
271 enum lval_type lv;
272{
a91a6192 273 register value_ptr val = allocate_value (type);
bd5635a1 274
4ed3a9ea 275 memset (VALUE_CONTENTS (val), 0, TYPE_LENGTH (type));
bd5635a1
RP
276 VALUE_LVAL (val) = lv;
277
278 return val;
279}
280
281/* Return a value with type TYPE located at ADDR.
282
283 Call value_at only if the data needs to be fetched immediately;
284 if we can be 'lazy' and defer the fetch, perhaps indefinately, call
285 value_at_lazy instead. value_at_lazy simply records the address of
286 the data and sets the lazy-evaluation-required flag. The lazy flag
287 is tested in the VALUE_CONTENTS macro, which is used if and when
288 the contents are actually required. */
289
a91a6192 290value_ptr
bd5635a1
RP
291value_at (type, addr)
292 struct type *type;
293 CORE_ADDR addr;
294{
a91a6192
SS
295 register value_ptr val;
296
297 if (TYPE_CODE (type) == TYPE_CODE_VOID)
298 error ("Attempt to dereference a generic pointer.");
299
300 val = allocate_value (type);
bd5635a1
RP
301
302 read_memory (addr, VALUE_CONTENTS_RAW (val), TYPE_LENGTH (type));
303
304 VALUE_LVAL (val) = lval_memory;
305 VALUE_ADDRESS (val) = addr;
306
307 return val;
308}
309
310/* Return a lazy value with type TYPE located at ADDR (cf. value_at). */
311
a91a6192 312value_ptr
bd5635a1
RP
313value_at_lazy (type, addr)
314 struct type *type;
315 CORE_ADDR addr;
316{
a91a6192
SS
317 register value_ptr val;
318
319 if (TYPE_CODE (type) == TYPE_CODE_VOID)
320 error ("Attempt to dereference a generic pointer.");
321
322 val = allocate_value (type);
bd5635a1
RP
323
324 VALUE_LVAL (val) = lval_memory;
325 VALUE_ADDRESS (val) = addr;
326 VALUE_LAZY (val) = 1;
327
328 return val;
329}
330
331/* Called only from the VALUE_CONTENTS macro, if the current data for
332 a variable needs to be loaded into VALUE_CONTENTS(VAL). Fetches the
333 data from the user's process, and clears the lazy flag to indicate
334 that the data in the buffer is valid.
335
9cb602e1
JG
336 If the value is zero-length, we avoid calling read_memory, which would
337 abort. We mark the value as fetched anyway -- all 0 bytes of it.
338
bd5635a1
RP
339 This function returns a value because it is used in the VALUE_CONTENTS
340 macro as part of an expression, where a void would not work. The
341 value is ignored. */
342
343int
344value_fetch_lazy (val)
a91a6192 345 register value_ptr val;
bd5635a1
RP
346{
347 CORE_ADDR addr = VALUE_ADDRESS (val) + VALUE_OFFSET (val);
348
9cb602e1
JG
349 if (TYPE_LENGTH (VALUE_TYPE (val)))
350 read_memory (addr, VALUE_CONTENTS_RAW (val),
351 TYPE_LENGTH (VALUE_TYPE (val)));
bd5635a1
RP
352 VALUE_LAZY (val) = 0;
353 return 0;
354}
355
356
357/* Store the contents of FROMVAL into the location of TOVAL.
358 Return a new value with the location of TOVAL and contents of FROMVAL. */
359
a91a6192 360value_ptr
bd5635a1 361value_assign (toval, fromval)
a91a6192 362 register value_ptr toval, fromval;
bd5635a1 363{
67e9b3b3 364 register struct type *type;
a91a6192 365 register value_ptr val;
bd5635a1 366 char raw_buffer[MAX_REGISTER_RAW_SIZE];
bd5635a1
RP
367 int use_buffer = 0;
368
30974778
JK
369 if (!toval->modifiable)
370 error ("Left operand of assignment is not a modifiable lvalue.");
371
bd5635a1 372 COERCE_ARRAY (fromval);
8e9a3f3b 373 COERCE_REF (toval);
bd5635a1 374
67e9b3b3 375 type = VALUE_TYPE (toval);
bd5635a1
RP
376 if (VALUE_LVAL (toval) != lval_internalvar)
377 fromval = value_cast (type, fromval);
378
379 /* If TOVAL is a special machine register requiring conversion
380 of program values to a special raw format,
381 convert FROMVAL's contents now, with result in `raw_buffer',
382 and set USE_BUFFER to the number of bytes to write. */
383
ad09cb2b 384#ifdef REGISTER_CONVERTIBLE
bd5635a1
RP
385 if (VALUE_REGNO (toval) >= 0
386 && REGISTER_CONVERTIBLE (VALUE_REGNO (toval)))
387 {
388 int regno = VALUE_REGNO (toval);
ad09cb2b
PS
389 if (REGISTER_CONVERTIBLE (regno))
390 {
391 REGISTER_CONVERT_TO_RAW (VALUE_TYPE (fromval), regno,
392 VALUE_CONTENTS (fromval), raw_buffer);
393 use_buffer = REGISTER_RAW_SIZE (regno);
394 }
bd5635a1 395 }
ad09cb2b 396#endif
bd5635a1
RP
397
398 switch (VALUE_LVAL (toval))
399 {
400 case lval_internalvar:
401 set_internalvar (VALUE_INTERNALVAR (toval), fromval);
402 break;
403
404 case lval_internalvar_component:
405 set_internalvar_component (VALUE_INTERNALVAR (toval),
406 VALUE_OFFSET (toval),
407 VALUE_BITPOS (toval),
408 VALUE_BITSIZE (toval),
409 fromval);
410 break;
411
412 case lval_memory:
413 if (VALUE_BITSIZE (toval))
414 {
4d52ec86
JK
415 char buffer[sizeof (LONGEST)];
416 /* We assume that the argument to read_memory is in units of
417 host chars. FIXME: Is that correct? */
418 int len = (VALUE_BITPOS (toval)
419 + VALUE_BITSIZE (toval)
420 + HOST_CHAR_BIT - 1)
421 / HOST_CHAR_BIT;
ad09cb2b 422
4d52ec86 423 if (len > sizeof (LONGEST))
ad09cb2b
PS
424 error ("Can't handle bitfields which don't fit in a %d bit word.",
425 sizeof (LONGEST) * HOST_CHAR_BIT);
4d52ec86 426
bd5635a1 427 read_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
4d52ec86
JK
428 buffer, len);
429 modify_field (buffer, value_as_long (fromval),
bd5635a1
RP
430 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
431 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
4d52ec86 432 buffer, len);
bd5635a1
RP
433 }
434 else if (use_buffer)
435 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
436 raw_buffer, use_buffer);
437 else
438 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
439 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
440 break;
441
442 case lval_register:
443 if (VALUE_BITSIZE (toval))
444 {
ad09cb2b 445 char buffer[sizeof (LONGEST)];
4d52ec86 446 int len = REGISTER_RAW_SIZE (VALUE_REGNO (toval));
ad09cb2b
PS
447
448 if (len > sizeof (LONGEST))
449 error ("Can't handle bitfields in registers larger than %d bits.",
450 sizeof (LONGEST) * HOST_CHAR_BIT);
451
452 if (VALUE_BITPOS (toval) + VALUE_BITSIZE (toval)
453 > len * HOST_CHAR_BIT)
454 /* Getting this right would involve being very careful about
455 byte order. */
456 error ("\
457Can't handle bitfield which doesn't fit in a single register.");
458
4d52ec86
JK
459 read_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
460 buffer, len);
461 modify_field (buffer, value_as_long (fromval),
462 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
463 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
464 buffer, len);
bd5635a1
RP
465 }
466 else if (use_buffer)
467 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
468 raw_buffer, use_buffer);
469 else
54023465
JK
470 {
471 /* Do any conversion necessary when storing this type to more
472 than one register. */
473#ifdef REGISTER_CONVERT_FROM_TYPE
474 memcpy (raw_buffer, VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
475 REGISTER_CONVERT_FROM_TYPE(VALUE_REGNO (toval), type, raw_buffer);
476 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
477 raw_buffer, TYPE_LENGTH (type));
478#else
479 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
480 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
481#endif
482 }
79971d11
JK
483 /* Assigning to the stack pointer, frame pointer, and other
484 (architecture and calling convention specific) registers may
485 cause the frame cache to be out of date. We just do this
486 on all assignments to registers for simplicity; I doubt the slowdown
487 matters. */
488 reinit_frame_cache ();
bd5635a1
RP
489 break;
490
491 case lval_reg_frame_relative:
492 {
493 /* value is stored in a series of registers in the frame
494 specified by the structure. Copy that value out, modify
495 it, and copy it back in. */
496 int amount_to_copy = (VALUE_BITSIZE (toval) ? 1 : TYPE_LENGTH (type));
497 int reg_size = REGISTER_RAW_SIZE (VALUE_FRAME_REGNUM (toval));
498 int byte_offset = VALUE_OFFSET (toval) % reg_size;
499 int reg_offset = VALUE_OFFSET (toval) / reg_size;
500 int amount_copied;
4d52ec86
JK
501
502 /* Make the buffer large enough in all cases. */
503 char *buffer = (char *) alloca (amount_to_copy
504 + sizeof (LONGEST)
505 + MAX_REGISTER_RAW_SIZE);
506
bd5635a1 507 int regno;
6d34c236 508 struct frame_info *frame;
bd5635a1
RP
509
510 /* Figure out which frame this is in currently. */
511 for (frame = get_current_frame ();
512 frame && FRAME_FP (frame) != VALUE_FRAME (toval);
513 frame = get_prev_frame (frame))
514 ;
515
516 if (!frame)
517 error ("Value being assigned to is no longer active.");
518
519 amount_to_copy += (reg_size - amount_to_copy % reg_size);
520
521 /* Copy it out. */
522 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
523 amount_copied = 0);
524 amount_copied < amount_to_copy;
525 amount_copied += reg_size, regno++)
526 {
527 get_saved_register (buffer + amount_copied,
51b57ded 528 (int *)NULL, (CORE_ADDR *)NULL,
bd5635a1
RP
529 frame, regno, (enum lval_type *)NULL);
530 }
531
532 /* Modify what needs to be modified. */
533 if (VALUE_BITSIZE (toval))
534 modify_field (buffer + byte_offset,
479fdd26 535 value_as_long (fromval),
bd5635a1
RP
536 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
537 else if (use_buffer)
4ed3a9ea 538 memcpy (buffer + byte_offset, raw_buffer, use_buffer);
bd5635a1 539 else
4ed3a9ea
FF
540 memcpy (buffer + byte_offset, VALUE_CONTENTS (fromval),
541 TYPE_LENGTH (type));
bd5635a1
RP
542
543 /* Copy it back. */
544 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
545 amount_copied = 0);
546 amount_copied < amount_to_copy;
547 amount_copied += reg_size, regno++)
548 {
549 enum lval_type lval;
550 CORE_ADDR addr;
551 int optim;
552
553 /* Just find out where to put it. */
554 get_saved_register ((char *)NULL,
555 &optim, &addr, frame, regno, &lval);
556
557 if (optim)
558 error ("Attempt to assign to a value that was optimized out.");
559 if (lval == lval_memory)
560 write_memory (addr, buffer + amount_copied, reg_size);
561 else if (lval == lval_register)
562 write_register_bytes (addr, buffer + amount_copied, reg_size);
563 else
564 error ("Attempt to assign to an unmodifiable value.");
565 }
566 }
567 break;
568
569
570 default:
30974778 571 error ("Left operand of assignment is not an lvalue.");
bd5635a1
RP
572 }
573
574 /* Return a value just like TOVAL except with the contents of FROMVAL
575 (except in the case of the type if TOVAL is an internalvar). */
576
577 if (VALUE_LVAL (toval) == lval_internalvar
578 || VALUE_LVAL (toval) == lval_internalvar_component)
579 {
580 type = VALUE_TYPE (fromval);
581 }
582
583 val = allocate_value (type);
4ed3a9ea
FF
584 memcpy (val, toval, VALUE_CONTENTS_RAW (val) - (char *) val);
585 memcpy (VALUE_CONTENTS_RAW (val), VALUE_CONTENTS (fromval),
586 TYPE_LENGTH (type));
bd5635a1
RP
587 VALUE_TYPE (val) = type;
588
589 return val;
590}
591
592/* Extend a value VAL to COUNT repetitions of its type. */
593
a91a6192 594value_ptr
bd5635a1 595value_repeat (arg1, count)
a91a6192 596 value_ptr arg1;
bd5635a1
RP
597 int count;
598{
a91a6192 599 register value_ptr val;
bd5635a1
RP
600
601 if (VALUE_LVAL (arg1) != lval_memory)
602 error ("Only values in memory can be extended with '@'.");
603 if (count < 1)
604 error ("Invalid number %d of repetitions.", count);
605
606 val = allocate_repeat_value (VALUE_TYPE (arg1), count);
607
608 read_memory (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1),
609 VALUE_CONTENTS_RAW (val),
610 TYPE_LENGTH (VALUE_TYPE (val)) * count);
611 VALUE_LVAL (val) = lval_memory;
612 VALUE_ADDRESS (val) = VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1);
613
614 return val;
615}
616
a91a6192 617value_ptr
479fdd26 618value_of_variable (var, b)
bd5635a1 619 struct symbol *var;
479fdd26 620 struct block *b;
bd5635a1 621{
a91a6192 622 value_ptr val;
6d34c236 623 struct frame_info *frame;
bd5635a1 624
479fdd26
JK
625 if (b == NULL)
626 /* Use selected frame. */
6d34c236 627 frame = NULL;
479fdd26
JK
628 else
629 {
6d34c236
PB
630 frame = block_innermost_frame (b);
631 if (frame == NULL && symbol_read_needs_frame (var))
479fdd26
JK
632 {
633 if (BLOCK_FUNCTION (b) != NULL
634 && SYMBOL_NAME (BLOCK_FUNCTION (b)) != NULL)
635 error ("No frame is currently executing in block %s.",
636 SYMBOL_NAME (BLOCK_FUNCTION (b)));
637 else
638 error ("No frame is currently executing in specified block");
639 }
640 }
6d34c236 641 val = read_var_value (var, frame);
bd5635a1 642 if (val == 0)
2e4964ad 643 error ("Address of symbol \"%s\" is unknown.", SYMBOL_SOURCE_NAME (var));
bd5635a1
RP
644 return val;
645}
646
a163ddec
MT
647/* Given a value which is an array, return a value which is a pointer to its
648 first element, regardless of whether or not the array has a nonzero lower
649 bound.
650
651 FIXME: A previous comment here indicated that this routine should be
652 substracting the array's lower bound. It's not clear to me that this
653 is correct. Given an array subscripting operation, it would certainly
654 work to do the adjustment here, essentially computing:
655
656 (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
657
658 However I believe a more appropriate and logical place to account for
659 the lower bound is to do so in value_subscript, essentially computing:
660
661 (&array[0] + ((index - lowerbound) * sizeof array[0]))
662
663 As further evidence consider what would happen with operations other
664 than array subscripting, where the caller would get back a value that
665 had an address somewhere before the actual first element of the array,
666 and the information about the lower bound would be lost because of
667 the coercion to pointer type.
668 */
bd5635a1 669
a91a6192 670value_ptr
bd5635a1 671value_coerce_array (arg1)
a91a6192 672 value_ptr arg1;
bd5635a1
RP
673{
674 register struct type *type;
bd5635a1
RP
675
676 if (VALUE_LVAL (arg1) != lval_memory)
677 error ("Attempt to take address of value not located in memory.");
678
679 /* Get type of elements. */
852b3831
PB
680 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_ARRAY
681 || TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_STRING)
bd5635a1
RP
682 type = TYPE_TARGET_TYPE (VALUE_TYPE (arg1));
683 else
684 /* A phony array made by value_repeat.
685 Its type is the type of the elements, not an array type. */
686 type = VALUE_TYPE (arg1);
687
06b6c733 688 return value_from_longest (lookup_pointer_type (type),
bd5635a1 689 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
bd5635a1
RP
690}
691
692/* Given a value which is a function, return a value which is a pointer
693 to it. */
694
a91a6192 695value_ptr
bd5635a1 696value_coerce_function (arg1)
a91a6192 697 value_ptr arg1;
bd5635a1 698{
bd5635a1
RP
699
700 if (VALUE_LVAL (arg1) != lval_memory)
701 error ("Attempt to take address of value not located in memory.");
702
06b6c733 703 return value_from_longest (lookup_pointer_type (VALUE_TYPE (arg1)),
bd5635a1 704 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
bd5635a1
RP
705}
706
707/* Return a pointer value for the object for which ARG1 is the contents. */
708
a91a6192 709value_ptr
bd5635a1 710value_addr (arg1)
a91a6192 711 value_ptr arg1;
bd5635a1 712{
8e9a3f3b
PB
713 struct type *type = VALUE_TYPE (arg1);
714 if (TYPE_CODE (type) == TYPE_CODE_REF)
715 {
716 /* Copy the value, but change the type from (T&) to (T*).
717 We keep the same location information, which is efficient,
718 and allows &(&X) to get the location containing the reference. */
a91a6192 719 value_ptr arg2 = value_copy (arg1);
8e9a3f3b
PB
720 VALUE_TYPE (arg2) = lookup_pointer_type (TYPE_TARGET_TYPE (type));
721 return arg2;
722 }
f91a9e05
PB
723 if (current_language->c_style_arrays
724 && (VALUE_REPEATED (arg1)
725 || TYPE_CODE (type) == TYPE_CODE_ARRAY))
bd5635a1 726 return value_coerce_array (arg1);
8e9a3f3b 727 if (TYPE_CODE (type) == TYPE_CODE_FUNC)
bd5635a1
RP
728 return value_coerce_function (arg1);
729
730 if (VALUE_LVAL (arg1) != lval_memory)
731 error ("Attempt to take address of value not located in memory.");
732
8e9a3f3b 733 return value_from_longest (lookup_pointer_type (type),
bd5635a1 734 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
bd5635a1
RP
735}
736
737/* Given a value of a pointer type, apply the C unary * operator to it. */
738
a91a6192 739value_ptr
bd5635a1 740value_ind (arg1)
a91a6192 741 value_ptr arg1;
bd5635a1
RP
742{
743 COERCE_ARRAY (arg1);
744
745 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_MEMBER)
746 error ("not implemented: member types in value_ind");
747
748 /* Allow * on an integer so we can cast it to whatever we want.
749 This returns an int, which seems like the most C-like thing
750 to do. "long long" variables are rare enough that
751 BUILTIN_TYPE_LONGEST would seem to be a mistake. */
752 if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_INT)
753 return value_at (builtin_type_int,
754 (CORE_ADDR) value_as_long (arg1));
755 else if (TYPE_CODE (VALUE_TYPE (arg1)) == TYPE_CODE_PTR)
756 return value_at_lazy (TYPE_TARGET_TYPE (VALUE_TYPE (arg1)),
d11c44f1 757 value_as_pointer (arg1));
bd5635a1
RP
758 error ("Attempt to take contents of a non-pointer value.");
759 return 0; /* For lint -- never reached */
760}
761\f
762/* Pushing small parts of stack frames. */
763
764/* Push one word (the size of object that a register holds). */
765
766CORE_ADDR
34df79fc 767push_word (sp, word)
bd5635a1 768 CORE_ADDR sp;
67e9b3b3 769 unsigned LONGEST word;
bd5635a1 770{
67e9b3b3 771 register int len = REGISTER_SIZE;
479fdd26 772 char buffer[MAX_REGISTER_RAW_SIZE];
bd5635a1 773
479fdd26 774 store_unsigned_integer (buffer, len, word);
bd5635a1
RP
775#if 1 INNER_THAN 2
776 sp -= len;
479fdd26 777 write_memory (sp, buffer, len);
bd5635a1 778#else /* stack grows upward */
479fdd26 779 write_memory (sp, buffer, len);
bd5635a1
RP
780 sp += len;
781#endif /* stack grows upward */
782
783 return sp;
784}
785
786/* Push LEN bytes with data at BUFFER. */
787
788CORE_ADDR
789push_bytes (sp, buffer, len)
790 CORE_ADDR sp;
791 char *buffer;
792 int len;
793{
794#if 1 INNER_THAN 2
795 sp -= len;
796 write_memory (sp, buffer, len);
797#else /* stack grows upward */
798 write_memory (sp, buffer, len);
799 sp += len;
800#endif /* stack grows upward */
801
802 return sp;
803}
804
805/* Push onto the stack the specified value VALUE. */
806
01be6913 807static CORE_ADDR
bd5635a1
RP
808value_push (sp, arg)
809 register CORE_ADDR sp;
a91a6192 810 value_ptr arg;
bd5635a1
RP
811{
812 register int len = TYPE_LENGTH (VALUE_TYPE (arg));
813
814#if 1 INNER_THAN 2
815 sp -= len;
816 write_memory (sp, VALUE_CONTENTS (arg), len);
817#else /* stack grows upward */
818 write_memory (sp, VALUE_CONTENTS (arg), len);
819 sp += len;
820#endif /* stack grows upward */
821
822 return sp;
823}
824
825/* Perform the standard coercions that are specified
5222ca60 826 for arguments to be passed to C functions.
bd5635a1 827
5222ca60
PB
828 If PARAM_TYPE is non-NULL, it is the expected parameter type. */
829
830static value_ptr
831value_arg_coerce (arg, param_type)
a91a6192 832 value_ptr arg;
5222ca60 833 struct type *param_type;
bd5635a1 834{
5222ca60 835 register struct type *type = param_type ? param_type : VALUE_TYPE (arg);
bd5635a1 836
5222ca60
PB
837 switch (TYPE_CODE (type))
838 {
839 case TYPE_CODE_REF:
13ffa6be 840 if (TYPE_CODE (VALUE_TYPE (arg)) != TYPE_CODE_REF)
5222ca60
PB
841 {
842 arg = value_addr (arg);
843 VALUE_TYPE (arg) = param_type;
844 return arg;
845 }
846 break;
847 case TYPE_CODE_INT:
848 case TYPE_CODE_CHAR:
849 case TYPE_CODE_BOOL:
850 case TYPE_CODE_ENUM:
851 if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_int))
852 type = builtin_type_int;
853 break;
854 case TYPE_CODE_FLT:
855 if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_double))
856 type = builtin_type_double;
857 break;
858 case TYPE_CODE_FUNC:
859 type = lookup_pointer_type (type);
860 break;
861 }
479fdd26 862
b5728692 863#if 1 /* FIXME: This is only a temporary patch. -fnf */
f91a9e05
PB
864 if (current_language->c_style_arrays
865 && (VALUE_REPEATED (arg)
866 || TYPE_CODE (VALUE_TYPE (arg)) == TYPE_CODE_ARRAY))
b5728692 867 arg = value_coerce_array (arg);
b5728692 868#endif
bd5635a1 869
5222ca60 870 return value_cast (type, arg);
bd5635a1
RP
871}
872
873/* Determine a function's address and its return type from its value.
874 Calls error() if the function is not valid for calling. */
875
01be6913 876static CORE_ADDR
bd5635a1 877find_function_addr (function, retval_type)
a91a6192 878 value_ptr function;
bd5635a1
RP
879 struct type **retval_type;
880{
881 register struct type *ftype = VALUE_TYPE (function);
882 register enum type_code code = TYPE_CODE (ftype);
883 struct type *value_type;
884 CORE_ADDR funaddr;
885
886 /* If it's a member function, just look at the function
887 part of it. */
888
889 /* Determine address to call. */
890 if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
891 {
892 funaddr = VALUE_ADDRESS (function);
893 value_type = TYPE_TARGET_TYPE (ftype);
894 }
895 else if (code == TYPE_CODE_PTR)
896 {
d11c44f1 897 funaddr = value_as_pointer (function);
bd5635a1
RP
898 if (TYPE_CODE (TYPE_TARGET_TYPE (ftype)) == TYPE_CODE_FUNC
899 || TYPE_CODE (TYPE_TARGET_TYPE (ftype)) == TYPE_CODE_METHOD)
9ed8604f
PS
900 {
901#ifdef CONVERT_FROM_FUNC_PTR_ADDR
902 /* FIXME: This is a workaround for the unusual function
903 pointer representation on the RS/6000, see comment
904 in config/rs6000/tm-rs6000.h */
905 funaddr = CONVERT_FROM_FUNC_PTR_ADDR (funaddr);
906#endif
907 value_type = TYPE_TARGET_TYPE (TYPE_TARGET_TYPE (ftype));
908 }
bd5635a1
RP
909 else
910 value_type = builtin_type_int;
911 }
912 else if (code == TYPE_CODE_INT)
913 {
914 /* Handle the case of functions lacking debugging info.
915 Their values are characters since their addresses are char */
916 if (TYPE_LENGTH (ftype) == 1)
d11c44f1 917 funaddr = value_as_pointer (value_addr (function));
bd5635a1
RP
918 else
919 /* Handle integer used as address of a function. */
d11c44f1 920 funaddr = (CORE_ADDR) value_as_long (function);
bd5635a1
RP
921
922 value_type = builtin_type_int;
923 }
924 else
925 error ("Invalid data type for function to be called.");
926
927 *retval_type = value_type;
928 return funaddr;
929}
930
931#if defined (CALL_DUMMY)
932/* All this stuff with a dummy frame may seem unnecessarily complicated
933 (why not just save registers in GDB?). The purpose of pushing a dummy
934 frame which looks just like a real frame is so that if you call a
935 function and then hit a breakpoint (get a signal, etc), "backtrace"
936 will look right. Whether the backtrace needs to actually show the
937 stack at the time the inferior function was called is debatable, but
938 it certainly needs to not display garbage. So if you are contemplating
939 making dummy frames be different from normal frames, consider that. */
940
941/* Perform a function call in the inferior.
942 ARGS is a vector of values of arguments (NARGS of them).
943 FUNCTION is a value, the function to be called.
944 Returns a value representing what the function returned.
945 May fail to return, if a breakpoint or signal is hit
5222ca60
PB
946 during the execution of the function.
947
948 ARGS is modified to contain coerced values. */
bd5635a1 949
a91a6192 950value_ptr
bd5635a1 951call_function_by_hand (function, nargs, args)
a91a6192 952 value_ptr function;
bd5635a1 953 int nargs;
a91a6192 954 value_ptr *args;
bd5635a1
RP
955{
956 register CORE_ADDR sp;
957 register int i;
958 CORE_ADDR start_sp;
67e9b3b3
PS
959 /* CALL_DUMMY is an array of words (REGISTER_SIZE), but each word
960 is in host byte order. Before calling FIX_CALL_DUMMY, we byteswap it
961 and remove any extra bytes which might exist because unsigned LONGEST is
962 bigger than REGISTER_SIZE. */
963 static unsigned LONGEST dummy[] = CALL_DUMMY;
964 char dummy1[REGISTER_SIZE * sizeof dummy / sizeof (unsigned LONGEST)];
bd5635a1
RP
965 CORE_ADDR old_sp;
966 struct type *value_type;
967 unsigned char struct_return;
968 CORE_ADDR struct_addr;
969 struct inferior_status inf_status;
970 struct cleanup *old_chain;
971 CORE_ADDR funaddr;
972 int using_gcc;
9f739abd 973 CORE_ADDR real_pc;
5222ca60 974 struct type *ftype = SYMBOL_TYPE (function);
bd5635a1 975
e17960fb
JG
976 if (!target_has_execution)
977 noprocess();
978
bd5635a1
RP
979 save_inferior_status (&inf_status, 1);
980 old_chain = make_cleanup (restore_inferior_status, &inf_status);
981
982 /* PUSH_DUMMY_FRAME is responsible for saving the inferior registers
983 (and POP_FRAME for restoring them). (At least on most machines)
984 they are saved on the stack in the inferior. */
985 PUSH_DUMMY_FRAME;
986
54023465 987 old_sp = sp = read_sp ();
bd5635a1
RP
988
989#if 1 INNER_THAN 2 /* Stack grows down */
9ed8604f 990 sp -= sizeof dummy1;
bd5635a1
RP
991 start_sp = sp;
992#else /* Stack grows up */
993 start_sp = sp;
9ed8604f 994 sp += sizeof dummy1;
bd5635a1
RP
995#endif
996
997 funaddr = find_function_addr (function, &value_type);
998
999 {
1000 struct block *b = block_for_pc (funaddr);
1001 /* If compiled without -g, assume GCC. */
1002 using_gcc = b == NULL || BLOCK_GCC_COMPILED (b);
1003 }
1004
1005 /* Are we returning a value using a structure return or a normal
1006 value return? */
1007
1008 struct_return = using_struct_return (function, funaddr, value_type,
1009 using_gcc);
1010
1011 /* Create a call sequence customized for this function
1012 and the number of arguments for it. */
67e9b3b3
PS
1013 for (i = 0; i < sizeof dummy / sizeof (dummy[0]); i++)
1014 store_unsigned_integer (&dummy1[i * REGISTER_SIZE],
1015 REGISTER_SIZE,
34df79fc 1016 (unsigned LONGEST)dummy[i]);
9f739abd
SG
1017
1018#ifdef GDB_TARGET_IS_HPPA
b5728692
SG
1019 real_pc = FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
1020 value_type, using_gcc);
9f739abd 1021#else
bd5635a1
RP
1022 FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
1023 value_type, using_gcc);
9f739abd
SG
1024 real_pc = start_sp;
1025#endif
bd5635a1
RP
1026
1027#if CALL_DUMMY_LOCATION == ON_STACK
9ed8604f 1028 write_memory (start_sp, (char *)dummy1, sizeof dummy1);
cef4c2e7 1029#endif /* On stack. */
bd5635a1 1030
bd5635a1
RP
1031#if CALL_DUMMY_LOCATION == BEFORE_TEXT_END
1032 /* Convex Unix prohibits executing in the stack segment. */
1033 /* Hope there is empty room at the top of the text segment. */
1034 {
84d82b1c 1035 extern CORE_ADDR text_end;
bd5635a1
RP
1036 static checked = 0;
1037 if (!checked)
9ed8604f 1038 for (start_sp = text_end - sizeof dummy1; start_sp < text_end; ++start_sp)
bd5635a1
RP
1039 if (read_memory_integer (start_sp, 1) != 0)
1040 error ("text segment full -- no place to put call");
1041 checked = 1;
1042 sp = old_sp;
9ed8604f
PS
1043 real_pc = text_end - sizeof dummy1;
1044 write_memory (real_pc, (char *)dummy1, sizeof dummy1);
bd5635a1 1045 }
cef4c2e7
PS
1046#endif /* Before text_end. */
1047
1048#if CALL_DUMMY_LOCATION == AFTER_TEXT_END
bd5635a1 1049 {
84d82b1c 1050 extern CORE_ADDR text_end;
bd5635a1
RP
1051 int errcode;
1052 sp = old_sp;
30d20d15 1053 real_pc = text_end;
9ed8604f 1054 errcode = target_write_memory (real_pc, (char *)dummy1, sizeof dummy1);
bd5635a1
RP
1055 if (errcode != 0)
1056 error ("Cannot write text segment -- call_function failed");
1057 }
1058#endif /* After text_end. */
cef4c2e7
PS
1059
1060#if CALL_DUMMY_LOCATION == AT_ENTRY_POINT
1061 real_pc = funaddr;
1062#endif /* At entry point. */
bd5635a1
RP
1063
1064#ifdef lint
1065 sp = old_sp; /* It really is used, for some ifdef's... */
1066#endif
1067
5222ca60
PB
1068 for (i = nargs - 1; i >= 0; i--)
1069 {
1070 struct type *param_type;
1071 if (TYPE_NFIELDS (ftype) > i)
1072 param_type = TYPE_FIELD_TYPE (ftype, i);
1073 else
1074 param_type = 0;
1075 args[i] = value_arg_coerce (args[i], param_type);
1076 }
1077
bd5635a1
RP
1078#ifdef STACK_ALIGN
1079 /* If stack grows down, we must leave a hole at the top. */
1080 {
1081 int len = 0;
1082
1083 /* Reserve space for the return structure to be written on the
1084 stack, if necessary */
1085
1086 if (struct_return)
1087 len += TYPE_LENGTH (value_type);
1088
1089 for (i = nargs - 1; i >= 0; i--)
5222ca60 1090 len += TYPE_LENGTH (VALUE_TYPE (args[i]));
bd5635a1
RP
1091#ifdef CALL_DUMMY_STACK_ADJUST
1092 len += CALL_DUMMY_STACK_ADJUST;
1093#endif
1094#if 1 INNER_THAN 2
1095 sp -= STACK_ALIGN (len) - len;
1096#else
1097 sp += STACK_ALIGN (len) - len;
1098#endif
1099 }
1100#endif /* STACK_ALIGN */
1101
1102 /* Reserve space for the return structure to be written on the
1103 stack, if necessary */
1104
1105 if (struct_return)
1106 {
1107#if 1 INNER_THAN 2
1108 sp -= TYPE_LENGTH (value_type);
1109 struct_addr = sp;
1110#else
1111 struct_addr = sp;
1112 sp += TYPE_LENGTH (value_type);
1113#endif
1114 }
1115
1116#if defined (REG_STRUCT_HAS_ADDR)
1117 {
a91a6192 1118 /* This is a machine like the sparc, where we may need to pass a pointer
bd5635a1 1119 to the structure, not the structure itself. */
a91a6192
SS
1120 for (i = nargs - 1; i >= 0; i--)
1121 if (TYPE_CODE (VALUE_TYPE (args[i])) == TYPE_CODE_STRUCT
1122 && REG_STRUCT_HAS_ADDR (using_gcc, VALUE_TYPE (args[i])))
1123 {
1124 CORE_ADDR addr;
bd5635a1 1125#if !(1 INNER_THAN 2)
a91a6192
SS
1126 /* The stack grows up, so the address of the thing we push
1127 is the stack pointer before we push it. */
1128 addr = sp;
bd5635a1 1129#endif
a91a6192
SS
1130 /* Push the structure. */
1131 sp = value_push (sp, args[i]);
bd5635a1 1132#if 1 INNER_THAN 2
a91a6192
SS
1133 /* The stack grows down, so the address of the thing we push
1134 is the stack pointer after we push it. */
1135 addr = sp;
bd5635a1 1136#endif
a91a6192
SS
1137 /* The value we're going to pass is the address of the thing
1138 we just pushed. */
1139 args[i] = value_from_longest (lookup_pointer_type (value_type),
1140 (LONGEST) addr);
1141 }
bd5635a1
RP
1142 }
1143#endif /* REG_STRUCT_HAS_ADDR. */
1144
1145#ifdef PUSH_ARGUMENTS
1146 PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr);
1147#else /* !PUSH_ARGUMENTS */
1148 for (i = nargs - 1; i >= 0; i--)
5222ca60 1149 sp = value_push (sp, args[i]);
bd5635a1
RP
1150#endif /* !PUSH_ARGUMENTS */
1151
1152#ifdef CALL_DUMMY_STACK_ADJUST
1153#if 1 INNER_THAN 2
1154 sp -= CALL_DUMMY_STACK_ADJUST;
1155#else
1156 sp += CALL_DUMMY_STACK_ADJUST;
1157#endif
1158#endif /* CALL_DUMMY_STACK_ADJUST */
1159
1160 /* Store the address at which the structure is supposed to be
1161 written. Note that this (and the code which reserved the space
1162 above) assumes that gcc was used to compile this function. Since
1163 it doesn't cost us anything but space and if the function is pcc
1164 it will ignore this value, we will make that assumption.
1165
1166 Also note that on some machines (like the sparc) pcc uses a
1167 convention like gcc's. */
1168
1169 if (struct_return)
1170 STORE_STRUCT_RETURN (struct_addr, sp);
1171
1172 /* Write the stack pointer. This is here because the statements above
1173 might fool with it. On SPARC, this write also stores the register
1174 window into the right place in the new stack frame, which otherwise
5632cd56 1175 wouldn't happen. (See store_inferior_registers in sparc-nat.c.) */
54023465 1176 write_sp (sp);
bd5635a1 1177
bd5635a1
RP
1178 {
1179 char retbuf[REGISTER_BYTES];
54023465
JK
1180 char *name;
1181 struct symbol *symbol;
1182
1183 name = NULL;
1184 symbol = find_pc_function (funaddr);
1185 if (symbol)
1186 {
1187 name = SYMBOL_SOURCE_NAME (symbol);
1188 }
1189 else
1190 {
1191 /* Try the minimal symbols. */
1192 struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (funaddr);
1193
1194 if (msymbol)
1195 {
1196 name = SYMBOL_SOURCE_NAME (msymbol);
1197 }
1198 }
1199 if (name == NULL)
1200 {
1201 char format[80];
1202 sprintf (format, "at %s", local_hex_format ());
1203 name = alloca (80);
30974778 1204 /* FIXME-32x64: assumes funaddr fits in a long. */
cef4c2e7 1205 sprintf (name, format, (unsigned long) funaddr);
54023465 1206 }
bd5635a1
RP
1207
1208 /* Execute the stack dummy routine, calling FUNCTION.
1209 When it is done, discard the empty frame
1210 after storing the contents of all regs into retbuf. */
860a1754
JK
1211 if (run_stack_dummy (real_pc + CALL_DUMMY_START_OFFSET, retbuf))
1212 {
1213 /* We stopped somewhere besides the call dummy. */
1214
1215 /* If we did the cleanups, we would print a spurious error message
1216 (Unable to restore previously selected frame), would write the
1217 registers from the inf_status (which is wrong), and would do other
1218 wrong things (like set stop_bpstat to the wrong thing). */
1219 discard_cleanups (old_chain);
1220 /* Prevent memory leak. */
30d20d15 1221 bpstat_clear (&inf_status.stop_bpstat);
860a1754
JK
1222
1223 /* The following error message used to say "The expression
1224 which contained the function call has been discarded." It
1225 is a hard concept to explain in a few words. Ideally, GDB
1226 would be able to resume evaluation of the expression when
1227 the function finally is done executing. Perhaps someday
1228 this will be implemented (it would not be easy). */
1229
1230 /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
1231 a C++ name with arguments and stuff. */
1232 error ("\
1233The program being debugged stopped while in a function called from GDB.\n\
1234When the function (%s) is done executing, GDB will silently\n\
1235stop (instead of continuing to evaluate the expression containing\n\
1236the function call).", name);
1237 }
bd5635a1
RP
1238
1239 do_cleanups (old_chain);
1240
860a1754 1241 /* Figure out the value returned by the function. */
bd5635a1
RP
1242 return value_being_returned (value_type, retbuf, struct_return);
1243 }
1244}
1245#else /* no CALL_DUMMY. */
a91a6192 1246value_ptr
bd5635a1 1247call_function_by_hand (function, nargs, args)
a91a6192 1248 value_ptr function;
bd5635a1 1249 int nargs;
a91a6192 1250 value_ptr *args;
bd5635a1
RP
1251{
1252 error ("Cannot invoke functions on this machine.");
1253}
1254#endif /* no CALL_DUMMY. */
a163ddec 1255
bd5635a1 1256\f
a163ddec
MT
1257/* Create a value for an array by allocating space in the inferior, copying
1258 the data into that space, and then setting up an array value.
1259
1260 The array bounds are set from LOWBOUND and HIGHBOUND, and the array is
1261 populated from the values passed in ELEMVEC.
1262
1263 The element type of the array is inherited from the type of the
1264 first element, and all elements must have the same size (though we
1265 don't currently enforce any restriction on their types). */
bd5635a1 1266
a91a6192 1267value_ptr
a163ddec
MT
1268value_array (lowbound, highbound, elemvec)
1269 int lowbound;
1270 int highbound;
a91a6192 1271 value_ptr *elemvec;
bd5635a1 1272{
a163ddec
MT
1273 int nelem;
1274 int idx;
1275 int typelength;
a91a6192 1276 value_ptr val;
a163ddec
MT
1277 struct type *rangetype;
1278 struct type *arraytype;
1279 CORE_ADDR addr;
bd5635a1 1280
a163ddec
MT
1281 /* Validate that the bounds are reasonable and that each of the elements
1282 have the same size. */
bd5635a1 1283
a163ddec
MT
1284 nelem = highbound - lowbound + 1;
1285 if (nelem <= 0)
bd5635a1 1286 {
a163ddec 1287 error ("bad array bounds (%d, %d)", lowbound, highbound);
bd5635a1 1288 }
a163ddec
MT
1289 typelength = TYPE_LENGTH (VALUE_TYPE (elemvec[0]));
1290 for (idx = 0; idx < nelem; idx++)
bd5635a1 1291 {
a163ddec
MT
1292 if (TYPE_LENGTH (VALUE_TYPE (elemvec[idx])) != typelength)
1293 {
1294 error ("array elements must all be the same size");
1295 }
bd5635a1
RP
1296 }
1297
a163ddec
MT
1298 /* Allocate space to store the array in the inferior, and then initialize
1299 it by copying in each element. FIXME: Is it worth it to create a
1300 local buffer in which to collect each value and then write all the
1301 bytes in one operation? */
1302
1303 addr = allocate_space_in_inferior (nelem * typelength);
1304 for (idx = 0; idx < nelem; idx++)
1305 {
1306 write_memory (addr + (idx * typelength), VALUE_CONTENTS (elemvec[idx]),
1307 typelength);
1308 }
1309
1310 /* Create the array type and set up an array value to be evaluated lazily. */
1311
1312 rangetype = create_range_type ((struct type *) NULL, builtin_type_int,
1313 lowbound, highbound);
1314 arraytype = create_array_type ((struct type *) NULL,
1315 VALUE_TYPE (elemvec[0]), rangetype);
1316 val = value_at_lazy (arraytype, addr);
1317 return (val);
1318}
1319
1320/* Create a value for a string constant by allocating space in the inferior,
1321 copying the data into that space, and returning the address with type
1322 TYPE_CODE_STRING. PTR points to the string constant data; LEN is number
1323 of characters.
1324 Note that string types are like array of char types with a lower bound of
1325 zero and an upper bound of LEN - 1. Also note that the string may contain
1326 embedded null bytes. */
1327
a91a6192 1328value_ptr
a163ddec
MT
1329value_string (ptr, len)
1330 char *ptr;
1331 int len;
1332{
a91a6192 1333 value_ptr val;
5222ca60 1334 int lowbound = current_language->string_lower_bound;
f91a9e05 1335 struct type *rangetype = create_range_type ((struct type *) NULL,
5222ca60
PB
1336 builtin_type_int,
1337 lowbound, len + lowbound - 1);
f91a9e05
PB
1338 struct type *stringtype
1339 = create_string_type ((struct type *) NULL, rangetype);
a163ddec
MT
1340 CORE_ADDR addr;
1341
f91a9e05
PB
1342 if (current_language->c_style_arrays == 0)
1343 {
1344 val = allocate_value (stringtype);
1345 memcpy (VALUE_CONTENTS_RAW (val), ptr, len);
1346 return val;
1347 }
1348
1349
a163ddec
MT
1350 /* Allocate space to store the string in the inferior, and then
1351 copy LEN bytes from PTR in gdb to that address in the inferior. */
1352
1353 addr = allocate_space_in_inferior (len);
1354 write_memory (addr, ptr, len);
1355
a163ddec
MT
1356 val = value_at_lazy (stringtype, addr);
1357 return (val);
bd5635a1 1358}
6d34c236
PB
1359
1360value_ptr
1361value_bitstring (ptr, len)
1362 char *ptr;
1363 int len;
1364{
1365 value_ptr val;
1366 struct type *domain_type = create_range_type (NULL, builtin_type_int,
1367 0, len - 1);
1368 struct type *type = create_set_type ((struct type*) NULL, domain_type);
1369 TYPE_CODE (type) = TYPE_CODE_BITSTRING;
1370 val = allocate_value (type);
1371 memcpy (VALUE_CONTENTS_RAW (val), ptr, TYPE_LENGTH (type) / TARGET_CHAR_BIT);
1372 return val;
1373}
bd5635a1 1374\f
479fdd26
JK
1375/* See if we can pass arguments in T2 to a function which takes arguments
1376 of types T1. Both t1 and t2 are NULL-terminated vectors. If some
1377 arguments need coercion of some sort, then the coerced values are written
1378 into T2. Return value is 0 if the arguments could be matched, or the
1379 position at which they differ if not.
a163ddec
MT
1380
1381 STATICP is nonzero if the T1 argument list came from a
1382 static member function.
1383
1384 For non-static member functions, we ignore the first argument,
1385 which is the type of the instance variable. This is because we want
1386 to handle calls with objects from derived classes. This is not
1387 entirely correct: we should actually check to make sure that a
1388 requested operation is type secure, shouldn't we? FIXME. */
1389
1390static int
1391typecmp (staticp, t1, t2)
1392 int staticp;
1393 struct type *t1[];
a91a6192 1394 value_ptr t2[];
a163ddec
MT
1395{
1396 int i;
1397
1398 if (t2 == 0)
1399 return 1;
1400 if (staticp && t1 == 0)
1401 return t2[1] != 0;
1402 if (t1 == 0)
1403 return 1;
1404 if (TYPE_CODE (t1[0]) == TYPE_CODE_VOID) return 0;
1405 if (t1[!staticp] == 0) return 0;
1406 for (i = !staticp; t1[i] && TYPE_CODE (t1[i]) != TYPE_CODE_VOID; i++)
1407 {
40620258 1408 struct type *tt1, *tt2;
a163ddec
MT
1409 if (! t2[i])
1410 return i+1;
40620258
KH
1411 tt1 = t1[i];
1412 tt2 = VALUE_TYPE(t2[i]);
1413 if (TYPE_CODE (tt1) == TYPE_CODE_REF
479fdd26 1414 /* We should be doing hairy argument matching, as below. */
40620258 1415 && (TYPE_CODE (TYPE_TARGET_TYPE (tt1)) == TYPE_CODE (tt2)))
479fdd26
JK
1416 {
1417 t2[i] = value_addr (t2[i]);
1418 continue;
1419 }
1420
40620258
KH
1421 while (TYPE_CODE (tt1) == TYPE_CODE_PTR
1422 && (TYPE_CODE(tt2)==TYPE_CODE_ARRAY || TYPE_CODE(tt2)==TYPE_CODE_PTR))
1423 {
1424 tt1 = TYPE_TARGET_TYPE(tt1);
1425 tt2 = TYPE_TARGET_TYPE(tt2);
1426 }
1427 if (TYPE_CODE(tt1) == TYPE_CODE(tt2)) continue;
1428 /* Array to pointer is a `trivial conversion' according to the ARM. */
479fdd26
JK
1429
1430 /* We should be doing much hairier argument matching (see section 13.2
1431 of the ARM), but as a quick kludge, just check for the same type
1432 code. */
a163ddec
MT
1433 if (TYPE_CODE (t1[i]) != TYPE_CODE (VALUE_TYPE (t2[i])))
1434 return i+1;
1435 }
1436 if (!t1[i]) return 0;
1437 return t2[i] ? i+1 : 0;
1438}
1439
bd5635a1
RP
1440/* Helper function used by value_struct_elt to recurse through baseclasses.
1441 Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
2a5ec41d 1442 and search in it assuming it has (class) type TYPE.
d3bab255
JK
1443 If found, return value, else return NULL.
1444
1445 If LOOKING_FOR_BASECLASS, then instead of looking for struct fields,
1446 look for a baseclass named NAME. */
bd5635a1 1447
a91a6192 1448static value_ptr
d3bab255 1449search_struct_field (name, arg1, offset, type, looking_for_baseclass)
bd5635a1 1450 char *name;
a91a6192 1451 register value_ptr arg1;
bd5635a1
RP
1452 int offset;
1453 register struct type *type;
d3bab255 1454 int looking_for_baseclass;
bd5635a1
RP
1455{
1456 int i;
1457
1458 check_stub_type (type);
1459
d3bab255
JK
1460 if (! looking_for_baseclass)
1461 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1462 {
1463 char *t_field_name = TYPE_FIELD_NAME (type, i);
1464
2e4964ad 1465 if (t_field_name && STREQ (t_field_name, name))
d3bab255 1466 {
a91a6192 1467 value_ptr v;
01be6913
PB
1468 if (TYPE_FIELD_STATIC (type, i))
1469 {
1470 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, i);
1471 struct symbol *sym =
2e4964ad
FF
1472 lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
1473 if (sym == NULL)
1474 error ("Internal error: could not find physical static variable named %s",
1475 phys_name);
01be6913
PB
1476 v = value_at (TYPE_FIELD_TYPE (type, i),
1477 (CORE_ADDR)SYMBOL_BLOCK_VALUE (sym));
1478 }
1479 else
1480 v = value_primitive_field (arg1, offset, i, type);
d3bab255
JK
1481 if (v == 0)
1482 error("there is no field named %s", name);
1483 return v;
1484 }
6d34c236
PB
1485 if (t_field_name && t_field_name[0] == '\0'
1486 && TYPE_CODE (TYPE_FIELD_TYPE (type, i)) == TYPE_CODE_UNION)
1487 {
1488 /* Look for a match through the fields of an anonymous union. */
1489 value_ptr v;
1490 v = search_struct_field (name, arg1, offset,
1491 TYPE_FIELD_TYPE (type, i),
1492 looking_for_baseclass);
1493 if (v)
1494 return v;
1495 }
d3bab255 1496 }
bd5635a1
RP
1497
1498 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1499 {
a91a6192 1500 value_ptr v;
bd5635a1 1501 /* If we are looking for baseclasses, this is what we get when we
54023465
JK
1502 hit them. But it could happen that the base part's member name
1503 is not yet filled in. */
d3bab255 1504 int found_baseclass = (looking_for_baseclass
54023465 1505 && TYPE_BASECLASS_NAME (type, i) != NULL
2e4964ad 1506 && STREQ (name, TYPE_BASECLASS_NAME (type, i)));
bd5635a1
RP
1507
1508 if (BASETYPE_VIA_VIRTUAL (type, i))
1509 {
a91a6192 1510 value_ptr v2;
bac89d6c 1511 /* Fix to use baseclass_offset instead. FIXME */
d11c44f1
JG
1512 baseclass_addr (type, i, VALUE_CONTENTS (arg1) + offset,
1513 &v2, (int *)NULL);
bd5635a1
RP
1514 if (v2 == 0)
1515 error ("virtual baseclass botch");
1516 if (found_baseclass)
1517 return v2;
d3bab255
JK
1518 v = search_struct_field (name, v2, 0, TYPE_BASECLASS (type, i),
1519 looking_for_baseclass);
bd5635a1 1520 }
01be6913 1521 else if (found_baseclass)
bd5635a1
RP
1522 v = value_primitive_field (arg1, offset, i, type);
1523 else
1524 v = search_struct_field (name, arg1,
1525 offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
d3bab255
JK
1526 TYPE_BASECLASS (type, i),
1527 looking_for_baseclass);
bd5635a1
RP
1528 if (v) return v;
1529 }
1530 return NULL;
1531}
1532
1533/* Helper function used by value_struct_elt to recurse through baseclasses.
1534 Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
2a5ec41d 1535 and search in it assuming it has (class) type TYPE.
cef4c2e7 1536 If found, return value, else if name matched and args not return (value)-1,
5b5c6d94 1537 else return NULL. */
bd5635a1 1538
a91a6192 1539static value_ptr
bac89d6c 1540search_struct_method (name, arg1p, args, offset, static_memfuncp, type)
bd5635a1 1541 char *name;
a91a6192 1542 register value_ptr *arg1p, *args;
bd5635a1
RP
1543 int offset, *static_memfuncp;
1544 register struct type *type;
1545{
1546 int i;
a91a6192 1547 value_ptr v;
67e9b3b3 1548 int name_matched = 0;
6ebc9cdd 1549 char dem_opname[64];
bd5635a1
RP
1550
1551 check_stub_type (type);
1552 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
1553 {
1554 char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
6ebc9cdd
KH
1555 if (strncmp(t_field_name, "__", 2)==0 ||
1556 strncmp(t_field_name, "op", 2)==0 ||
1557 strncmp(t_field_name, "type", 4)==0 )
1558 {
1559 if (cplus_demangle_opname(t_field_name, dem_opname, DMGL_ANSI))
1560 t_field_name = dem_opname;
1561 else if (cplus_demangle_opname(t_field_name, dem_opname, 0))
1562 t_field_name = dem_opname;
1563 }
2e4964ad 1564 if (t_field_name && STREQ (t_field_name, name))
bd5635a1 1565 {
d3bab255 1566 int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
bd5635a1 1567 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
5b5c6d94 1568 name_matched = 1;
bd5635a1 1569
d3bab255
JK
1570 if (j > 0 && args == 0)
1571 error ("cannot resolve overloaded method `%s'", name);
1572 while (j >= 0)
bd5635a1 1573 {
8e9a3f3b 1574 if (TYPE_FN_FIELD_STUB (f, j))
bd5635a1
RP
1575 check_stub_method (type, i, j);
1576 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
1577 TYPE_FN_FIELD_ARGS (f, j), args))
1578 {
1579 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
a91a6192 1580 return value_virtual_fn_field (arg1p, f, j, type, offset);
bd5635a1
RP
1581 if (TYPE_FN_FIELD_STATIC_P (f, j) && static_memfuncp)
1582 *static_memfuncp = 1;
a91a6192
SS
1583 v = value_fn_field (arg1p, f, j, type, offset);
1584 if (v != NULL) return v;
bd5635a1 1585 }
d3bab255 1586 j--;
bd5635a1
RP
1587 }
1588 }
1589 }
1590
1591 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1592 {
01be6913 1593 int base_offset;
bd5635a1
RP
1594
1595 if (BASETYPE_VIA_VIRTUAL (type, i))
1596 {
9f739abd 1597 base_offset = baseclass_offset (type, i, *arg1p, offset);
bac89d6c 1598 if (base_offset == -1)
bd5635a1 1599 error ("virtual baseclass botch");
bd5635a1 1600 }
01be6913
PB
1601 else
1602 {
01be6913
PB
1603 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
1604 }
bac89d6c 1605 v = search_struct_method (name, arg1p, args, base_offset + offset,
bd5635a1 1606 static_memfuncp, TYPE_BASECLASS (type, i));
a91a6192 1607 if (v == (value_ptr) -1)
5b5c6d94
KH
1608 {
1609 name_matched = 1;
1610 }
1611 else if (v)
bac89d6c
FF
1612 {
1613/* FIXME-bothner: Why is this commented out? Why is it here? */
1614/* *arg1p = arg1_tmp;*/
1615 return v;
1616 }
bd5635a1 1617 }
a91a6192 1618 if (name_matched) return (value_ptr) -1;
5b5c6d94 1619 else return NULL;
bd5635a1
RP
1620}
1621
1622/* Given *ARGP, a value of type (pointer to a)* structure/union,
1623 extract the component named NAME from the ultimate target structure/union
1624 and return it as a value with its appropriate type.
1625 ERR is used in the error message if *ARGP's type is wrong.
1626
1627 C++: ARGS is a list of argument types to aid in the selection of
1628 an appropriate method. Also, handle derived types.
1629
1630 STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
1631 where the truthvalue of whether the function that was resolved was
1632 a static member function or not is stored.
1633
1634 ERR is an error message to be printed in case the field is not found. */
1635
a91a6192 1636value_ptr
bd5635a1 1637value_struct_elt (argp, args, name, static_memfuncp, err)
a91a6192 1638 register value_ptr *argp, *args;
bd5635a1
RP
1639 char *name;
1640 int *static_memfuncp;
1641 char *err;
1642{
1643 register struct type *t;
a91a6192 1644 value_ptr v;
bd5635a1
RP
1645
1646 COERCE_ARRAY (*argp);
1647
1648 t = VALUE_TYPE (*argp);
1649
1650 /* Follow pointers until we get to a non-pointer. */
1651
1652 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1653 {
bd5635a1 1654 *argp = value_ind (*argp);
f2ebc25f
JK
1655 /* Don't coerce fn pointer to fn and then back again! */
1656 if (TYPE_CODE (VALUE_TYPE (*argp)) != TYPE_CODE_FUNC)
1657 COERCE_ARRAY (*argp);
bd5635a1
RP
1658 t = VALUE_TYPE (*argp);
1659 }
1660
1661 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1662 error ("not implemented: member type in value_struct_elt");
1663
2a5ec41d 1664 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
bd5635a1
RP
1665 && TYPE_CODE (t) != TYPE_CODE_UNION)
1666 error ("Attempt to extract a component of a value that is not a %s.", err);
1667
1668 /* Assume it's not, unless we see that it is. */
1669 if (static_memfuncp)
1670 *static_memfuncp =0;
1671
1672 if (!args)
1673 {
1674 /* if there are no arguments ...do this... */
1675
d3bab255 1676 /* Try as a field first, because if we succeed, there
bd5635a1 1677 is less work to be done. */
d3bab255 1678 v = search_struct_field (name, *argp, 0, t, 0);
bd5635a1
RP
1679 if (v)
1680 return v;
1681
1682 /* C++: If it was not found as a data field, then try to
1683 return it as a pointer to a method. */
1684
1685 if (destructor_name_p (name, t))
1686 error ("Cannot get value of destructor");
1687
bac89d6c 1688 v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
bd5635a1 1689
a91a6192 1690 if (v == (value_ptr) -1)
67e9b3b3
PS
1691 error ("Cannot take address of a method");
1692 else if (v == 0)
bd5635a1
RP
1693 {
1694 if (TYPE_NFN_FIELDS (t))
1695 error ("There is no member or method named %s.", name);
1696 else
1697 error ("There is no member named %s.", name);
1698 }
1699 return v;
1700 }
1701
1702 if (destructor_name_p (name, t))
1703 {
1704 if (!args[1])
1705 {
1706 /* destructors are a special case. */
a91a6192
SS
1707 v = value_fn_field (NULL, TYPE_FN_FIELDLIST1 (t, 0),
1708 TYPE_FN_FIELDLIST_LENGTH (t, 0), 0, 0);
40620258
KH
1709 if (!v) error("could not find destructor function named %s.", name);
1710 else return v;
bd5635a1
RP
1711 }
1712 else
1713 {
1714 error ("destructor should not have any argument");
1715 }
1716 }
1717 else
bac89d6c 1718 v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
bd5635a1 1719
a91a6192 1720 if (v == (value_ptr) -1)
5b5c6d94
KH
1721 {
1722 error("Argument list of %s mismatch with component in the structure.", name);
1723 }
1724 else if (v == 0)
bd5635a1
RP
1725 {
1726 /* See if user tried to invoke data as function. If so,
1727 hand it back. If it's not callable (i.e., a pointer to function),
1728 gdb should give an error. */
d3bab255 1729 v = search_struct_field (name, *argp, 0, t, 0);
bd5635a1
RP
1730 }
1731
1732 if (!v)
1733 error ("Structure has no component named %s.", name);
1734 return v;
1735}
1736
1737/* C++: return 1 is NAME is a legitimate name for the destructor
1738 of type TYPE. If TYPE does not have a destructor, or
1739 if NAME is inappropriate for TYPE, an error is signaled. */
1740int
1741destructor_name_p (name, type)
7919c3ed
JG
1742 const char *name;
1743 const struct type *type;
bd5635a1
RP
1744{
1745 /* destructors are a special case. */
1746
1747 if (name[0] == '~')
1748 {
1749 char *dname = type_name_no_tag (type);
6d34c236
PB
1750 char *cp = strchr (dname, '<');
1751 int len;
1752
1753 /* Do not compare the template part for template classes. */
1754 if (cp == NULL)
1755 len = strlen (dname);
1756 else
1757 len = cp - dname;
1758 if (strlen (name + 1) != len || !STREQN (dname, name + 1, len))
bd5635a1
RP
1759 error ("name of destructor must equal name of class");
1760 else
1761 return 1;
1762 }
1763 return 0;
1764}
1765
1766/* Helper function for check_field: Given TYPE, a structure/union,
1767 return 1 if the component named NAME from the ultimate
1768 target structure/union is defined, otherwise, return 0. */
1769
1770static int
1771check_field_in (type, name)
1772 register struct type *type;
01be6913 1773 const char *name;
bd5635a1
RP
1774{
1775 register int i;
1776
1777 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1778 {
1779 char *t_field_name = TYPE_FIELD_NAME (type, i);
2e4964ad 1780 if (t_field_name && STREQ (t_field_name, name))
bd5635a1
RP
1781 return 1;
1782 }
1783
1784 /* C++: If it was not found as a data field, then try to
1785 return it as a pointer to a method. */
1786
1787 /* Destructors are a special case. */
1788 if (destructor_name_p (name, type))
1789 return 1;
1790
1791 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
1792 {
2e4964ad 1793 if (STREQ (TYPE_FN_FIELDLIST_NAME (type, i), name))
bd5635a1
RP
1794 return 1;
1795 }
1796
1797 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1798 if (check_field_in (TYPE_BASECLASS (type, i), name))
1799 return 1;
1800
1801 return 0;
1802}
1803
1804
1805/* C++: Given ARG1, a value of type (pointer to a)* structure/union,
1806 return 1 if the component named NAME from the ultimate
1807 target structure/union is defined, otherwise, return 0. */
1808
1809int
1810check_field (arg1, name)
a91a6192 1811 register value_ptr arg1;
7919c3ed 1812 const char *name;
bd5635a1
RP
1813{
1814 register struct type *t;
1815
1816 COERCE_ARRAY (arg1);
1817
1818 t = VALUE_TYPE (arg1);
1819
1820 /* Follow pointers until we get to a non-pointer. */
1821
1822 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1823 t = TYPE_TARGET_TYPE (t);
1824
1825 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
1826 error ("not implemented: member type in check_field");
1827
2a5ec41d 1828 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
bd5635a1
RP
1829 && TYPE_CODE (t) != TYPE_CODE_UNION)
1830 error ("Internal error: `this' is not an aggregate");
1831
1832 return check_field_in (t, name);
1833}
1834
01be6913 1835/* C++: Given an aggregate type CURTYPE, and a member name NAME,
2a5ec41d 1836 return the address of this member as a "pointer to member"
bd5635a1
RP
1837 type. If INTYPE is non-null, then it will be the type
1838 of the member we are looking for. This will help us resolve
01be6913
PB
1839 "pointers to member functions". This function is used
1840 to resolve user expressions of the form "DOMAIN::NAME". */
bd5635a1 1841
a91a6192 1842value_ptr
51b57ded 1843value_struct_elt_for_reference (domain, offset, curtype, name, intype)
01be6913 1844 struct type *domain, *curtype, *intype;
51b57ded 1845 int offset;
bd5635a1
RP
1846 char *name;
1847{
01be6913 1848 register struct type *t = curtype;
bd5635a1 1849 register int i;
a91a6192 1850 value_ptr v;
bd5635a1 1851
2a5ec41d 1852 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
bd5635a1 1853 && TYPE_CODE (t) != TYPE_CODE_UNION)
01be6913 1854 error ("Internal error: non-aggregate type to value_struct_elt_for_reference");
bd5635a1 1855
01be6913 1856 for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
bd5635a1 1857 {
01be6913
PB
1858 char *t_field_name = TYPE_FIELD_NAME (t, i);
1859
2e4964ad 1860 if (t_field_name && STREQ (t_field_name, name))
bd5635a1 1861 {
01be6913 1862 if (TYPE_FIELD_STATIC (t, i))
bd5635a1 1863 {
01be6913
PB
1864 char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (t, i);
1865 struct symbol *sym =
1866 lookup_symbol (phys_name, 0, VAR_NAMESPACE, 0, NULL);
2e4964ad
FF
1867 if (sym == NULL)
1868 error ("Internal error: could not find physical static variable named %s",
01be6913
PB
1869 phys_name);
1870 return value_at (SYMBOL_TYPE (sym),
1871 (CORE_ADDR)SYMBOL_BLOCK_VALUE (sym));
bd5635a1 1872 }
01be6913
PB
1873 if (TYPE_FIELD_PACKED (t, i))
1874 error ("pointers to bitfield members not allowed");
1875
1876 return value_from_longest
1877 (lookup_reference_type (lookup_member_type (TYPE_FIELD_TYPE (t, i),
1878 domain)),
51b57ded 1879 offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
bd5635a1 1880 }
bd5635a1
RP
1881 }
1882
1883 /* C++: If it was not found as a data field, then try to
1884 return it as a pointer to a method. */
bd5635a1
RP
1885
1886 /* Destructors are a special case. */
1887 if (destructor_name_p (name, t))
1888 {
2a5ec41d 1889 error ("member pointers to destructors not implemented yet");
bd5635a1
RP
1890 }
1891
1892 /* Perform all necessary dereferencing. */
1893 while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
1894 intype = TYPE_TARGET_TYPE (intype);
1895
01be6913 1896 for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
bd5635a1 1897 {
852b3831
PB
1898 char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
1899 char dem_opname[64];
1900
1901 if (strncmp(t_field_name, "__", 2)==0 ||
1902 strncmp(t_field_name, "op", 2)==0 ||
1903 strncmp(t_field_name, "type", 4)==0 )
1904 {
1905 if (cplus_demangle_opname(t_field_name, dem_opname, DMGL_ANSI))
1906 t_field_name = dem_opname;
1907 else if (cplus_demangle_opname(t_field_name, dem_opname, 0))
1908 t_field_name = dem_opname;
1909 }
1910 if (t_field_name && STREQ (t_field_name, name))
bd5635a1 1911 {
01be6913
PB
1912 int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
1913 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
1914
1915 if (intype == 0 && j > 1)
1916 error ("non-unique member `%s' requires type instantiation", name);
1917 if (intype)
bd5635a1 1918 {
01be6913
PB
1919 while (j--)
1920 if (TYPE_FN_FIELD_TYPE (f, j) == intype)
1921 break;
1922 if (j < 0)
1923 error ("no member function matches that type instantiation");
1924 }
1925 else
1926 j = 0;
1927
1928 if (TYPE_FN_FIELD_STUB (f, j))
1929 check_stub_method (t, i, j);
1930 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
1931 {
1932 return value_from_longest
1933 (lookup_reference_type
1934 (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
1935 domain)),
13ffa6be 1936 (LONGEST) METHOD_PTR_FROM_VOFFSET (TYPE_FN_FIELD_VOFFSET (f, j)));
01be6913
PB
1937 }
1938 else
1939 {
1940 struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
1941 0, VAR_NAMESPACE, 0, NULL);
35fcebce
PB
1942 if (s == NULL)
1943 {
1944 v = 0;
1945 }
1946 else
1947 {
1948 v = read_var_value (s, 0);
01be6913 1949#if 0
35fcebce
PB
1950 VALUE_TYPE (v) = lookup_reference_type
1951 (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
1952 domain));
01be6913 1953#endif
bd5635a1 1954 }
35fcebce 1955 return v;
bd5635a1
RP
1956 }
1957 }
35fcebce 1958 }
01be6913
PB
1959 for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
1960 {
a91a6192 1961 value_ptr v;
51b57ded
FF
1962 int base_offset;
1963
1964 if (BASETYPE_VIA_VIRTUAL (t, i))
1965 base_offset = 0;
1966 else
1967 base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
01be6913 1968 v = value_struct_elt_for_reference (domain,
51b57ded 1969 offset + base_offset,
01be6913
PB
1970 TYPE_BASECLASS (t, i),
1971 name,
1972 intype);
1973 if (v)
1974 return v;
bd5635a1
RP
1975 }
1976 return 0;
1977}
1978
bd5635a1
RP
1979/* C++: return the value of the class instance variable, if one exists.
1980 Flag COMPLAIN signals an error if the request is made in an
1981 inappropriate context. */
6d34c236 1982
a91a6192 1983value_ptr
bd5635a1
RP
1984value_of_this (complain)
1985 int complain;
1986{
bd5635a1
RP
1987 struct symbol *func, *sym;
1988 struct block *b;
1989 int i;
1990 static const char funny_this[] = "this";
a91a6192 1991 value_ptr this;
bd5635a1
RP
1992
1993 if (selected_frame == 0)
1994 if (complain)
1995 error ("no frame selected");
1996 else return 0;
1997
1998 func = get_frame_function (selected_frame);
1999 if (!func)
2000 {
2001 if (complain)
2002 error ("no `this' in nameless context");
2003 else return 0;
2004 }
2005
2006 b = SYMBOL_BLOCK_VALUE (func);
2007 i = BLOCK_NSYMS (b);
2008 if (i <= 0)
2009 if (complain)
2010 error ("no args, no `this'");
2011 else return 0;
2012
2013 /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
2014 symbol instead of the LOC_ARG one (if both exist). */
2015 sym = lookup_block_symbol (b, funny_this, VAR_NAMESPACE);
2016 if (sym == NULL)
2017 {
2018 if (complain)
2019 error ("current stack frame not in method");
2020 else
2021 return NULL;
2022 }
2023
2024 this = read_var_value (sym, selected_frame);
2025 if (this == 0 && complain)
2026 error ("`this' argument at unknown address");
2027 return this;
2028}
a91a6192 2029
f91a9e05
PB
2030/* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH elements
2031 long, starting at LOWBOUND. The result has the same lower bound as
2032 the original ARRAY. */
2033
2034value_ptr
2035value_slice (array, lowbound, length)
2036 value_ptr array;
2037 int lowbound, length;
2038{
2039 if (TYPE_CODE (VALUE_TYPE (array)) == TYPE_CODE_BITSTRING)
2040 error ("not implemented - bitstring slice");
2041 if (TYPE_CODE (VALUE_TYPE (array)) != TYPE_CODE_ARRAY
2042 && TYPE_CODE (VALUE_TYPE (array)) != TYPE_CODE_STRING)
2043 error ("cannot take slice of non-array");
2044 else
2045 {
2046 struct type *slice_range_type, *slice_type;
2047 value_ptr slice;
2048 struct type *range_type = TYPE_FIELD_TYPE (VALUE_TYPE (array), 0);
2049 struct type *element_type = TYPE_TARGET_TYPE (VALUE_TYPE (array));
2050 int lowerbound = TYPE_LOW_BOUND (range_type);
2051 int upperbound = TYPE_HIGH_BOUND (range_type);
2052 int offset = (lowbound - lowerbound) * TYPE_LENGTH (element_type);
2053 if (lowbound < lowerbound || length < 0
2054 || lowbound + length - 1 > upperbound)
2055 error ("slice out of range");
2056 slice_range_type = create_range_type ((struct type*) NULL,
2057 TYPE_TARGET_TYPE (range_type),
2058 lowerbound,
2059 lowerbound + length - 1);
2060 slice_type = create_array_type ((struct type*) NULL, element_type,
2061 slice_range_type);
2062 TYPE_CODE (slice_type) = TYPE_CODE (VALUE_TYPE (array));
2063 slice = allocate_value (slice_type);
2064 if (VALUE_LAZY (array))
2065 VALUE_LAZY (slice) = 1;
2066 else
2067 memcpy (VALUE_CONTENTS (slice), VALUE_CONTENTS (array) + offset,
2068 TYPE_LENGTH (slice_type));
2069 if (VALUE_LVAL (array) == lval_internalvar)
2070 VALUE_LVAL (slice) = lval_internalvar_component;
2071 else
2072 VALUE_LVAL (slice) = VALUE_LVAL (array);
2073 VALUE_ADDRESS (slice) = VALUE_ADDRESS (array);
2074 VALUE_OFFSET (slice) = VALUE_OFFSET (array) + offset;
2075 return slice;
2076 }
2077}
2078
2079/* Assuming chill_varying_type (VARRAY) is true, return an equivalent
2080 value as a fixed-length array. */
2081
2082value_ptr
2083varying_to_slice (varray)
2084 value_ptr varray;
2085{
2086 struct type *vtype = VALUE_TYPE (varray);
2087 LONGEST length = unpack_long (TYPE_FIELD_TYPE (vtype, 0),
2088 VALUE_CONTENTS (varray)
2089 + TYPE_FIELD_BITPOS (vtype, 0) / 8);
2090 return value_slice (value_primitive_field (varray, 0, 1, vtype), 0, length);
2091}
2092
a91a6192
SS
2093/* Create a value for a FORTRAN complex number. Currently most of
2094 the time values are coerced to COMPLEX*16 (i.e. a complex number
2095 composed of 2 doubles. This really should be a smarter routine
2096 that figures out precision inteligently as opposed to assuming
2097 doubles. FIXME: fmb */
2098
2099value_ptr
5222ca60 2100value_literal_complex (arg1, arg2, type)
a91a6192
SS
2101 value_ptr arg1;
2102 value_ptr arg2;
5222ca60 2103 struct type *type;
a91a6192 2104{
a91a6192 2105 register value_ptr val;
5222ca60 2106 struct type *real_type = TYPE_TARGET_TYPE (type);
a91a6192 2107
5222ca60
PB
2108 val = allocate_value (type);
2109 arg1 = value_cast (real_type, arg1);
2110 arg2 = value_cast (real_type, arg2);
a91a6192 2111
5222ca60
PB
2112 memcpy (VALUE_CONTENTS_RAW (val),
2113 VALUE_CONTENTS (arg1), TYPE_LENGTH (real_type));
2114 memcpy (VALUE_CONTENTS_RAW (val) + TYPE_LENGTH (real_type),
2115 VALUE_CONTENTS (arg2), TYPE_LENGTH (real_type));
a91a6192
SS
2116 return val;
2117}
9ed8604f 2118
5222ca60 2119/* Cast a value into the appropriate complex data type. */
9ed8604f
PS
2120
2121static value_ptr
5222ca60 2122cast_into_complex (type, val)
9ed8604f
PS
2123 struct type *type;
2124 register value_ptr val;
2125{
5222ca60
PB
2126 struct type *real_type = TYPE_TARGET_TYPE (type);
2127 if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_COMPLEX)
9ed8604f 2128 {
5222ca60
PB
2129 struct type *val_real_type = TYPE_TARGET_TYPE (VALUE_TYPE (val));
2130 value_ptr re_val = allocate_value (val_real_type);
2131 value_ptr im_val = allocate_value (val_real_type);
9ed8604f 2132
5222ca60
PB
2133 memcpy (VALUE_CONTENTS_RAW (re_val),
2134 VALUE_CONTENTS (val), TYPE_LENGTH (val_real_type));
2135 memcpy (VALUE_CONTENTS_RAW (im_val),
2136 VALUE_CONTENTS (val) + TYPE_LENGTH (val_real_type),
2137 TYPE_LENGTH (val_real_type));
9ed8604f 2138
5222ca60 2139 return value_literal_complex (re_val, im_val, type);
9ed8604f 2140 }
5222ca60
PB
2141 else if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FLT
2142 || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_INT)
2143 return value_literal_complex (val, value_zero (real_type, not_lval), type);
9ed8604f 2144 else
5222ca60 2145 error ("cannot cast non-number to complex");
9ed8604f 2146}
This page took 0.387688 seconds and 4 git commands to generate.