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