]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gdb/valops.c
Initial creation of sourceware repository
[thirdparty/binutils-gdb.git] / gdb / valops.c
1 /* Perform non-arithmetic operations on values, for GDB.
2 Copyright 1986, 87, 89, 91, 92, 93, 94, 95, 96, 97, 1998
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 #include "gdbcmd.h"
32
33 #include <errno.h>
34 #include "gdb_string.h"
35
36 /* Default to coercing float to double in function calls only when there is
37 no prototype. Otherwise on targets where the debug information is incorrect
38 for either the prototype or non-prototype case, we can force it by defining
39 COERCE_FLOAT_TO_DOUBLE in the target configuration file. */
40
41 #ifndef COERCE_FLOAT_TO_DOUBLE
42 #define COERCE_FLOAT_TO_DOUBLE (param_type == NULL)
43 #endif
44
45 /* Flag indicating HP compilers were used; needed to correctly handle some
46 value operations with HP aCC code/runtime. */
47 extern int hp_som_som_object_present;
48
49
50 /* Local functions. */
51
52 static int typecmp PARAMS ((int staticp, struct type *t1[], value_ptr t2[]));
53
54 #ifdef CALL_DUMMY
55 static CORE_ADDR find_function_addr PARAMS ((value_ptr, struct type **));
56 static value_ptr value_arg_coerce PARAMS ((value_ptr, struct type *, int));
57 #endif
58
59
60 #ifndef PUSH_ARGUMENTS
61 static CORE_ADDR value_push PARAMS ((CORE_ADDR, value_ptr));
62 #endif
63
64 static value_ptr search_struct_field PARAMS ((char *, value_ptr, int,
65 struct type *, int));
66
67 static value_ptr search_struct_field_aux PARAMS ((char *, value_ptr, int,
68 struct type *, int, int *, char *,
69 struct type **));
70
71 static value_ptr search_struct_method PARAMS ((char *, value_ptr *,
72 value_ptr *,
73 int, int *, struct type *));
74
75 static int check_field_in PARAMS ((struct type *, const char *));
76
77 static CORE_ADDR allocate_space_in_inferior PARAMS ((int));
78
79 static value_ptr cast_into_complex PARAMS ((struct type *, value_ptr));
80
81 void _initialize_valops PARAMS ((void));
82
83 #define VALUE_SUBSTRING_START(VAL) VALUE_FRAME(VAL)
84
85 /* Flag for whether we want to abandon failed expression evals by default. */
86
87 #if 0
88 static int auto_abandon = 0;
89 #endif
90
91 int overload_resolution = 0;
92
93
94 \f
95 /* Find the address of function name NAME in the inferior. */
96
97 value_ptr
98 find_function_in_inferior (name)
99 char *name;
100 {
101 register struct symbol *sym;
102 sym = lookup_symbol (name, 0, VAR_NAMESPACE, 0, NULL);
103 if (sym != NULL)
104 {
105 if (SYMBOL_CLASS (sym) != LOC_BLOCK)
106 {
107 error ("\"%s\" exists in this program but is not a function.",
108 name);
109 }
110 return value_of_variable (sym, NULL);
111 }
112 else
113 {
114 struct minimal_symbol *msymbol = lookup_minimal_symbol(name, NULL, NULL);
115 if (msymbol != NULL)
116 {
117 struct type *type;
118 LONGEST maddr;
119 type = lookup_pointer_type (builtin_type_char);
120 type = lookup_function_type (type);
121 type = lookup_pointer_type (type);
122 maddr = (LONGEST) SYMBOL_VALUE_ADDRESS (msymbol);
123 return value_from_longest (type, maddr);
124 }
125 else
126 {
127 if (!target_has_execution)
128 error ("evaluation of this expression requires the target program to be active");
129 else
130 error ("evaluation of this expression requires the program to have a function \"%s\".", name);
131 }
132 }
133 }
134
135 /* Allocate NBYTES of space in the inferior using the inferior's malloc
136 and return a value that is a pointer to the allocated space. */
137
138 value_ptr
139 value_allocate_space_in_inferior (len)
140 int len;
141 {
142 value_ptr blocklen;
143 register value_ptr val = find_function_in_inferior ("malloc");
144
145 blocklen = value_from_longest (builtin_type_int, (LONGEST) len);
146 val = call_function_by_hand (val, 1, &blocklen);
147 if (value_logical_not (val))
148 {
149 if (!target_has_execution)
150 error ("No memory available to program now: you need to start the target first");
151 else
152 error ("No memory available to program: call to malloc failed");
153 }
154 return val;
155 }
156
157 static CORE_ADDR
158 allocate_space_in_inferior (len)
159 int len;
160 {
161 return value_as_long (value_allocate_space_in_inferior (len));
162 }
163
164 /* Cast value ARG2 to type TYPE and return as a value.
165 More general than a C cast: accepts any two types of the same length,
166 and if ARG2 is an lvalue it can be cast into anything at all. */
167 /* In C++, casts may change pointer or object representations. */
168
169 value_ptr
170 value_cast (type, arg2)
171 struct type *type;
172 register value_ptr arg2;
173 {
174 register enum type_code code1;
175 register enum type_code code2;
176 register int scalar;
177 struct type *type2;
178
179 int convert_to_boolean = 0;
180
181 if (VALUE_TYPE (arg2) == type)
182 return arg2;
183
184 CHECK_TYPEDEF (type);
185 code1 = TYPE_CODE (type);
186 COERCE_REF(arg2);
187 type2 = check_typedef (VALUE_TYPE (arg2));
188
189 /* A cast to an undetermined-length array_type, such as (TYPE [])OBJECT,
190 is treated like a cast to (TYPE [N])OBJECT,
191 where N is sizeof(OBJECT)/sizeof(TYPE). */
192 if (code1 == TYPE_CODE_ARRAY)
193 {
194 struct type *element_type = TYPE_TARGET_TYPE (type);
195 unsigned element_length = TYPE_LENGTH (check_typedef (element_type));
196 if (element_length > 0
197 && TYPE_ARRAY_UPPER_BOUND_TYPE (type) == BOUND_CANNOT_BE_DETERMINED)
198 {
199 struct type *range_type = TYPE_INDEX_TYPE (type);
200 int val_length = TYPE_LENGTH (type2);
201 LONGEST low_bound, high_bound, new_length;
202 if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
203 low_bound = 0, high_bound = 0;
204 new_length = val_length / element_length;
205 if (val_length % element_length != 0)
206 warning("array element type size does not divide object size in cast");
207 /* FIXME-type-allocation: need a way to free this type when we are
208 done with it. */
209 range_type = create_range_type ((struct type *) NULL,
210 TYPE_TARGET_TYPE (range_type),
211 low_bound,
212 new_length + low_bound - 1);
213 VALUE_TYPE (arg2) = create_array_type ((struct type *) NULL,
214 element_type, range_type);
215 return arg2;
216 }
217 }
218
219 if (current_language->c_style_arrays
220 && TYPE_CODE (type2) == TYPE_CODE_ARRAY)
221 arg2 = value_coerce_array (arg2);
222
223 if (TYPE_CODE (type2) == TYPE_CODE_FUNC)
224 arg2 = value_coerce_function (arg2);
225
226 type2 = check_typedef (VALUE_TYPE (arg2));
227 COERCE_VARYING_ARRAY (arg2, type2);
228 code2 = TYPE_CODE (type2);
229
230 if (code1 == TYPE_CODE_COMPLEX)
231 return cast_into_complex (type, arg2);
232 if (code1 == TYPE_CODE_BOOL)
233 {
234 code1 = TYPE_CODE_INT;
235 convert_to_boolean = 1;
236 }
237 if (code1 == TYPE_CODE_CHAR)
238 code1 = TYPE_CODE_INT;
239 if (code2 == TYPE_CODE_BOOL || code2 == TYPE_CODE_CHAR)
240 code2 = TYPE_CODE_INT;
241
242 scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
243 || code2 == TYPE_CODE_ENUM || code2 == TYPE_CODE_RANGE);
244
245 if ( code1 == TYPE_CODE_STRUCT
246 && code2 == TYPE_CODE_STRUCT
247 && TYPE_NAME (type) != 0)
248 {
249 /* Look in the type of the source to see if it contains the
250 type of the target as a superclass. If so, we'll need to
251 offset the object in addition to changing its type. */
252 value_ptr v = search_struct_field (type_name_no_tag (type),
253 arg2, 0, type2, 1);
254 if (v)
255 {
256 VALUE_TYPE (v) = type;
257 return v;
258 }
259 }
260 if (code1 == TYPE_CODE_FLT && scalar)
261 return value_from_double (type, value_as_double (arg2));
262 else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM
263 || code1 == TYPE_CODE_RANGE)
264 && (scalar || code2 == TYPE_CODE_PTR))
265 {
266 LONGEST longest;
267
268 if (hp_som_som_object_present && /* if target compiled by HP aCC */
269 (code2 == TYPE_CODE_PTR))
270 {
271 unsigned int * ptr;
272 value_ptr retvalp;
273
274 switch (TYPE_CODE (TYPE_TARGET_TYPE (type2)))
275 {
276 /* With HP aCC, pointers to data members have a bias */
277 case TYPE_CODE_MEMBER:
278 retvalp = value_from_longest (type, value_as_long (arg2));
279 ptr = (unsigned int *) VALUE_CONTENTS (retvalp); /* force evaluation */
280 *ptr &= ~0x20000000; /* zap 29th bit to remove bias */
281 return retvalp;
282
283 /* While pointers to methods don't really point to a function */
284 case TYPE_CODE_METHOD:
285 error ("Pointers to methods not supported with HP aCC");
286
287 default:
288 break; /* fall out and go to normal handling */
289 }
290 }
291 longest = value_as_long (arg2);
292 return value_from_longest (type, convert_to_boolean ? (LONGEST) (longest ? 1 : 0) : longest);
293 }
294 else if (TYPE_LENGTH (type) == TYPE_LENGTH (type2))
295 {
296 if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
297 {
298 struct type *t1 = check_typedef (TYPE_TARGET_TYPE (type));
299 struct type *t2 = check_typedef (TYPE_TARGET_TYPE (type2));
300 if ( TYPE_CODE (t1) == TYPE_CODE_STRUCT
301 && TYPE_CODE (t2) == TYPE_CODE_STRUCT
302 && !value_logical_not (arg2))
303 {
304 value_ptr v;
305
306 /* Look in the type of the source to see if it contains the
307 type of the target as a superclass. If so, we'll need to
308 offset the pointer rather than just change its type. */
309 if (TYPE_NAME (t1) != NULL)
310 {
311 v = search_struct_field (type_name_no_tag (t1),
312 value_ind (arg2), 0, t2, 1);
313 if (v)
314 {
315 v = value_addr (v);
316 VALUE_TYPE (v) = type;
317 return v;
318 }
319 }
320
321 /* Look in the type of the target to see if it contains the
322 type of the source as a superclass. If so, we'll need to
323 offset the pointer rather than just change its type.
324 FIXME: This fails silently with virtual inheritance. */
325 if (TYPE_NAME (t2) != NULL)
326 {
327 v = search_struct_field (type_name_no_tag (t2),
328 value_zero (t1, not_lval), 0, t1, 1);
329 if (v)
330 {
331 value_ptr v2 = value_ind (arg2);
332 VALUE_ADDRESS (v2) -= VALUE_ADDRESS (v)
333 + VALUE_OFFSET (v);
334 v2 = value_addr (v2);
335 VALUE_TYPE (v2) = type;
336 return v2;
337 }
338 }
339 }
340 /* No superclass found, just fall through to change ptr type. */
341 }
342 VALUE_TYPE (arg2) = type;
343 VALUE_ENCLOSING_TYPE (arg2) = type; /* pai: chk_val */
344 VALUE_POINTED_TO_OFFSET (arg2) = 0; /* pai: chk_val */
345 return arg2;
346 }
347 else if (chill_varying_type (type))
348 {
349 struct type *range1, *range2, *eltype1, *eltype2;
350 value_ptr val;
351 int count1, count2;
352 LONGEST low_bound, high_bound;
353 char *valaddr, *valaddr_data;
354 /* For lint warning about eltype2 possibly uninitialized: */
355 eltype2 = NULL;
356 if (code2 == TYPE_CODE_BITSTRING)
357 error ("not implemented: converting bitstring to varying type");
358 if ((code2 != TYPE_CODE_ARRAY && code2 != TYPE_CODE_STRING)
359 || (eltype1 = check_typedef (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 1))),
360 eltype2 = check_typedef (TYPE_TARGET_TYPE (type2)),
361 (TYPE_LENGTH (eltype1) != TYPE_LENGTH (eltype2)
362 /* || TYPE_CODE (eltype1) != TYPE_CODE (eltype2) */ )))
363 error ("Invalid conversion to varying type");
364 range1 = TYPE_FIELD_TYPE (TYPE_FIELD_TYPE (type, 1), 0);
365 range2 = TYPE_FIELD_TYPE (type2, 0);
366 if (get_discrete_bounds (range1, &low_bound, &high_bound) < 0)
367 count1 = -1;
368 else
369 count1 = high_bound - low_bound + 1;
370 if (get_discrete_bounds (range2, &low_bound, &high_bound) < 0)
371 count1 = -1, count2 = 0; /* To force error before */
372 else
373 count2 = high_bound - low_bound + 1;
374 if (count2 > count1)
375 error ("target varying type is too small");
376 val = allocate_value (type);
377 valaddr = VALUE_CONTENTS_RAW (val);
378 valaddr_data = valaddr + TYPE_FIELD_BITPOS (type, 1) / 8;
379 /* Set val's __var_length field to count2. */
380 store_signed_integer (valaddr, TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0)),
381 count2);
382 /* Set the __var_data field to count2 elements copied from arg2. */
383 memcpy (valaddr_data, VALUE_CONTENTS (arg2),
384 count2 * TYPE_LENGTH (eltype2));
385 /* Zero the rest of the __var_data field of val. */
386 memset (valaddr_data + count2 * TYPE_LENGTH (eltype2), '\0',
387 (count1 - count2) * TYPE_LENGTH (eltype2));
388 return val;
389 }
390 else if (VALUE_LVAL (arg2) == lval_memory)
391 {
392 return value_at_lazy (type, VALUE_ADDRESS (arg2) + VALUE_OFFSET (arg2),
393 VALUE_BFD_SECTION (arg2));
394 }
395 else if (code1 == TYPE_CODE_VOID)
396 {
397 return value_zero (builtin_type_void, not_lval);
398 }
399 else
400 {
401 error ("Invalid cast.");
402 return 0;
403 }
404 }
405
406 /* Create a value of type TYPE that is zero, and return it. */
407
408 value_ptr
409 value_zero (type, lv)
410 struct type *type;
411 enum lval_type lv;
412 {
413 register value_ptr val = allocate_value (type);
414
415 memset (VALUE_CONTENTS (val), 0, TYPE_LENGTH (check_typedef (type)));
416 VALUE_LVAL (val) = lv;
417
418 return val;
419 }
420
421 /* Return a value with type TYPE located at ADDR.
422
423 Call value_at only if the data needs to be fetched immediately;
424 if we can be 'lazy' and defer the fetch, perhaps indefinately, call
425 value_at_lazy instead. value_at_lazy simply records the address of
426 the data and sets the lazy-evaluation-required flag. The lazy flag
427 is tested in the VALUE_CONTENTS macro, which is used if and when
428 the contents are actually required.
429
430 Note: value_at does *NOT* handle embedded offsets; perform such
431 adjustments before or after calling it. */
432
433 value_ptr
434 value_at (type, addr, sect)
435 struct type *type;
436 CORE_ADDR addr;
437 asection *sect;
438 {
439 register value_ptr val;
440
441 if (TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
442 error ("Attempt to dereference a generic pointer.");
443
444 val = allocate_value (type);
445
446 #ifdef GDB_TARGET_IS_D10V
447 if (TYPE_CODE (type) == TYPE_CODE_PTR
448 && TYPE_TARGET_TYPE (type)
449 && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_FUNC))
450 {
451 /* pointer to function */
452 unsigned long num;
453 unsigned short snum;
454 snum = read_memory_unsigned_integer (addr, 2);
455 num = D10V_MAKE_IADDR(snum);
456 store_address ( VALUE_CONTENTS_RAW (val), 4, num);
457 }
458 else if (TYPE_CODE(type) == TYPE_CODE_PTR)
459 {
460 /* pointer to data */
461 unsigned long num;
462 unsigned short snum;
463 snum = read_memory_unsigned_integer (addr, 2);
464 num = D10V_MAKE_DADDR(snum);
465 store_address ( VALUE_CONTENTS_RAW (val), 4, num);
466 }
467 else
468 #endif
469 read_memory_section (addr, VALUE_CONTENTS_ALL_RAW (val), TYPE_LENGTH (type), sect);
470
471 VALUE_LVAL (val) = lval_memory;
472 VALUE_ADDRESS (val) = addr;
473 VALUE_BFD_SECTION (val) = sect;
474
475 return val;
476 }
477
478 /* Return a lazy value with type TYPE located at ADDR (cf. value_at). */
479
480 value_ptr
481 value_at_lazy (type, addr, sect)
482 struct type *type;
483 CORE_ADDR addr;
484 asection *sect;
485 {
486 register value_ptr val;
487
488 if (TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
489 error ("Attempt to dereference a generic pointer.");
490
491 val = allocate_value (type);
492
493 VALUE_LVAL (val) = lval_memory;
494 VALUE_ADDRESS (val) = addr;
495 VALUE_LAZY (val) = 1;
496 VALUE_BFD_SECTION (val) = sect;
497
498 return val;
499 }
500
501 /* Called only from the VALUE_CONTENTS and VALUE_CONTENTS_ALL macros,
502 if the current data for a variable needs to be loaded into
503 VALUE_CONTENTS(VAL). Fetches the data from the user's process, and
504 clears the lazy flag to indicate that the data in the buffer is valid.
505
506 If the value is zero-length, we avoid calling read_memory, which would
507 abort. We mark the value as fetched anyway -- all 0 bytes of it.
508
509 This function returns a value because it is used in the VALUE_CONTENTS
510 macro as part of an expression, where a void would not work. The
511 value is ignored. */
512
513 int
514 value_fetch_lazy (val)
515 register value_ptr val;
516 {
517 CORE_ADDR addr = VALUE_ADDRESS (val) + VALUE_OFFSET (val);
518 int length = TYPE_LENGTH (VALUE_ENCLOSING_TYPE (val));
519
520 #ifdef GDB_TARGET_IS_D10V
521 struct type *type = VALUE_TYPE(val);
522 if (TYPE_CODE (type) == TYPE_CODE_PTR
523 && TYPE_TARGET_TYPE (type)
524 && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_FUNC))
525 {
526 /* pointer to function */
527 unsigned long num;
528 unsigned short snum;
529 snum = read_memory_unsigned_integer (addr, 2);
530 num = D10V_MAKE_IADDR(snum);
531 store_address ( VALUE_CONTENTS_RAW (val), 4, num);
532 }
533 else if (TYPE_CODE(type) == TYPE_CODE_PTR)
534 {
535 /* pointer to data */
536 unsigned long num;
537 unsigned short snum;
538 snum = read_memory_unsigned_integer (addr, 2);
539 num = D10V_MAKE_DADDR(snum);
540 store_address ( VALUE_CONTENTS_RAW (val), 4, num);
541 }
542 else
543 #endif
544
545 if (length)
546 read_memory_section (addr, VALUE_CONTENTS_ALL_RAW (val), length,
547 VALUE_BFD_SECTION (val));
548 VALUE_LAZY (val) = 0;
549 return 0;
550 }
551
552
553 /* Store the contents of FROMVAL into the location of TOVAL.
554 Return a new value with the location of TOVAL and contents of FROMVAL. */
555
556 value_ptr
557 value_assign (toval, fromval)
558 register value_ptr toval, fromval;
559 {
560 register struct type *type;
561 register value_ptr val;
562 char raw_buffer[MAX_REGISTER_RAW_SIZE];
563 int use_buffer = 0;
564
565 if (!toval->modifiable)
566 error ("Left operand of assignment is not a modifiable lvalue.");
567
568 COERCE_REF (toval);
569
570 type = VALUE_TYPE (toval);
571 if (VALUE_LVAL (toval) != lval_internalvar)
572 fromval = value_cast (type, fromval);
573 else
574 COERCE_ARRAY (fromval);
575 CHECK_TYPEDEF (type);
576
577 /* If TOVAL is a special machine register requiring conversion
578 of program values to a special raw format,
579 convert FROMVAL's contents now, with result in `raw_buffer',
580 and set USE_BUFFER to the number of bytes to write. */
581
582 #ifdef REGISTER_CONVERTIBLE
583 if (VALUE_REGNO (toval) >= 0
584 && REGISTER_CONVERTIBLE (VALUE_REGNO (toval)))
585 {
586 int regno = VALUE_REGNO (toval);
587 if (REGISTER_CONVERTIBLE (regno))
588 {
589 struct type *fromtype = check_typedef (VALUE_TYPE (fromval));
590 REGISTER_CONVERT_TO_RAW (fromtype, regno,
591 VALUE_CONTENTS (fromval), raw_buffer);
592 use_buffer = REGISTER_RAW_SIZE (regno);
593 }
594 }
595 #endif
596
597 switch (VALUE_LVAL (toval))
598 {
599 case lval_internalvar:
600 set_internalvar (VALUE_INTERNALVAR (toval), fromval);
601 val = value_copy (VALUE_INTERNALVAR (toval)->value);
602 VALUE_ENCLOSING_TYPE (val) = VALUE_ENCLOSING_TYPE (fromval);
603 VALUE_EMBEDDED_OFFSET (val) = VALUE_EMBEDDED_OFFSET (fromval);
604 VALUE_POINTED_TO_OFFSET (val) = VALUE_POINTED_TO_OFFSET (fromval);
605 return val;
606
607 case lval_internalvar_component:
608 set_internalvar_component (VALUE_INTERNALVAR (toval),
609 VALUE_OFFSET (toval),
610 VALUE_BITPOS (toval),
611 VALUE_BITSIZE (toval),
612 fromval);
613 break;
614
615 case lval_memory:
616 {
617 char *dest_buffer;
618 CORE_ADDR changed_addr;
619 int changed_len;
620
621 if (VALUE_BITSIZE (toval))
622 {
623 char buffer[sizeof (LONGEST)];
624 /* We assume that the argument to read_memory is in units of
625 host chars. FIXME: Is that correct? */
626 changed_len = (VALUE_BITPOS (toval)
627 + VALUE_BITSIZE (toval)
628 + HOST_CHAR_BIT - 1)
629 / HOST_CHAR_BIT;
630
631 if (changed_len > (int) sizeof (LONGEST))
632 error ("Can't handle bitfields which don't fit in a %d bit word.",
633 sizeof (LONGEST) * HOST_CHAR_BIT);
634
635 read_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
636 buffer, changed_len);
637 modify_field (buffer, value_as_long (fromval),
638 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
639 changed_addr = VALUE_ADDRESS (toval) + VALUE_OFFSET (toval);
640 dest_buffer = buffer;
641 }
642 else if (use_buffer)
643 {
644 changed_addr = VALUE_ADDRESS (toval) + VALUE_OFFSET (toval);
645 changed_len = use_buffer;
646 dest_buffer = raw_buffer;
647 }
648 else
649 {
650 changed_addr = VALUE_ADDRESS (toval) + VALUE_OFFSET (toval);
651 changed_len = TYPE_LENGTH (type);
652 dest_buffer = VALUE_CONTENTS (fromval);
653 }
654
655 write_memory (changed_addr, dest_buffer, changed_len);
656 if (memory_changed_hook)
657 memory_changed_hook (changed_addr, changed_len);
658 }
659 break;
660
661 case lval_register:
662 if (VALUE_BITSIZE (toval))
663 {
664 char buffer[sizeof (LONGEST)];
665 int len = REGISTER_RAW_SIZE (VALUE_REGNO (toval));
666
667 if (len > (int) sizeof (LONGEST))
668 error ("Can't handle bitfields in registers larger than %d bits.",
669 sizeof (LONGEST) * HOST_CHAR_BIT);
670
671 if (VALUE_BITPOS (toval) + VALUE_BITSIZE (toval)
672 > len * HOST_CHAR_BIT)
673 /* Getting this right would involve being very careful about
674 byte order. */
675 error ("\
676 Can't handle bitfield which doesn't fit in a single register.");
677
678 read_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
679 buffer, len);
680 modify_field (buffer, value_as_long (fromval),
681 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
682 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
683 buffer, len);
684 }
685 else if (use_buffer)
686 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
687 raw_buffer, use_buffer);
688 else
689 {
690 /* Do any conversion necessary when storing this type to more
691 than one register. */
692 #ifdef REGISTER_CONVERT_FROM_TYPE
693 memcpy (raw_buffer, VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
694 REGISTER_CONVERT_FROM_TYPE(VALUE_REGNO (toval), type, raw_buffer);
695 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
696 raw_buffer, TYPE_LENGTH (type));
697 #else
698 write_register_bytes (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval),
699 VALUE_CONTENTS (fromval), TYPE_LENGTH (type));
700 #endif
701 }
702 /* Assigning to the stack pointer, frame pointer, and other
703 (architecture and calling convention specific) registers may
704 cause the frame cache to be out of date. We just do this
705 on all assignments to registers for simplicity; I doubt the slowdown
706 matters. */
707 reinit_frame_cache ();
708 break;
709
710 case lval_reg_frame_relative:
711 {
712 /* value is stored in a series of registers in the frame
713 specified by the structure. Copy that value out, modify
714 it, and copy it back in. */
715 int amount_to_copy = (VALUE_BITSIZE (toval) ? 1 : TYPE_LENGTH (type));
716 int reg_size = REGISTER_RAW_SIZE (VALUE_FRAME_REGNUM (toval));
717 int byte_offset = VALUE_OFFSET (toval) % reg_size;
718 int reg_offset = VALUE_OFFSET (toval) / reg_size;
719 int amount_copied;
720
721 /* Make the buffer large enough in all cases. */
722 char *buffer = (char *) alloca (amount_to_copy
723 + sizeof (LONGEST)
724 + MAX_REGISTER_RAW_SIZE);
725
726 int regno;
727 struct frame_info *frame;
728
729 /* Figure out which frame this is in currently. */
730 for (frame = get_current_frame ();
731 frame && FRAME_FP (frame) != VALUE_FRAME (toval);
732 frame = get_prev_frame (frame))
733 ;
734
735 if (!frame)
736 error ("Value being assigned to is no longer active.");
737
738 amount_to_copy += (reg_size - amount_to_copy % reg_size);
739
740 /* Copy it out. */
741 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
742 amount_copied = 0);
743 amount_copied < amount_to_copy;
744 amount_copied += reg_size, regno++)
745 {
746 get_saved_register (buffer + amount_copied,
747 (int *)NULL, (CORE_ADDR *)NULL,
748 frame, regno, (enum lval_type *)NULL);
749 }
750
751 /* Modify what needs to be modified. */
752 if (VALUE_BITSIZE (toval))
753 modify_field (buffer + byte_offset,
754 value_as_long (fromval),
755 VALUE_BITPOS (toval), VALUE_BITSIZE (toval));
756 else if (use_buffer)
757 memcpy (buffer + byte_offset, raw_buffer, use_buffer);
758 else
759 memcpy (buffer + byte_offset, VALUE_CONTENTS (fromval),
760 TYPE_LENGTH (type));
761
762 /* Copy it back. */
763 for ((regno = VALUE_FRAME_REGNUM (toval) + reg_offset,
764 amount_copied = 0);
765 amount_copied < amount_to_copy;
766 amount_copied += reg_size, regno++)
767 {
768 enum lval_type lval;
769 CORE_ADDR addr;
770 int optim;
771
772 /* Just find out where to put it. */
773 get_saved_register ((char *)NULL,
774 &optim, &addr, frame, regno, &lval);
775
776 if (optim)
777 error ("Attempt to assign to a value that was optimized out.");
778 if (lval == lval_memory)
779 write_memory (addr, buffer + amount_copied, reg_size);
780 else if (lval == lval_register)
781 write_register_bytes (addr, buffer + amount_copied, reg_size);
782 else
783 error ("Attempt to assign to an unmodifiable value.");
784 }
785
786 if (register_changed_hook)
787 register_changed_hook (-1);
788 }
789 break;
790
791
792 default:
793 error ("Left operand of assignment is not an lvalue.");
794 }
795
796 /* If the field does not entirely fill a LONGEST, then zero the sign bits.
797 If the field is signed, and is negative, then sign extend. */
798 if ((VALUE_BITSIZE (toval) > 0)
799 && (VALUE_BITSIZE (toval) < 8 * (int) sizeof (LONGEST)))
800 {
801 LONGEST fieldval = value_as_long (fromval);
802 LONGEST valmask = (((ULONGEST) 1) << VALUE_BITSIZE (toval)) - 1;
803
804 fieldval &= valmask;
805 if (!TYPE_UNSIGNED (type) && (fieldval & (valmask ^ (valmask >> 1))))
806 fieldval |= ~valmask;
807
808 fromval = value_from_longest (type, fieldval);
809 }
810
811 val = value_copy (toval);
812 memcpy (VALUE_CONTENTS_RAW (val), VALUE_CONTENTS (fromval),
813 TYPE_LENGTH (type));
814 VALUE_TYPE (val) = type;
815 VALUE_ENCLOSING_TYPE (val) = VALUE_ENCLOSING_TYPE (fromval);
816 VALUE_EMBEDDED_OFFSET (val) = VALUE_EMBEDDED_OFFSET (fromval);
817 VALUE_POINTED_TO_OFFSET (val) = VALUE_POINTED_TO_OFFSET (fromval);
818
819 return val;
820 }
821
822 /* Extend a value VAL to COUNT repetitions of its type. */
823
824 value_ptr
825 value_repeat (arg1, count)
826 value_ptr arg1;
827 int count;
828 {
829 register value_ptr val;
830
831 if (VALUE_LVAL (arg1) != lval_memory)
832 error ("Only values in memory can be extended with '@'.");
833 if (count < 1)
834 error ("Invalid number %d of repetitions.", count);
835
836 val = allocate_repeat_value (VALUE_ENCLOSING_TYPE (arg1), count);
837
838 read_memory (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1),
839 VALUE_CONTENTS_ALL_RAW (val),
840 TYPE_LENGTH (VALUE_ENCLOSING_TYPE (val)));
841 VALUE_LVAL (val) = lval_memory;
842 VALUE_ADDRESS (val) = VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1);
843
844 return val;
845 }
846
847 value_ptr
848 value_of_variable (var, b)
849 struct symbol *var;
850 struct block *b;
851 {
852 value_ptr val;
853 struct frame_info *frame = NULL;
854
855 if (!b)
856 frame = NULL; /* Use selected frame. */
857 else if (symbol_read_needs_frame (var))
858 {
859 frame = block_innermost_frame (b);
860 if (!frame)
861 {
862 if (BLOCK_FUNCTION (b)
863 && SYMBOL_SOURCE_NAME (BLOCK_FUNCTION (b)))
864 error ("No frame is currently executing in block %s.",
865 SYMBOL_SOURCE_NAME (BLOCK_FUNCTION (b)));
866 else
867 error ("No frame is currently executing in specified block");
868 }
869 }
870
871 val = read_var_value (var, frame);
872 if (!val)
873 error ("Address of symbol \"%s\" is unknown.", SYMBOL_SOURCE_NAME (var));
874
875 return val;
876 }
877
878 /* Given a value which is an array, return a value which is a pointer to its
879 first element, regardless of whether or not the array has a nonzero lower
880 bound.
881
882 FIXME: A previous comment here indicated that this routine should be
883 substracting the array's lower bound. It's not clear to me that this
884 is correct. Given an array subscripting operation, it would certainly
885 work to do the adjustment here, essentially computing:
886
887 (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
888
889 However I believe a more appropriate and logical place to account for
890 the lower bound is to do so in value_subscript, essentially computing:
891
892 (&array[0] + ((index - lowerbound) * sizeof array[0]))
893
894 As further evidence consider what would happen with operations other
895 than array subscripting, where the caller would get back a value that
896 had an address somewhere before the actual first element of the array,
897 and the information about the lower bound would be lost because of
898 the coercion to pointer type.
899 */
900
901 value_ptr
902 value_coerce_array (arg1)
903 value_ptr arg1;
904 {
905 register struct type *type = check_typedef (VALUE_TYPE (arg1));
906
907 if (VALUE_LVAL (arg1) != lval_memory)
908 error ("Attempt to take address of value not located in memory.");
909
910 return value_from_longest (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
911 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
912 }
913
914 /* Given a value which is a function, return a value which is a pointer
915 to it. */
916
917 value_ptr
918 value_coerce_function (arg1)
919 value_ptr arg1;
920 {
921 value_ptr retval;
922
923 if (VALUE_LVAL (arg1) != lval_memory)
924 error ("Attempt to take address of value not located in memory.");
925
926 retval = value_from_longest (lookup_pointer_type (VALUE_TYPE (arg1)),
927 (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
928 VALUE_BFD_SECTION (retval) = VALUE_BFD_SECTION (arg1);
929 return retval;
930 }
931
932 /* Return a pointer value for the object for which ARG1 is the contents. */
933
934 value_ptr
935 value_addr (arg1)
936 value_ptr arg1;
937 {
938 value_ptr arg2;
939
940 struct type *type = check_typedef (VALUE_TYPE (arg1));
941 if (TYPE_CODE (type) == TYPE_CODE_REF)
942 {
943 /* Copy the value, but change the type from (T&) to (T*).
944 We keep the same location information, which is efficient,
945 and allows &(&X) to get the location containing the reference. */
946 arg2 = value_copy (arg1);
947 VALUE_TYPE (arg2) = lookup_pointer_type (TYPE_TARGET_TYPE (type));
948 return arg2;
949 }
950 if (TYPE_CODE (type) == TYPE_CODE_FUNC)
951 return value_coerce_function (arg1);
952
953 if (VALUE_LVAL (arg1) != lval_memory)
954 error ("Attempt to take address of value not located in memory.");
955
956 /* Get target memory address */
957 arg2 = value_from_longest (lookup_pointer_type (VALUE_TYPE (arg1)),
958 (LONGEST) (VALUE_ADDRESS (arg1)
959 + VALUE_OFFSET (arg1)
960 + VALUE_EMBEDDED_OFFSET (arg1)));
961
962 /* This may be a pointer to a base subobject; so remember the
963 full derived object's type ... */
964 VALUE_ENCLOSING_TYPE (arg2) = lookup_pointer_type (VALUE_ENCLOSING_TYPE (arg1));
965 /* ... and also the relative position of the subobject in the full object */
966 VALUE_POINTED_TO_OFFSET (arg2) = VALUE_EMBEDDED_OFFSET (arg1);
967 VALUE_BFD_SECTION (arg2) = VALUE_BFD_SECTION (arg1);
968 return arg2;
969 }
970
971 /* Given a value of a pointer type, apply the C unary * operator to it. */
972
973 value_ptr
974 value_ind (arg1)
975 value_ptr arg1;
976 {
977 struct type *base_type;
978 value_ptr arg2;
979 value_ptr real_val;
980
981 COERCE_ARRAY (arg1);
982
983 base_type = check_typedef (VALUE_TYPE (arg1));
984
985 if (TYPE_CODE (base_type) == TYPE_CODE_MEMBER)
986 error ("not implemented: member types in value_ind");
987
988 /* Allow * on an integer so we can cast it to whatever we want.
989 This returns an int, which seems like the most C-like thing
990 to do. "long long" variables are rare enough that
991 BUILTIN_TYPE_LONGEST would seem to be a mistake. */
992 if (TYPE_CODE (base_type) == TYPE_CODE_INT)
993 return value_at (builtin_type_int,
994 (CORE_ADDR) value_as_long (arg1),
995 VALUE_BFD_SECTION (arg1));
996 else if (TYPE_CODE (base_type) == TYPE_CODE_PTR)
997 {
998 struct type *enc_type;
999 /* We may be pointing to something embedded in a larger object */
1000 /* Get the real type of the enclosing object */
1001 enc_type = check_typedef (VALUE_ENCLOSING_TYPE (arg1));
1002 enc_type = TYPE_TARGET_TYPE (enc_type);
1003 /* Retrieve the enclosing object pointed to */
1004 arg2 = value_at_lazy (enc_type,
1005 value_as_pointer (arg1) - VALUE_POINTED_TO_OFFSET (arg1),
1006 VALUE_BFD_SECTION (arg1));
1007 /* Re-adjust type */
1008 VALUE_TYPE (arg2) = TYPE_TARGET_TYPE (base_type);
1009 /* Add embedding info */
1010 VALUE_ENCLOSING_TYPE (arg2) = enc_type;
1011 VALUE_EMBEDDED_OFFSET (arg2) = VALUE_POINTED_TO_OFFSET (arg1);
1012
1013 /* We may be pointing to an object of some derived type */
1014 arg2 = value_full_object (arg2, NULL, 0, 0, 0);
1015 return arg2;
1016 }
1017
1018 error ("Attempt to take contents of a non-pointer value.");
1019 return 0; /* For lint -- never reached */
1020 }
1021 \f
1022 /* Pushing small parts of stack frames. */
1023
1024 /* Push one word (the size of object that a register holds). */
1025
1026 CORE_ADDR
1027 push_word (sp, word)
1028 CORE_ADDR sp;
1029 ULONGEST word;
1030 {
1031 register int len = REGISTER_SIZE;
1032 char buffer[MAX_REGISTER_RAW_SIZE];
1033
1034 store_unsigned_integer (buffer, len, word);
1035 if (INNER_THAN (1, 2))
1036 {
1037 /* stack grows downward */
1038 sp -= len;
1039 write_memory (sp, buffer, len);
1040 }
1041 else
1042 {
1043 /* stack grows upward */
1044 write_memory (sp, buffer, len);
1045 sp += len;
1046 }
1047
1048 return sp;
1049 }
1050
1051 /* Push LEN bytes with data at BUFFER. */
1052
1053 CORE_ADDR
1054 push_bytes (sp, buffer, len)
1055 CORE_ADDR sp;
1056 char *buffer;
1057 int len;
1058 {
1059 if (INNER_THAN (1, 2))
1060 {
1061 /* stack grows downward */
1062 sp -= len;
1063 write_memory (sp, buffer, len);
1064 }
1065 else
1066 {
1067 /* stack grows upward */
1068 write_memory (sp, buffer, len);
1069 sp += len;
1070 }
1071
1072 return sp;
1073 }
1074
1075 /* Push onto the stack the specified value VALUE. */
1076
1077 #ifndef PUSH_ARGUMENTS
1078
1079 static CORE_ADDR
1080 value_push (sp, arg)
1081 register CORE_ADDR sp;
1082 value_ptr arg;
1083 {
1084 register int len = TYPE_LENGTH (VALUE_ENCLOSING_TYPE (arg));
1085
1086 if (INNER_THAN (1, 2))
1087 {
1088 /* stack grows downward */
1089 sp -= len;
1090 write_memory (sp, VALUE_CONTENTS_ALL (arg), len);
1091 }
1092 else
1093 {
1094 /* stack grows upward */
1095 write_memory (sp, VALUE_CONTENTS_ALL (arg), len);
1096 sp += len;
1097 }
1098
1099 return sp;
1100 }
1101
1102 #endif /* !PUSH_ARGUMENTS */
1103
1104 #ifdef CALL_DUMMY
1105 /* Perform the standard coercions that are specified
1106 for arguments to be passed to C functions.
1107
1108 If PARAM_TYPE is non-NULL, it is the expected parameter type.
1109 IS_PROTOTYPED is non-zero if the function declaration is prototyped. */
1110
1111 static value_ptr
1112 value_arg_coerce (arg, param_type, is_prototyped)
1113 value_ptr arg;
1114 struct type *param_type;
1115 int is_prototyped;
1116 {
1117 register struct type *arg_type = check_typedef (VALUE_TYPE (arg));
1118 register struct type *type
1119 = param_type ? check_typedef (param_type) : arg_type;
1120
1121 switch (TYPE_CODE (type))
1122 {
1123 case TYPE_CODE_REF:
1124 if (TYPE_CODE (arg_type) != TYPE_CODE_REF)
1125 {
1126 arg = value_addr (arg);
1127 VALUE_TYPE (arg) = param_type;
1128 return arg;
1129 }
1130 break;
1131 case TYPE_CODE_INT:
1132 case TYPE_CODE_CHAR:
1133 case TYPE_CODE_BOOL:
1134 case TYPE_CODE_ENUM:
1135 /* If we don't have a prototype, coerce to integer type if necessary. */
1136 if (!is_prototyped)
1137 {
1138 if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_int))
1139 type = builtin_type_int;
1140 }
1141 /* Currently all target ABIs require at least the width of an integer
1142 type for an argument. We may have to conditionalize the following
1143 type coercion for future targets. */
1144 if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_int))
1145 type = builtin_type_int;
1146 break;
1147 case TYPE_CODE_FLT:
1148 /* FIXME: We should always convert floats to doubles in the
1149 non-prototyped case. As many debugging formats include
1150 no information about prototyping, we have to live with
1151 COERCE_FLOAT_TO_DOUBLE for now. */
1152 if (!is_prototyped && COERCE_FLOAT_TO_DOUBLE)
1153 {
1154 if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_double))
1155 type = builtin_type_double;
1156 else if (TYPE_LENGTH (type) > TYPE_LENGTH (builtin_type_double))
1157 type = builtin_type_long_double;
1158 }
1159 break;
1160 case TYPE_CODE_FUNC:
1161 type = lookup_pointer_type (type);
1162 break;
1163 case TYPE_CODE_ARRAY:
1164 if (current_language->c_style_arrays)
1165 type = lookup_pointer_type (TYPE_TARGET_TYPE (type));
1166 break;
1167 case TYPE_CODE_UNDEF:
1168 case TYPE_CODE_PTR:
1169 case TYPE_CODE_STRUCT:
1170 case TYPE_CODE_UNION:
1171 case TYPE_CODE_VOID:
1172 case TYPE_CODE_SET:
1173 case TYPE_CODE_RANGE:
1174 case TYPE_CODE_STRING:
1175 case TYPE_CODE_BITSTRING:
1176 case TYPE_CODE_ERROR:
1177 case TYPE_CODE_MEMBER:
1178 case TYPE_CODE_METHOD:
1179 case TYPE_CODE_COMPLEX:
1180 default:
1181 break;
1182 }
1183
1184 return value_cast (type, arg);
1185 }
1186
1187 /* Determine a function's address and its return type from its value.
1188 Calls error() if the function is not valid for calling. */
1189
1190 static CORE_ADDR
1191 find_function_addr (function, retval_type)
1192 value_ptr function;
1193 struct type **retval_type;
1194 {
1195 register struct type *ftype = check_typedef (VALUE_TYPE (function));
1196 register enum type_code code = TYPE_CODE (ftype);
1197 struct type *value_type;
1198 CORE_ADDR funaddr;
1199
1200 /* If it's a member function, just look at the function
1201 part of it. */
1202
1203 /* Determine address to call. */
1204 if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
1205 {
1206 funaddr = VALUE_ADDRESS (function);
1207 value_type = TYPE_TARGET_TYPE (ftype);
1208 }
1209 else if (code == TYPE_CODE_PTR)
1210 {
1211 funaddr = value_as_pointer (function);
1212 ftype = check_typedef (TYPE_TARGET_TYPE (ftype));
1213 if (TYPE_CODE (ftype) == TYPE_CODE_FUNC
1214 || TYPE_CODE (ftype) == TYPE_CODE_METHOD)
1215 {
1216 #ifdef CONVERT_FROM_FUNC_PTR_ADDR
1217 /* FIXME: This is a workaround for the unusual function
1218 pointer representation on the RS/6000, see comment
1219 in config/rs6000/tm-rs6000.h */
1220 funaddr = CONVERT_FROM_FUNC_PTR_ADDR (funaddr);
1221 #endif
1222 value_type = TYPE_TARGET_TYPE (ftype);
1223 }
1224 else
1225 value_type = builtin_type_int;
1226 }
1227 else if (code == TYPE_CODE_INT)
1228 {
1229 /* Handle the case of functions lacking debugging info.
1230 Their values are characters since their addresses are char */
1231 if (TYPE_LENGTH (ftype) == 1)
1232 funaddr = value_as_pointer (value_addr (function));
1233 else
1234 /* Handle integer used as address of a function. */
1235 funaddr = (CORE_ADDR) value_as_long (function);
1236
1237 value_type = builtin_type_int;
1238 }
1239 else
1240 error ("Invalid data type for function to be called.");
1241
1242 *retval_type = value_type;
1243 return funaddr;
1244 }
1245
1246 /* All this stuff with a dummy frame may seem unnecessarily complicated
1247 (why not just save registers in GDB?). The purpose of pushing a dummy
1248 frame which looks just like a real frame is so that if you call a
1249 function and then hit a breakpoint (get a signal, etc), "backtrace"
1250 will look right. Whether the backtrace needs to actually show the
1251 stack at the time the inferior function was called is debatable, but
1252 it certainly needs to not display garbage. So if you are contemplating
1253 making dummy frames be different from normal frames, consider that. */
1254
1255 /* Perform a function call in the inferior.
1256 ARGS is a vector of values of arguments (NARGS of them).
1257 FUNCTION is a value, the function to be called.
1258 Returns a value representing what the function returned.
1259 May fail to return, if a breakpoint or signal is hit
1260 during the execution of the function.
1261
1262 ARGS is modified to contain coerced values. */
1263
1264 value_ptr
1265 call_function_by_hand (function, nargs, args)
1266 value_ptr function;
1267 int nargs;
1268 value_ptr *args;
1269 {
1270 register CORE_ADDR sp;
1271 register int i;
1272 CORE_ADDR start_sp;
1273 /* CALL_DUMMY is an array of words (REGISTER_SIZE), but each word
1274 is in host byte order. Before calling FIX_CALL_DUMMY, we byteswap it
1275 and remove any extra bytes which might exist because ULONGEST is
1276 bigger than REGISTER_SIZE.
1277
1278 NOTE: This is pretty wierd, as the call dummy is actually a
1279 sequence of instructions. But CISC machines will have
1280 to pack the instructions into REGISTER_SIZE units (and
1281 so will RISC machines for which INSTRUCTION_SIZE is not
1282 REGISTER_SIZE). */
1283
1284 static ULONGEST dummy[] = CALL_DUMMY;
1285 char dummy1[REGISTER_SIZE * sizeof dummy / sizeof (ULONGEST)];
1286 CORE_ADDR old_sp;
1287 struct type *value_type;
1288 unsigned char struct_return;
1289 CORE_ADDR struct_addr = 0;
1290 struct inferior_status inf_status;
1291 struct cleanup *old_chain;
1292 CORE_ADDR funaddr;
1293 int using_gcc; /* Set to version of gcc in use, or zero if not gcc */
1294 CORE_ADDR real_pc;
1295 struct type *param_type = NULL;
1296 struct type *ftype = check_typedef (SYMBOL_TYPE (function));
1297
1298 if (!target_has_execution)
1299 noprocess();
1300
1301 save_inferior_status (&inf_status, 1);
1302 old_chain = make_cleanup ((make_cleanup_func) restore_inferior_status,
1303 &inf_status);
1304
1305 /* PUSH_DUMMY_FRAME is responsible for saving the inferior registers
1306 (and POP_FRAME for restoring them). (At least on most machines)
1307 they are saved on the stack in the inferior. */
1308 PUSH_DUMMY_FRAME;
1309
1310 old_sp = sp = read_sp ();
1311
1312 if (INNER_THAN (1, 2))
1313 {
1314 /* Stack grows down */
1315 sp -= sizeof dummy1;
1316 start_sp = sp;
1317 }
1318 else
1319 {
1320 /* Stack grows up */
1321 start_sp = sp;
1322 sp += sizeof dummy1;
1323 }
1324
1325 funaddr = find_function_addr (function, &value_type);
1326 CHECK_TYPEDEF (value_type);
1327
1328 {
1329 struct block *b = block_for_pc (funaddr);
1330 /* If compiled without -g, assume GCC 2. */
1331 using_gcc = (b == NULL ? 2 : BLOCK_GCC_COMPILED (b));
1332 }
1333
1334 /* Are we returning a value using a structure return or a normal
1335 value return? */
1336
1337 struct_return = using_struct_return (function, funaddr, value_type,
1338 using_gcc);
1339
1340 /* Create a call sequence customized for this function
1341 and the number of arguments for it. */
1342 for (i = 0; i < (int) (sizeof (dummy) / sizeof (dummy[0])); i++)
1343 store_unsigned_integer (&dummy1[i * REGISTER_SIZE],
1344 REGISTER_SIZE,
1345 (ULONGEST)dummy[i]);
1346
1347 #ifdef GDB_TARGET_IS_HPPA
1348 real_pc = FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
1349 value_type, using_gcc);
1350 #else
1351 FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
1352 value_type, using_gcc);
1353 real_pc = start_sp;
1354 #endif
1355
1356 #if CALL_DUMMY_LOCATION == ON_STACK
1357 write_memory (start_sp, (char *)dummy1, sizeof dummy1);
1358 #endif /* On stack. */
1359
1360 #if CALL_DUMMY_LOCATION == BEFORE_TEXT_END
1361 /* Convex Unix prohibits executing in the stack segment. */
1362 /* Hope there is empty room at the top of the text segment. */
1363 {
1364 extern CORE_ADDR text_end;
1365 static checked = 0;
1366 if (!checked)
1367 for (start_sp = text_end - sizeof dummy1; start_sp < text_end; ++start_sp)
1368 if (read_memory_integer (start_sp, 1) != 0)
1369 error ("text segment full -- no place to put call");
1370 checked = 1;
1371 sp = old_sp;
1372 real_pc = text_end - sizeof dummy1;
1373 write_memory (real_pc, (char *)dummy1, sizeof dummy1);
1374 }
1375 #endif /* Before text_end. */
1376
1377 #if CALL_DUMMY_LOCATION == AFTER_TEXT_END
1378 {
1379 extern CORE_ADDR text_end;
1380 int errcode;
1381 sp = old_sp;
1382 real_pc = text_end;
1383 errcode = target_write_memory (real_pc, (char *)dummy1, sizeof dummy1);
1384 if (errcode != 0)
1385 error ("Cannot write text segment -- call_function failed");
1386 }
1387 #endif /* After text_end. */
1388
1389 #if CALL_DUMMY_LOCATION == AT_ENTRY_POINT
1390 real_pc = funaddr;
1391 #endif /* At entry point. */
1392
1393 #ifdef lint
1394 sp = old_sp; /* It really is used, for some ifdef's... */
1395 #endif
1396
1397 if (nargs < TYPE_NFIELDS (ftype))
1398 error ("too few arguments in function call");
1399
1400 for (i = nargs - 1; i >= 0; i--)
1401 {
1402 /* If we're off the end of the known arguments, do the standard
1403 promotions. FIXME: if we had a prototype, this should only
1404 be allowed if ... were present. */
1405 if (i >= TYPE_NFIELDS (ftype))
1406 args[i] = value_arg_coerce (args[i], NULL, 0);
1407
1408 else
1409 {
1410 int is_prototyped = TYPE_FLAGS (ftype) & TYPE_FLAG_PROTOTYPED;
1411 param_type = TYPE_FIELD_TYPE (ftype, i);
1412
1413 args[i] = value_arg_coerce (args[i], param_type, is_prototyped);
1414 }
1415
1416 /*elz: this code is to handle the case in which the function to be called
1417 has a pointer to function as parameter and the corresponding actual argument
1418 is the address of a function and not a pointer to function variable.
1419 In aCC compiled code, the calls through pointers to functions (in the body
1420 of the function called by hand) are made via $$dyncall_external which
1421 requires some registers setting, this is taken care of if we call
1422 via a function pointer variable, but not via a function address.
1423 In cc this is not a problem. */
1424
1425 if (using_gcc == 0)
1426 if (param_type)
1427 /* if this parameter is a pointer to function*/
1428 if (TYPE_CODE (param_type) == TYPE_CODE_PTR)
1429 if (TYPE_CODE (param_type->target_type) == TYPE_CODE_FUNC)
1430 /* elz: FIXME here should go the test about the compiler used
1431 to compile the target. We want to issue the error
1432 message only if the compiler used was HP's aCC.
1433 If we used HP's cc, then there is no problem and no need
1434 to return at this point */
1435 if (using_gcc == 0) /* && compiler == aCC*/
1436 /* go see if the actual parameter is a variable of type
1437 pointer to function or just a function */
1438 if (args[i]->lval == not_lval)
1439 {
1440 char *arg_name;
1441 if (find_pc_partial_function((CORE_ADDR)args[i]->aligner.contents[0], &arg_name, NULL, NULL))
1442 error("\
1443 You cannot use function <%s> as argument. \n\
1444 You must use a pointer to function type variable. Command ignored.", arg_name);
1445 }
1446 }
1447
1448 #if defined (REG_STRUCT_HAS_ADDR)
1449 {
1450 /* This is a machine like the sparc, where we may need to pass a pointer
1451 to the structure, not the structure itself. */
1452 for (i = nargs - 1; i >= 0; i--)
1453 {
1454 struct type *arg_type = check_typedef (VALUE_TYPE (args[i]));
1455 if ((TYPE_CODE (arg_type) == TYPE_CODE_STRUCT
1456 || TYPE_CODE (arg_type) == TYPE_CODE_UNION
1457 || TYPE_CODE (arg_type) == TYPE_CODE_ARRAY
1458 || TYPE_CODE (arg_type) == TYPE_CODE_STRING
1459 || TYPE_CODE (arg_type) == TYPE_CODE_BITSTRING
1460 || TYPE_CODE (arg_type) == TYPE_CODE_SET
1461 || (TYPE_CODE (arg_type) == TYPE_CODE_FLT
1462 && TYPE_LENGTH (arg_type) > 8)
1463 )
1464 && REG_STRUCT_HAS_ADDR (using_gcc, arg_type))
1465 {
1466 CORE_ADDR addr;
1467 int len; /* = TYPE_LENGTH (arg_type); */
1468 int aligned_len;
1469 arg_type = check_typedef (VALUE_ENCLOSING_TYPE (args[i]));
1470 len = TYPE_LENGTH (arg_type);
1471
1472 #ifdef STACK_ALIGN
1473 /* MVS 11/22/96: I think at least some of this stack_align code is
1474 really broken. Better to let PUSH_ARGUMENTS adjust the stack in
1475 a target-defined manner. */
1476 aligned_len = STACK_ALIGN (len);
1477 #else
1478 aligned_len = len;
1479 #endif
1480 if (INNER_THAN (1, 2))
1481 {
1482 /* stack grows downward */
1483 sp -= aligned_len;
1484 }
1485 else
1486 {
1487 /* The stack grows up, so the address of the thing we push
1488 is the stack pointer before we push it. */
1489 addr = sp;
1490 }
1491 /* Push the structure. */
1492 write_memory (sp, VALUE_CONTENTS_ALL (args[i]), len);
1493 if (INNER_THAN (1, 2))
1494 {
1495 /* The stack grows down, so the address of the thing we push
1496 is the stack pointer after we push it. */
1497 addr = sp;
1498 }
1499 else
1500 {
1501 /* stack grows upward */
1502 sp += aligned_len;
1503 }
1504 /* The value we're going to pass is the address of the thing
1505 we just pushed. */
1506 /*args[i] = value_from_longest (lookup_pointer_type (value_type),
1507 (LONGEST) addr);*/
1508 args[i] = value_from_longest (lookup_pointer_type (arg_type),
1509 (LONGEST) addr);
1510 }
1511 }
1512 }
1513 #endif /* REG_STRUCT_HAS_ADDR. */
1514
1515 /* Reserve space for the return structure to be written on the
1516 stack, if necessary */
1517
1518 if (struct_return)
1519 {
1520 int len = TYPE_LENGTH (value_type);
1521 #ifdef STACK_ALIGN
1522 /* MVS 11/22/96: I think at least some of this stack_align code is
1523 really broken. Better to let PUSH_ARGUMENTS adjust the stack in
1524 a target-defined manner. */
1525 len = STACK_ALIGN (len);
1526 #endif
1527 if (INNER_THAN (1, 2))
1528 {
1529 /* stack grows downward */
1530 sp -= len;
1531 struct_addr = sp;
1532 }
1533 else
1534 {
1535 /* stack grows upward */
1536 struct_addr = sp;
1537 sp += len;
1538 }
1539 }
1540
1541 /* elz: on HPPA no need for this extra alignment, maybe it is needed
1542 on other architectures. This is because all the alignment is taken care
1543 of in the above code (ifdef REG_STRUCT_HAS_ADDR) and in
1544 hppa_push_arguments*/
1545 #ifndef NO_EXTRA_ALIGNMENT_NEEDED
1546
1547 #if defined(STACK_ALIGN)
1548 /* MVS 11/22/96: I think at least some of this stack_align code is
1549 really broken. Better to let PUSH_ARGUMENTS adjust the stack in
1550 a target-defined manner. */
1551 if (INNER_THAN (1, 2))
1552 {
1553 /* If stack grows down, we must leave a hole at the top. */
1554 int len = 0;
1555
1556 for (i = nargs - 1; i >= 0; i--)
1557 len += TYPE_LENGTH (VALUE_ENCLOSING_TYPE (args[i]));
1558 #ifdef CALL_DUMMY_STACK_ADJUST
1559 len += CALL_DUMMY_STACK_ADJUST;
1560 #endif
1561 sp -= STACK_ALIGN (len) - len;
1562 }
1563 #endif /* STACK_ALIGN */
1564 #endif /* NO_EXTRA_ALIGNMENT_NEEDED */
1565
1566 #ifdef PUSH_ARGUMENTS
1567 PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr);
1568 #else /* !PUSH_ARGUMENTS */
1569 for (i = nargs - 1; i >= 0; i--)
1570 sp = value_push (sp, args[i]);
1571 #endif /* !PUSH_ARGUMENTS */
1572
1573 #ifdef PUSH_RETURN_ADDRESS /* for targets that use no CALL_DUMMY */
1574 /* There are a number of targets now which actually don't write any
1575 CALL_DUMMY instructions into the target, but instead just save the
1576 machine state, push the arguments, and jump directly to the callee
1577 function. Since this doesn't actually involve executing a JSR/BSR
1578 instruction, the return address must be set up by hand, either by
1579 pushing onto the stack or copying into a return-address register
1580 as appropriate. Formerly this has been done in PUSH_ARGUMENTS,
1581 but that's overloading its functionality a bit, so I'm making it
1582 explicit to do it here. */
1583 sp = PUSH_RETURN_ADDRESS(real_pc, sp);
1584 #endif /* PUSH_RETURN_ADDRESS */
1585
1586 #if defined(STACK_ALIGN)
1587 if (! INNER_THAN (1, 2))
1588 {
1589 /* If stack grows up, we must leave a hole at the bottom, note
1590 that sp already has been advanced for the arguments! */
1591 #ifdef CALL_DUMMY_STACK_ADJUST
1592 sp += CALL_DUMMY_STACK_ADJUST;
1593 #endif
1594 sp = STACK_ALIGN (sp);
1595 }
1596 #endif /* STACK_ALIGN */
1597
1598 /* XXX This seems wrong. For stacks that grow down we shouldn't do
1599 anything here! */
1600 /* MVS 11/22/96: I think at least some of this stack_align code is
1601 really broken. Better to let PUSH_ARGUMENTS adjust the stack in
1602 a target-defined manner. */
1603 #ifdef CALL_DUMMY_STACK_ADJUST
1604 if (INNER_THAN (1, 2))
1605 {
1606 /* stack grows downward */
1607 sp -= CALL_DUMMY_STACK_ADJUST;
1608 }
1609 #endif /* CALL_DUMMY_STACK_ADJUST */
1610
1611 /* Store the address at which the structure is supposed to be
1612 written. Note that this (and the code which reserved the space
1613 above) assumes that gcc was used to compile this function. Since
1614 it doesn't cost us anything but space and if the function is pcc
1615 it will ignore this value, we will make that assumption.
1616
1617 Also note that on some machines (like the sparc) pcc uses a
1618 convention like gcc's. */
1619
1620 if (struct_return)
1621 STORE_STRUCT_RETURN (struct_addr, sp);
1622
1623 /* Write the stack pointer. This is here because the statements above
1624 might fool with it. On SPARC, this write also stores the register
1625 window into the right place in the new stack frame, which otherwise
1626 wouldn't happen. (See store_inferior_registers in sparc-nat.c.) */
1627 write_sp (sp);
1628
1629 {
1630 char retbuf[REGISTER_BYTES];
1631 char *name;
1632 struct symbol *symbol;
1633
1634 name = NULL;
1635 symbol = find_pc_function (funaddr);
1636 if (symbol)
1637 {
1638 name = SYMBOL_SOURCE_NAME (symbol);
1639 }
1640 else
1641 {
1642 /* Try the minimal symbols. */
1643 struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (funaddr);
1644
1645 if (msymbol)
1646 {
1647 name = SYMBOL_SOURCE_NAME (msymbol);
1648 }
1649 }
1650 if (name == NULL)
1651 {
1652 char format[80];
1653 sprintf (format, "at %s", local_hex_format ());
1654 name = alloca (80);
1655 /* FIXME-32x64: assumes funaddr fits in a long. */
1656 sprintf (name, format, (unsigned long) funaddr);
1657 }
1658
1659 /* Execute the stack dummy routine, calling FUNCTION.
1660 When it is done, discard the empty frame
1661 after storing the contents of all regs into retbuf. */
1662 if (run_stack_dummy (real_pc + CALL_DUMMY_START_OFFSET, retbuf))
1663 {
1664 /* We stopped somewhere besides the call dummy. */
1665
1666 /* If we did the cleanups, we would print a spurious error message
1667 (Unable to restore previously selected frame), would write the
1668 registers from the inf_status (which is wrong), and would do other
1669 wrong things (like set stop_bpstat to the wrong thing). */
1670 discard_cleanups (old_chain);
1671 /* Prevent memory leak. */
1672 bpstat_clear (&inf_status.stop_bpstat);
1673
1674 /* The following error message used to say "The expression
1675 which contained the function call has been discarded." It
1676 is a hard concept to explain in a few words. Ideally, GDB
1677 would be able to resume evaluation of the expression when
1678 the function finally is done executing. Perhaps someday
1679 this will be implemented (it would not be easy). */
1680
1681 /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
1682 a C++ name with arguments and stuff. */
1683 error ("\
1684 The program being debugged stopped while in a function called from GDB.\n\
1685 When the function (%s) is done executing, GDB will silently\n\
1686 stop (instead of continuing to evaluate the expression containing\n\
1687 the function call).", name);
1688 }
1689
1690 do_cleanups (old_chain);
1691
1692 /* Figure out the value returned by the function. */
1693 /* elz: I defined this new macro for the hppa architecture only.
1694 this gives us a way to get the value returned by the function from the stack,
1695 at the same address we told the function to put it.
1696 We cannot assume on the pa that r28 still contains the address of the returned
1697 structure. Usually this will be overwritten by the callee.
1698 I don't know about other architectures, so I defined this macro
1699 */
1700
1701 #ifdef VALUE_RETURNED_FROM_STACK
1702 if (struct_return)
1703 return (value_ptr) VALUE_RETURNED_FROM_STACK (value_type, struct_addr);
1704 #endif
1705
1706 return value_being_returned (value_type, retbuf, struct_return);
1707 }
1708 }
1709 #else /* no CALL_DUMMY. */
1710 value_ptr
1711 call_function_by_hand (function, nargs, args)
1712 value_ptr function;
1713 int nargs;
1714 value_ptr *args;
1715 {
1716 error ("Cannot invoke functions on this machine.");
1717 }
1718 #endif /* no CALL_DUMMY. */
1719
1720 \f
1721 /* Create a value for an array by allocating space in the inferior, copying
1722 the data into that space, and then setting up an array value.
1723
1724 The array bounds are set from LOWBOUND and HIGHBOUND, and the array is
1725 populated from the values passed in ELEMVEC.
1726
1727 The element type of the array is inherited from the type of the
1728 first element, and all elements must have the same size (though we
1729 don't currently enforce any restriction on their types). */
1730
1731 value_ptr
1732 value_array (lowbound, highbound, elemvec)
1733 int lowbound;
1734 int highbound;
1735 value_ptr *elemvec;
1736 {
1737 int nelem;
1738 int idx;
1739 unsigned int typelength;
1740 value_ptr val;
1741 struct type *rangetype;
1742 struct type *arraytype;
1743 CORE_ADDR addr;
1744
1745 /* Validate that the bounds are reasonable and that each of the elements
1746 have the same size. */
1747
1748 nelem = highbound - lowbound + 1;
1749 if (nelem <= 0)
1750 {
1751 error ("bad array bounds (%d, %d)", lowbound, highbound);
1752 }
1753 typelength = TYPE_LENGTH (VALUE_ENCLOSING_TYPE (elemvec[0]));
1754 for (idx = 1; idx < nelem; idx++)
1755 {
1756 if (TYPE_LENGTH (VALUE_ENCLOSING_TYPE (elemvec[idx])) != typelength)
1757 {
1758 error ("array elements must all be the same size");
1759 }
1760 }
1761
1762 rangetype = create_range_type ((struct type *) NULL, builtin_type_int,
1763 lowbound, highbound);
1764 arraytype = create_array_type ((struct type *) NULL,
1765 VALUE_ENCLOSING_TYPE (elemvec[0]), rangetype);
1766
1767 if (!current_language->c_style_arrays)
1768 {
1769 val = allocate_value (arraytype);
1770 for (idx = 0; idx < nelem; idx++)
1771 {
1772 memcpy (VALUE_CONTENTS_ALL_RAW (val) + (idx * typelength),
1773 VALUE_CONTENTS_ALL (elemvec[idx]),
1774 typelength);
1775 }
1776 VALUE_BFD_SECTION (val) = VALUE_BFD_SECTION (elemvec[0]);
1777 return val;
1778 }
1779
1780 /* Allocate space to store the array in the inferior, and then initialize
1781 it by copying in each element. FIXME: Is it worth it to create a
1782 local buffer in which to collect each value and then write all the
1783 bytes in one operation? */
1784
1785 addr = allocate_space_in_inferior (nelem * typelength);
1786 for (idx = 0; idx < nelem; idx++)
1787 {
1788 write_memory (addr + (idx * typelength), VALUE_CONTENTS_ALL (elemvec[idx]),
1789 typelength);
1790 }
1791
1792 /* Create the array type and set up an array value to be evaluated lazily. */
1793
1794 val = value_at_lazy (arraytype, addr, VALUE_BFD_SECTION (elemvec[0]));
1795 return (val);
1796 }
1797
1798 /* Create a value for a string constant by allocating space in the inferior,
1799 copying the data into that space, and returning the address with type
1800 TYPE_CODE_STRING. PTR points to the string constant data; LEN is number
1801 of characters.
1802 Note that string types are like array of char types with a lower bound of
1803 zero and an upper bound of LEN - 1. Also note that the string may contain
1804 embedded null bytes. */
1805
1806 value_ptr
1807 value_string (ptr, len)
1808 char *ptr;
1809 int len;
1810 {
1811 value_ptr val;
1812 int lowbound = current_language->string_lower_bound;
1813 struct type *rangetype = create_range_type ((struct type *) NULL,
1814 builtin_type_int,
1815 lowbound, len + lowbound - 1);
1816 struct type *stringtype
1817 = create_string_type ((struct type *) NULL, rangetype);
1818 CORE_ADDR addr;
1819
1820 if (current_language->c_style_arrays == 0)
1821 {
1822 val = allocate_value (stringtype);
1823 memcpy (VALUE_CONTENTS_RAW (val), ptr, len);
1824 return val;
1825 }
1826
1827
1828 /* Allocate space to store the string in the inferior, and then
1829 copy LEN bytes from PTR in gdb to that address in the inferior. */
1830
1831 addr = allocate_space_in_inferior (len);
1832 write_memory (addr, ptr, len);
1833
1834 val = value_at_lazy (stringtype, addr, NULL);
1835 return (val);
1836 }
1837
1838 value_ptr
1839 value_bitstring (ptr, len)
1840 char *ptr;
1841 int len;
1842 {
1843 value_ptr val;
1844 struct type *domain_type = create_range_type (NULL, builtin_type_int,
1845 0, len - 1);
1846 struct type *type = create_set_type ((struct type*) NULL, domain_type);
1847 TYPE_CODE (type) = TYPE_CODE_BITSTRING;
1848 val = allocate_value (type);
1849 memcpy (VALUE_CONTENTS_RAW (val), ptr, TYPE_LENGTH (type));
1850 return val;
1851 }
1852 \f
1853 /* See if we can pass arguments in T2 to a function which takes arguments
1854 of types T1. Both t1 and t2 are NULL-terminated vectors. If some
1855 arguments need coercion of some sort, then the coerced values are written
1856 into T2. Return value is 0 if the arguments could be matched, or the
1857 position at which they differ if not.
1858
1859 STATICP is nonzero if the T1 argument list came from a
1860 static member function.
1861
1862 For non-static member functions, we ignore the first argument,
1863 which is the type of the instance variable. This is because we want
1864 to handle calls with objects from derived classes. This is not
1865 entirely correct: we should actually check to make sure that a
1866 requested operation is type secure, shouldn't we? FIXME. */
1867
1868 static int
1869 typecmp (staticp, t1, t2)
1870 int staticp;
1871 struct type *t1[];
1872 value_ptr t2[];
1873 {
1874 int i;
1875
1876 if (t2 == 0)
1877 return 1;
1878 if (staticp && t1 == 0)
1879 return t2[1] != 0;
1880 if (t1 == 0)
1881 return 1;
1882 if (TYPE_CODE (t1[0]) == TYPE_CODE_VOID) return 0;
1883 if (t1[!staticp] == 0) return 0;
1884 for (i = !staticp; t1[i] && TYPE_CODE (t1[i]) != TYPE_CODE_VOID; i++)
1885 {
1886 struct type *tt1, *tt2;
1887 if (! t2[i])
1888 return i+1;
1889 tt1 = check_typedef (t1[i]);
1890 tt2 = check_typedef (VALUE_TYPE(t2[i]));
1891 if (TYPE_CODE (tt1) == TYPE_CODE_REF
1892 /* We should be doing hairy argument matching, as below. */
1893 && (TYPE_CODE (check_typedef (TYPE_TARGET_TYPE (tt1))) == TYPE_CODE (tt2)))
1894 {
1895 if (TYPE_CODE (tt2) == TYPE_CODE_ARRAY)
1896 t2[i] = value_coerce_array (t2[i]);
1897 else
1898 t2[i] = value_addr (t2[i]);
1899 continue;
1900 }
1901
1902 while (TYPE_CODE (tt1) == TYPE_CODE_PTR
1903 && ( TYPE_CODE (tt2) == TYPE_CODE_ARRAY
1904 || TYPE_CODE (tt2) == TYPE_CODE_PTR))
1905 {
1906 tt1 = check_typedef (TYPE_TARGET_TYPE(tt1));
1907 tt2 = check_typedef (TYPE_TARGET_TYPE(tt2));
1908 }
1909 if (TYPE_CODE(tt1) == TYPE_CODE(tt2)) continue;
1910 /* Array to pointer is a `trivial conversion' according to the ARM. */
1911
1912 /* We should be doing much hairier argument matching (see section 13.2
1913 of the ARM), but as a quick kludge, just check for the same type
1914 code. */
1915 if (TYPE_CODE (t1[i]) != TYPE_CODE (VALUE_TYPE (t2[i])))
1916 return i+1;
1917 }
1918 if (!t1[i]) return 0;
1919 return t2[i] ? i+1 : 0;
1920 }
1921
1922 /* Helper function used by value_struct_elt to recurse through baseclasses.
1923 Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
1924 and search in it assuming it has (class) type TYPE.
1925 If found, return value, else return NULL.
1926
1927 If LOOKING_FOR_BASECLASS, then instead of looking for struct fields,
1928 look for a baseclass named NAME. */
1929
1930 static value_ptr
1931 search_struct_field (name, arg1, offset, type, looking_for_baseclass)
1932 char *name;
1933 register value_ptr arg1;
1934 int offset;
1935 register struct type *type;
1936 int looking_for_baseclass;
1937 {
1938 int i;
1939 int nbases = TYPE_N_BASECLASSES (type);
1940
1941 CHECK_TYPEDEF (type);
1942
1943 if (! looking_for_baseclass)
1944 for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
1945 {
1946 char *t_field_name = TYPE_FIELD_NAME (type, i);
1947
1948 if (t_field_name && STREQ (t_field_name, name))
1949 {
1950 value_ptr v;
1951 if (TYPE_FIELD_STATIC (type, i))
1952 v = value_static_field (type, i);
1953 else
1954 v = value_primitive_field (arg1, offset, i, type);
1955 if (v == 0)
1956 error("there is no field named %s", name);
1957 return v;
1958 }
1959
1960 if (t_field_name
1961 && (t_field_name[0] == '\0'
1962 || (TYPE_CODE (type) == TYPE_CODE_UNION
1963 && STREQ (t_field_name, "else"))))
1964 {
1965 struct type *field_type = TYPE_FIELD_TYPE (type, i);
1966 if (TYPE_CODE (field_type) == TYPE_CODE_UNION
1967 || TYPE_CODE (field_type) == TYPE_CODE_STRUCT)
1968 {
1969 /* Look for a match through the fields of an anonymous union,
1970 or anonymous struct. C++ provides anonymous unions.
1971
1972 In the GNU Chill implementation of variant record types,
1973 each <alternative field> has an (anonymous) union type,
1974 each member of the union represents a <variant alternative>.
1975 Each <variant alternative> is represented as a struct,
1976 with a member for each <variant field>. */
1977
1978 value_ptr v;
1979 int new_offset = offset;
1980
1981 /* This is pretty gross. In G++, the offset in an anonymous
1982 union is relative to the beginning of the enclosing struct.
1983 In the GNU Chill implementation of variant records,
1984 the bitpos is zero in an anonymous union field, so we
1985 have to add the offset of the union here. */
1986 if (TYPE_CODE (field_type) == TYPE_CODE_STRUCT
1987 || (TYPE_NFIELDS (field_type) > 0
1988 && TYPE_FIELD_BITPOS (field_type, 0) == 0))
1989 new_offset += TYPE_FIELD_BITPOS (type, i) / 8;
1990
1991 v = search_struct_field (name, arg1, new_offset, field_type,
1992 looking_for_baseclass);
1993 if (v)
1994 return v;
1995 }
1996 }
1997 }
1998
1999 for (i = 0; i < nbases; i++)
2000 {
2001 value_ptr v;
2002 struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
2003 /* If we are looking for baseclasses, this is what we get when we
2004 hit them. But it could happen that the base part's member name
2005 is not yet filled in. */
2006 int found_baseclass = (looking_for_baseclass
2007 && TYPE_BASECLASS_NAME (type, i) != NULL
2008 && STREQ (name, TYPE_BASECLASS_NAME (type, i)));
2009
2010 if (BASETYPE_VIA_VIRTUAL (type, i))
2011 {
2012 int boffset;
2013 value_ptr v2 = allocate_value (basetype);
2014
2015 boffset = baseclass_offset (type, i,
2016 VALUE_CONTENTS (arg1) + offset,
2017 VALUE_ADDRESS (arg1)
2018 + VALUE_OFFSET (arg1) + offset);
2019 if (boffset == -1)
2020 error ("virtual baseclass botch");
2021
2022 /* The virtual base class pointer might have been clobbered by the
2023 user program. Make sure that it still points to a valid memory
2024 location. */
2025
2026 boffset += offset;
2027 if (boffset < 0 || boffset >= TYPE_LENGTH (type))
2028 {
2029 CORE_ADDR base_addr;
2030
2031 base_addr = VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1) + boffset;
2032 if (target_read_memory (base_addr, VALUE_CONTENTS_RAW (v2),
2033 TYPE_LENGTH (basetype)) != 0)
2034 error ("virtual baseclass botch");
2035 VALUE_LVAL (v2) = lval_memory;
2036 VALUE_ADDRESS (v2) = base_addr;
2037 }
2038 else
2039 {
2040 VALUE_LVAL (v2) = VALUE_LVAL (arg1);
2041 VALUE_ADDRESS (v2) = VALUE_ADDRESS (arg1);
2042 VALUE_OFFSET (v2) = VALUE_OFFSET (arg1) + boffset;
2043 if (VALUE_LAZY (arg1))
2044 VALUE_LAZY (v2) = 1;
2045 else
2046 memcpy (VALUE_CONTENTS_RAW (v2),
2047 VALUE_CONTENTS_RAW (arg1) + boffset,
2048 TYPE_LENGTH (basetype));
2049 }
2050
2051 if (found_baseclass)
2052 return v2;
2053 v = search_struct_field (name, v2, 0, TYPE_BASECLASS (type, i),
2054 looking_for_baseclass);
2055 }
2056 else if (found_baseclass)
2057 v = value_primitive_field (arg1, offset, i, type);
2058 else
2059 v = search_struct_field (name, arg1,
2060 offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
2061 basetype, looking_for_baseclass);
2062 if (v) return v;
2063 }
2064 return NULL;
2065 }
2066
2067
2068 /* Return the offset (in bytes) of the virtual base of type BASETYPE
2069 * in an object pointed to by VALADDR (on the host), assumed to be of
2070 * type TYPE. OFFSET is number of bytes beyond start of ARG to start
2071 * looking (in case VALADDR is the contents of an enclosing object).
2072 *
2073 * This routine recurses on the primary base of the derived class because
2074 * the virtual base entries of the primary base appear before the other
2075 * virtual base entries.
2076 *
2077 * If the virtual base is not found, a negative integer is returned.
2078 * The magnitude of the negative integer is the number of entries in
2079 * the virtual table to skip over (entries corresponding to various
2080 * ancestral classes in the chain of primary bases).
2081 *
2082 * Important: This assumes the HP / Taligent C++ runtime
2083 * conventions. Use baseclass_offset() instead to deal with g++
2084 * conventions. */
2085
2086 void
2087 find_rt_vbase_offset(type, basetype, valaddr, offset, boffset_p, skip_p)
2088 struct type * type;
2089 struct type * basetype;
2090 char * valaddr;
2091 int offset;
2092 int * boffset_p;
2093 int * skip_p;
2094 {
2095 int boffset; /* offset of virtual base */
2096 int index; /* displacement to use in virtual table */
2097 int skip;
2098
2099 value_ptr vp;
2100 CORE_ADDR vtbl; /* the virtual table pointer */
2101 struct type * pbc; /* the primary base class */
2102
2103 /* Look for the virtual base recursively in the primary base, first.
2104 * This is because the derived class object and its primary base
2105 * subobject share the primary virtual table. */
2106
2107 boffset = 0;
2108 pbc = TYPE_PRIMARY_BASE(type);
2109 if (pbc)
2110 {
2111 find_rt_vbase_offset (pbc, basetype, valaddr, offset, &boffset, &skip);
2112 if (skip < 0)
2113 {
2114 *boffset_p = boffset;
2115 *skip_p = -1;
2116 return;
2117 }
2118 }
2119 else
2120 skip = 0;
2121
2122
2123 /* Find the index of the virtual base according to HP/Taligent
2124 runtime spec. (Depth-first, left-to-right.) */
2125 index = virtual_base_index_skip_primaries (basetype, type);
2126
2127 if (index < 0) {
2128 *skip_p = skip + virtual_base_list_length_skip_primaries (type);
2129 *boffset_p = 0;
2130 return;
2131 }
2132
2133 /* pai: FIXME -- 32x64 possible problem */
2134 /* First word (4 bytes) in object layout is the vtable pointer */
2135 vtbl = * (CORE_ADDR *) (valaddr + offset);
2136
2137 /* Before the constructor is invoked, things are usually zero'd out. */
2138 if (vtbl == 0)
2139 error ("Couldn't find virtual table -- object may not be constructed yet.");
2140
2141
2142 /* Find virtual base's offset -- jump over entries for primary base
2143 * ancestors, then use the index computed above. But also adjust by
2144 * HP_ACC_VBASE_START for the vtable slots before the start of the
2145 * virtual base entries. Offset is negative -- virtual base entries
2146 * appear _before_ the address point of the virtual table. */
2147
2148 /* pai: FIXME -- 32x64 problem, if word = 8 bytes, change multiplier
2149 & use long type */
2150
2151 /* epstein : FIXME -- added param for overlay section. May not be correct */
2152 vp = value_at (builtin_type_int, vtbl + 4 * (- skip - index - HP_ACC_VBASE_START), NULL);
2153 boffset = value_as_long (vp);
2154 *skip_p = -1;
2155 *boffset_p = boffset;
2156 return;
2157 }
2158
2159
2160 /* Helper function used by value_struct_elt to recurse through baseclasses.
2161 Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
2162 and search in it assuming it has (class) type TYPE.
2163 If found, return value, else if name matched and args not return (value)-1,
2164 else return NULL. */
2165
2166 static value_ptr
2167 search_struct_method (name, arg1p, args, offset, static_memfuncp, type)
2168 char *name;
2169 register value_ptr *arg1p, *args;
2170 int offset, *static_memfuncp;
2171 register struct type *type;
2172 {
2173 int i;
2174 value_ptr v;
2175 int name_matched = 0;
2176 char dem_opname[64];
2177
2178 CHECK_TYPEDEF (type);
2179 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2180 {
2181 char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2182 /* FIXME! May need to check for ARM demangling here */
2183 if (strncmp(t_field_name, "__", 2)==0 ||
2184 strncmp(t_field_name, "op", 2)==0 ||
2185 strncmp(t_field_name, "type", 4)==0 )
2186 {
2187 if (cplus_demangle_opname(t_field_name, dem_opname, DMGL_ANSI))
2188 t_field_name = dem_opname;
2189 else if (cplus_demangle_opname(t_field_name, dem_opname, 0))
2190 t_field_name = dem_opname;
2191 }
2192 if (t_field_name && STREQ (t_field_name, name))
2193 {
2194 int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
2195 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
2196 name_matched = 1;
2197
2198 if (j > 0 && args == 0)
2199 error ("cannot resolve overloaded method `%s': no arguments supplied", name);
2200 while (j >= 0)
2201 {
2202 if (TYPE_FN_FIELD_STUB (f, j))
2203 check_stub_method (type, i, j);
2204 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
2205 TYPE_FN_FIELD_ARGS (f, j), args))
2206 {
2207 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
2208 return value_virtual_fn_field (arg1p, f, j, type, offset);
2209 if (TYPE_FN_FIELD_STATIC_P (f, j) && static_memfuncp)
2210 *static_memfuncp = 1;
2211 v = value_fn_field (arg1p, f, j, type, offset);
2212 if (v != NULL) return v;
2213 }
2214 j--;
2215 }
2216 }
2217 }
2218
2219 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2220 {
2221 int base_offset;
2222
2223 if (BASETYPE_VIA_VIRTUAL (type, i))
2224 {
2225 if (TYPE_HAS_VTABLE (type))
2226 {
2227 /* HP aCC compiled type, search for virtual base offset
2228 according to HP/Taligent runtime spec. */
2229 int skip;
2230 find_rt_vbase_offset (type, TYPE_BASECLASS (type, i),
2231 VALUE_CONTENTS_ALL (*arg1p),
2232 offset + VALUE_EMBEDDED_OFFSET (*arg1p),
2233 &base_offset, &skip);
2234 if (skip >= 0)
2235 error ("Virtual base class offset not found in vtable");
2236 }
2237 else
2238 {
2239 struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
2240 char *base_valaddr;
2241
2242 /* The virtual base class pointer might have been clobbered by the
2243 user program. Make sure that it still points to a valid memory
2244 location. */
2245
2246 if (offset < 0 || offset >= TYPE_LENGTH (type))
2247 {
2248 base_valaddr = (char *) alloca (TYPE_LENGTH (baseclass));
2249 if (target_read_memory (VALUE_ADDRESS (*arg1p)
2250 + VALUE_OFFSET (*arg1p) + offset,
2251 base_valaddr,
2252 TYPE_LENGTH (baseclass)) != 0)
2253 error ("virtual baseclass botch");
2254 }
2255 else
2256 base_valaddr = VALUE_CONTENTS (*arg1p) + offset;
2257
2258 base_offset =
2259 baseclass_offset (type, i, base_valaddr,
2260 VALUE_ADDRESS (*arg1p)
2261 + VALUE_OFFSET (*arg1p) + offset);
2262 if (base_offset == -1)
2263 error ("virtual baseclass botch");
2264 }
2265 }
2266 else
2267 {
2268 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2269 }
2270 v = search_struct_method (name, arg1p, args, base_offset + offset,
2271 static_memfuncp, TYPE_BASECLASS (type, i));
2272 if (v == (value_ptr) -1)
2273 {
2274 name_matched = 1;
2275 }
2276 else if (v)
2277 {
2278 /* FIXME-bothner: Why is this commented out? Why is it here? */
2279 /* *arg1p = arg1_tmp;*/
2280 return v;
2281 }
2282 }
2283 if (name_matched) return (value_ptr) -1;
2284 else return NULL;
2285 }
2286
2287 /* Given *ARGP, a value of type (pointer to a)* structure/union,
2288 extract the component named NAME from the ultimate target structure/union
2289 and return it as a value with its appropriate type.
2290 ERR is used in the error message if *ARGP's type is wrong.
2291
2292 C++: ARGS is a list of argument types to aid in the selection of
2293 an appropriate method. Also, handle derived types.
2294
2295 STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
2296 where the truthvalue of whether the function that was resolved was
2297 a static member function or not is stored.
2298
2299 ERR is an error message to be printed in case the field is not found. */
2300
2301 value_ptr
2302 value_struct_elt (argp, args, name, static_memfuncp, err)
2303 register value_ptr *argp, *args;
2304 char *name;
2305 int *static_memfuncp;
2306 char *err;
2307 {
2308 register struct type *t;
2309 value_ptr v;
2310
2311 COERCE_ARRAY (*argp);
2312
2313 t = check_typedef (VALUE_TYPE (*argp));
2314
2315 /* Follow pointers until we get to a non-pointer. */
2316
2317 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
2318 {
2319 *argp = value_ind (*argp);
2320 /* Don't coerce fn pointer to fn and then back again! */
2321 if (TYPE_CODE (VALUE_TYPE (*argp)) != TYPE_CODE_FUNC)
2322 COERCE_ARRAY (*argp);
2323 t = check_typedef (VALUE_TYPE (*argp));
2324 }
2325
2326 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
2327 error ("not implemented: member type in value_struct_elt");
2328
2329 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
2330 && TYPE_CODE (t) != TYPE_CODE_UNION)
2331 error ("Attempt to extract a component of a value that is not a %s.", err);
2332
2333 /* Assume it's not, unless we see that it is. */
2334 if (static_memfuncp)
2335 *static_memfuncp =0;
2336
2337 if (!args)
2338 {
2339 /* if there are no arguments ...do this... */
2340
2341 /* Try as a field first, because if we succeed, there
2342 is less work to be done. */
2343 v = search_struct_field (name, *argp, 0, t, 0);
2344 if (v)
2345 return v;
2346
2347 /* C++: If it was not found as a data field, then try to
2348 return it as a pointer to a method. */
2349
2350 if (destructor_name_p (name, t))
2351 error ("Cannot get value of destructor");
2352
2353 v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
2354
2355 if (v == (value_ptr) -1)
2356 error ("Cannot take address of a method");
2357 else if (v == 0)
2358 {
2359 if (TYPE_NFN_FIELDS (t))
2360 error ("There is no member or method named %s.", name);
2361 else
2362 error ("There is no member named %s.", name);
2363 }
2364 return v;
2365 }
2366
2367 if (destructor_name_p (name, t))
2368 {
2369 if (!args[1])
2370 {
2371 /* Destructors are a special case. */
2372 int m_index, f_index;
2373
2374 v = NULL;
2375 if (get_destructor_fn_field (t, &m_index, &f_index))
2376 {
2377 v = value_fn_field (NULL, TYPE_FN_FIELDLIST1 (t, m_index),
2378 f_index, NULL, 0);
2379 }
2380 if (v == NULL)
2381 error ("could not find destructor function named %s.", name);
2382 else
2383 return v;
2384 }
2385 else
2386 {
2387 error ("destructor should not have any argument");
2388 }
2389 }
2390 else
2391 v = search_struct_method (name, argp, args, 0, static_memfuncp, t);
2392
2393 if (v == (value_ptr) -1)
2394 {
2395 error("Argument list of %s mismatch with component in the structure.", name);
2396 }
2397 else if (v == 0)
2398 {
2399 /* See if user tried to invoke data as function. If so,
2400 hand it back. If it's not callable (i.e., a pointer to function),
2401 gdb should give an error. */
2402 v = search_struct_field (name, *argp, 0, t, 0);
2403 }
2404
2405 if (!v)
2406 error ("Structure has no component named %s.", name);
2407 return v;
2408 }
2409
2410 /* Search through the methods of an object (and its bases)
2411 * to find a specified method. Return the pointer to the
2412 * fn_field list of overloaded instances.
2413 * Helper function for value_find_oload_list.
2414 * ARGP is a pointer to a pointer to a value (the object)
2415 * METHOD is a string containing the method name
2416 * OFFSET is the offset within the value
2417 * STATIC_MEMFUNCP is set if the method is static
2418 * TYPE is the assumed type of the object
2419 * NUM_FNS is the number of overloaded instances
2420 * BASETYPE is set to the actual type of the subobject where the method is found
2421 * BOFFSET is the offset of the base subobject where the method is found */
2422
2423 struct fn_field *
2424 find_method_list (argp, method, offset, static_memfuncp, type, num_fns, basetype, boffset)
2425 value_ptr *argp;
2426 char * method;
2427 int offset;
2428 int * static_memfuncp;
2429 struct type * type;
2430 int * num_fns;
2431 struct type ** basetype;
2432 int * boffset;
2433 {
2434 int i;
2435 struct fn_field * f;
2436 CHECK_TYPEDEF (type);
2437
2438 *num_fns = 0;
2439
2440 /* First check in object itself */
2441 for (i = TYPE_NFN_FIELDS (type) -1; i >= 0; i--)
2442 {
2443 /* pai: FIXME What about operators and type conversions? */
2444 char * fn_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2445 if (fn_field_name && STREQ (fn_field_name, method))
2446 {
2447 *num_fns = TYPE_FN_FIELDLIST_LENGTH (type, i);
2448 *basetype = type;
2449 *boffset = offset;
2450 return TYPE_FN_FIELDLIST1 (type, i);
2451 }
2452 }
2453
2454 /* Not found in object, check in base subobjects */
2455 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2456 {
2457 int base_offset;
2458 if (BASETYPE_VIA_VIRTUAL (type, i))
2459 {
2460 if (TYPE_HAS_VTABLE (type))
2461 {
2462 /* HP aCC compiled type, search for virtual base offset
2463 * according to HP/Taligent runtime spec. */
2464 int skip;
2465 find_rt_vbase_offset (type, TYPE_BASECLASS (type, i),
2466 VALUE_CONTENTS_ALL (*argp),
2467 offset + VALUE_EMBEDDED_OFFSET (*argp),
2468 &base_offset, &skip);
2469 if (skip >= 0)
2470 error ("Virtual base class offset not found in vtable");
2471 }
2472 else
2473 {
2474 /* probably g++ runtime model */
2475 base_offset = VALUE_OFFSET (*argp) + offset;
2476 base_offset =
2477 baseclass_offset (type, i,
2478 VALUE_CONTENTS (*argp) + base_offset,
2479 VALUE_ADDRESS (*argp) + base_offset);
2480 if (base_offset == -1)
2481 error ("virtual baseclass botch");
2482 }
2483 }
2484 else /* non-virtual base, simply use bit position from debug info */
2485 {
2486 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2487 }
2488 f = find_method_list (argp, method, base_offset + offset,
2489 static_memfuncp, TYPE_BASECLASS (type, i), num_fns, basetype, boffset);
2490 if (f)
2491 return f;
2492 }
2493 return NULL;
2494 }
2495
2496 /* Return the list of overloaded methods of a specified name.
2497 * ARGP is a pointer to a pointer to a value (the object)
2498 * METHOD is the method name
2499 * OFFSET is the offset within the value contents
2500 * STATIC_MEMFUNCP is set if the method is static
2501 * NUM_FNS is the number of overloaded instances
2502 * BASETYPE is set to the type of the base subobject that defines the method
2503 * BOFFSET is the offset of the base subobject which defines the method */
2504
2505 struct fn_field *
2506 value_find_oload_method_list (argp, method, offset, static_memfuncp, num_fns, basetype, boffset)
2507 value_ptr *argp;
2508 char * method;
2509 int offset;
2510 int * static_memfuncp;
2511 int * num_fns;
2512 struct type ** basetype;
2513 int * boffset;
2514 {
2515 struct type * t;
2516 value_ptr v;
2517
2518 t = check_typedef (VALUE_TYPE (*argp));
2519
2520 /* code snarfed from value_struct_elt */
2521 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
2522 {
2523 *argp = value_ind (*argp);
2524 /* Don't coerce fn pointer to fn and then back again! */
2525 if (TYPE_CODE (VALUE_TYPE (*argp)) != TYPE_CODE_FUNC)
2526 COERCE_ARRAY (*argp);
2527 t = check_typedef (VALUE_TYPE (*argp));
2528 }
2529
2530 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
2531 error ("Not implemented: member type in value_find_oload_lis");
2532
2533 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
2534 && TYPE_CODE (t) != TYPE_CODE_UNION)
2535 error ("Attempt to extract a component of a value that is not a struct or union");
2536
2537 /* Assume it's not static, unless we see that it is. */
2538 if (static_memfuncp)
2539 *static_memfuncp =0;
2540
2541 return find_method_list (argp, method, 0, static_memfuncp, t, num_fns, basetype, boffset);
2542
2543 }
2544
2545 /* Given an array of argument types (ARGTYPES) (which includes an
2546 entry for "this" in the case of C++ methods), the number of
2547 arguments NARGS, the NAME of a function whether it's a method or
2548 not (METHOD), and the degree of laxness (LAX) in conforming to
2549 overload resolution rules in ANSI C++, find the best function that
2550 matches on the argument types according to the overload resolution
2551 rules.
2552
2553 In the case of class methods, the parameter OBJ is an object value
2554 in which to search for overloaded methods.
2555
2556 In the case of non-method functions, the parameter FSYM is a symbol
2557 corresponding to one of the overloaded functions.
2558
2559 Return value is an integer: 0 -> good match, 10 -> debugger applied
2560 non-standard coercions, 100 -> incompatible.
2561
2562 If a method is being searched for, VALP will hold the value.
2563 If a non-method is being searched for, SYMP will hold the symbol for it.
2564
2565 If a method is being searched for, and it is a static method,
2566 then STATICP will point to a non-zero value.
2567
2568 Note: This function does *not* check the value of
2569 overload_resolution. Caller must check it to see whether overload
2570 resolution is permitted.
2571 */
2572
2573 int
2574 find_overload_match (arg_types, nargs, name, method, lax, obj, fsym, valp, symp, staticp)
2575 struct type ** arg_types;
2576 int nargs;
2577 char * name;
2578 int method;
2579 int lax;
2580 value_ptr obj;
2581 struct symbol * fsym;
2582 value_ptr * valp;
2583 struct symbol ** symp;
2584 int * staticp;
2585 {
2586 int nparms;
2587 struct type ** parm_types;
2588 int champ_nparms = 0;
2589
2590 short oload_champ = -1; /* Index of best overloaded function */
2591 short oload_ambiguous = 0; /* Current ambiguity state for overload resolution */
2592 /* 0 => no ambiguity, 1 => two good funcs, 2 => incomparable funcs */
2593 short oload_ambig_champ = -1; /* 2nd contender for best match */
2594 short oload_non_standard = 0; /* did we have to use non-standard conversions? */
2595 short oload_incompatible = 0; /* are args supplied incompatible with any function? */
2596
2597 struct badness_vector * bv; /* A measure of how good an overloaded instance is */
2598 struct badness_vector * oload_champ_bv = NULL; /* The measure for the current best match */
2599
2600 value_ptr temp = obj;
2601 struct fn_field * fns_ptr = NULL; /* For methods, the list of overloaded methods */
2602 struct symbol ** oload_syms = NULL; /* For non-methods, the list of overloaded function symbols */
2603 int num_fns = 0; /* Number of overloaded instances being considered */
2604 struct type * basetype = NULL;
2605 int boffset;
2606 register int jj;
2607 register int ix;
2608
2609 char * obj_type_name = NULL;
2610 char * func_name = NULL;
2611
2612 /* Get the list of overloaded methods or functions */
2613 if (method)
2614 {
2615 obj_type_name = TYPE_NAME (VALUE_TYPE (obj));
2616 /* Hack: evaluate_subexp_standard often passes in a pointer
2617 value rather than the object itself, so try again */
2618 if ((!obj_type_name || !*obj_type_name) &&
2619 (TYPE_CODE (VALUE_TYPE (obj)) == TYPE_CODE_PTR))
2620 obj_type_name = TYPE_NAME (TYPE_TARGET_TYPE (VALUE_TYPE (obj)));
2621
2622 fns_ptr = value_find_oload_method_list (&temp, name, 0,
2623 staticp,
2624 &num_fns,
2625 &basetype, &boffset);
2626 if (!fns_ptr || !num_fns)
2627 error ("Couldn't find method %s%s%s",
2628 obj_type_name,
2629 (obj_type_name && *obj_type_name) ? "::" : "",
2630 name);
2631 }
2632 else
2633 {
2634 int i = -1;
2635 func_name = cplus_demangle (SYMBOL_NAME (fsym), DMGL_NO_OPTS);
2636
2637 oload_syms = make_symbol_overload_list (fsym);
2638 while (oload_syms[++i])
2639 num_fns++;
2640 if (!num_fns)
2641 error ("Couldn't find function %s", func_name);
2642 }
2643
2644 oload_champ_bv = NULL;
2645
2646 /* Consider each candidate in turn */
2647 for (ix = 0; ix < num_fns; ix++)
2648 {
2649 int jj;
2650
2651 /* Number of parameters for current candidate */
2652 nparms = method ? TYPE_NFIELDS (fns_ptr[ix].type)
2653 : TYPE_NFIELDS (SYMBOL_TYPE (oload_syms[ix]));
2654
2655 /* Prepare array of parameter types */
2656 parm_types = (struct type **) xmalloc (nparms * (sizeof (struct type *)));
2657 for (jj = 0; jj < nparms; jj++)
2658 parm_types[jj] = method ? TYPE_FIELD_TYPE (fns_ptr[ix].type, jj)
2659 : TYPE_FIELD_TYPE (SYMBOL_TYPE (oload_syms[ix]), jj);
2660
2661 /* Compare parameter types to supplied argument types */
2662 bv = rank_function (parm_types, nparms, arg_types, nargs);
2663
2664 if (!oload_champ_bv)
2665 {
2666 oload_champ_bv = bv;
2667 oload_champ = 0;
2668 champ_nparms = nparms;
2669 }
2670 else
2671 /* See whether current candidate is better or worse than previous best */
2672 switch (compare_badness (bv, oload_champ_bv))
2673 {
2674 case 0:
2675 oload_ambiguous = 1; /* top two contenders are equally good */
2676 oload_ambig_champ = ix;
2677 break;
2678 case 1:
2679 oload_ambiguous = 2; /* incomparable top contenders */
2680 oload_ambig_champ = ix;
2681 break;
2682 case 2:
2683 oload_champ_bv = bv; /* new champion, record details */
2684 oload_ambiguous = 0;
2685 oload_champ = ix;
2686 oload_ambig_champ = -1;
2687 champ_nparms = nparms;
2688 break;
2689 case 3:
2690 default:
2691 break;
2692 }
2693 free (parm_types);
2694 #ifdef DEBUG_OLOAD
2695 if (method)
2696 printf("Overloaded method instance %s, # of parms %d\n", fns_ptr[ix].physname, nparms);
2697 else
2698 printf("Overloaded function instance %s # of parms %d\n", SYMBOL_DEMANGLED_NAME(oload_syms[ix]),nparms);
2699 for (jj = 0; jj <= nargs; jj++)
2700 printf("...Badness @ %d : %d\n", jj, bv->rank[jj]);
2701 printf("Overload resolution champion is %d, ambiguous? %d\n", oload_champ, oload_ambiguous);
2702 #endif
2703 } /* end loop over all candidates */
2704
2705 if (oload_ambiguous)
2706 {
2707 if (method)
2708 error ("Cannot resolve overloaded method %s%s%s to unique instance; disambiguate by specifying function signature",
2709 obj_type_name,
2710 (obj_type_name && *obj_type_name) ? "::" : "",
2711 name);
2712 else
2713 error ("Cannot resolve overloaded function %s to unique instance; disambiguate by specifying function signature",
2714 func_name);
2715 }
2716
2717 /* Check how bad the best match is */
2718 for (ix = 1; ix <= nargs; ix++)
2719 {
2720 switch (oload_champ_bv->rank[ix])
2721 {
2722 case 10:
2723 oload_non_standard = 1; /* non-standard type conversions needed */
2724 break;
2725 case 100:
2726 oload_incompatible = 1; /* truly mismatched types */
2727 break;
2728 }
2729 }
2730 if (oload_incompatible)
2731 {
2732 if (method)
2733 error ("Cannot resolve method %s%s%s to any overloaded instance",
2734 obj_type_name,
2735 (obj_type_name && *obj_type_name) ? "::" : "",
2736 name);
2737 else
2738 error ("Cannot resolve function %s to any overloaded instance",
2739 func_name);
2740 }
2741 else if (oload_non_standard)
2742 {
2743 if (method)
2744 warning ("Using non-standard conversion to match method %s%s%s to supplied arguments",
2745 obj_type_name,
2746 (obj_type_name && *obj_type_name) ? "::" : "",
2747 name);
2748 else
2749 warning ("Using non-standard conversion to match function %s to supplied arguments",
2750 func_name);
2751 }
2752
2753 if (method)
2754 {
2755 if (TYPE_FN_FIELD_VIRTUAL_P (fns_ptr, oload_champ))
2756 *valp = value_virtual_fn_field (&temp, fns_ptr, oload_champ, basetype, boffset);
2757 else
2758 *valp = value_fn_field (&temp, fns_ptr, oload_champ, basetype, boffset);
2759 }
2760 else
2761 {
2762 *symp = oload_syms[oload_champ];
2763 free (func_name);
2764 }
2765
2766 return oload_incompatible ? 100 : (oload_non_standard ? 10 : 0);
2767 }
2768
2769 /* C++: return 1 is NAME is a legitimate name for the destructor
2770 of type TYPE. If TYPE does not have a destructor, or
2771 if NAME is inappropriate for TYPE, an error is signaled. */
2772 int
2773 destructor_name_p (name, type)
2774 const char *name;
2775 const struct type *type;
2776 {
2777 /* destructors are a special case. */
2778
2779 if (name[0] == '~')
2780 {
2781 char *dname = type_name_no_tag (type);
2782 char *cp = strchr (dname, '<');
2783 unsigned int len;
2784
2785 /* Do not compare the template part for template classes. */
2786 if (cp == NULL)
2787 len = strlen (dname);
2788 else
2789 len = cp - dname;
2790 if (strlen (name + 1) != len || !STREQN (dname, name + 1, len))
2791 error ("name of destructor must equal name of class");
2792 else
2793 return 1;
2794 }
2795 return 0;
2796 }
2797
2798 /* Helper function for check_field: Given TYPE, a structure/union,
2799 return 1 if the component named NAME from the ultimate
2800 target structure/union is defined, otherwise, return 0. */
2801
2802 static int
2803 check_field_in (type, name)
2804 register struct type *type;
2805 const char *name;
2806 {
2807 register int i;
2808
2809 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
2810 {
2811 char *t_field_name = TYPE_FIELD_NAME (type, i);
2812 if (t_field_name && STREQ (t_field_name, name))
2813 return 1;
2814 }
2815
2816 /* C++: If it was not found as a data field, then try to
2817 return it as a pointer to a method. */
2818
2819 /* Destructors are a special case. */
2820 if (destructor_name_p (name, type))
2821 {
2822 int m_index, f_index;
2823
2824 return get_destructor_fn_field (type, &m_index, &f_index);
2825 }
2826
2827 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
2828 {
2829 if (STREQ (TYPE_FN_FIELDLIST_NAME (type, i), name))
2830 return 1;
2831 }
2832
2833 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2834 if (check_field_in (TYPE_BASECLASS (type, i), name))
2835 return 1;
2836
2837 return 0;
2838 }
2839
2840
2841 /* C++: Given ARG1, a value of type (pointer to a)* structure/union,
2842 return 1 if the component named NAME from the ultimate
2843 target structure/union is defined, otherwise, return 0. */
2844
2845 int
2846 check_field (arg1, name)
2847 register value_ptr arg1;
2848 const char *name;
2849 {
2850 register struct type *t;
2851
2852 COERCE_ARRAY (arg1);
2853
2854 t = VALUE_TYPE (arg1);
2855
2856 /* Follow pointers until we get to a non-pointer. */
2857
2858 for (;;)
2859 {
2860 CHECK_TYPEDEF (t);
2861 if (TYPE_CODE (t) != TYPE_CODE_PTR && TYPE_CODE (t) != TYPE_CODE_REF)
2862 break;
2863 t = TYPE_TARGET_TYPE (t);
2864 }
2865
2866 if (TYPE_CODE (t) == TYPE_CODE_MEMBER)
2867 error ("not implemented: member type in check_field");
2868
2869 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
2870 && TYPE_CODE (t) != TYPE_CODE_UNION)
2871 error ("Internal error: `this' is not an aggregate");
2872
2873 return check_field_in (t, name);
2874 }
2875
2876 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
2877 return the address of this member as a "pointer to member"
2878 type. If INTYPE is non-null, then it will be the type
2879 of the member we are looking for. This will help us resolve
2880 "pointers to member functions". This function is used
2881 to resolve user expressions of the form "DOMAIN::NAME". */
2882
2883 value_ptr
2884 value_struct_elt_for_reference (domain, offset, curtype, name, intype)
2885 struct type *domain, *curtype, *intype;
2886 int offset;
2887 char *name;
2888 {
2889 register struct type *t = curtype;
2890 register int i;
2891 value_ptr v;
2892
2893 if ( TYPE_CODE (t) != TYPE_CODE_STRUCT
2894 && TYPE_CODE (t) != TYPE_CODE_UNION)
2895 error ("Internal error: non-aggregate type to value_struct_elt_for_reference");
2896
2897 for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
2898 {
2899 char *t_field_name = TYPE_FIELD_NAME (t, i);
2900
2901 if (t_field_name && STREQ (t_field_name, name))
2902 {
2903 if (TYPE_FIELD_STATIC (t, i))
2904 {
2905 v = value_static_field (t, i);
2906 if (v == NULL)
2907 error ("Internal error: could not find static variable %s",
2908 name);
2909 return v;
2910 }
2911 if (TYPE_FIELD_PACKED (t, i))
2912 error ("pointers to bitfield members not allowed");
2913
2914 return value_from_longest
2915 (lookup_reference_type (lookup_member_type (TYPE_FIELD_TYPE (t, i),
2916 domain)),
2917 offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
2918 }
2919 }
2920
2921 /* C++: If it was not found as a data field, then try to
2922 return it as a pointer to a method. */
2923
2924 /* Destructors are a special case. */
2925 if (destructor_name_p (name, t))
2926 {
2927 error ("member pointers to destructors not implemented yet");
2928 }
2929
2930 /* Perform all necessary dereferencing. */
2931 while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
2932 intype = TYPE_TARGET_TYPE (intype);
2933
2934 for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
2935 {
2936 char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
2937 char dem_opname[64];
2938
2939 if (strncmp(t_field_name, "__", 2)==0 ||
2940 strncmp(t_field_name, "op", 2)==0 ||
2941 strncmp(t_field_name, "type", 4)==0 )
2942 {
2943 if (cplus_demangle_opname(t_field_name, dem_opname, DMGL_ANSI))
2944 t_field_name = dem_opname;
2945 else if (cplus_demangle_opname(t_field_name, dem_opname, 0))
2946 t_field_name = dem_opname;
2947 }
2948 if (t_field_name && STREQ (t_field_name, name))
2949 {
2950 int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
2951 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
2952
2953 if (intype == 0 && j > 1)
2954 error ("non-unique member `%s' requires type instantiation", name);
2955 if (intype)
2956 {
2957 while (j--)
2958 if (TYPE_FN_FIELD_TYPE (f, j) == intype)
2959 break;
2960 if (j < 0)
2961 error ("no member function matches that type instantiation");
2962 }
2963 else
2964 j = 0;
2965
2966 if (TYPE_FN_FIELD_STUB (f, j))
2967 check_stub_method (t, i, j);
2968 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
2969 {
2970 return value_from_longest
2971 (lookup_reference_type
2972 (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
2973 domain)),
2974 (LONGEST) METHOD_PTR_FROM_VOFFSET (TYPE_FN_FIELD_VOFFSET (f, j)));
2975 }
2976 else
2977 {
2978 struct symbol *s = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
2979 0, VAR_NAMESPACE, 0, NULL);
2980 if (s == NULL)
2981 {
2982 v = 0;
2983 }
2984 else
2985 {
2986 v = read_var_value (s, 0);
2987 #if 0
2988 VALUE_TYPE (v) = lookup_reference_type
2989 (lookup_member_type (TYPE_FN_FIELD_TYPE (f, j),
2990 domain));
2991 #endif
2992 }
2993 return v;
2994 }
2995 }
2996 }
2997 for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
2998 {
2999 value_ptr v;
3000 int base_offset;
3001
3002 if (BASETYPE_VIA_VIRTUAL (t, i))
3003 base_offset = 0;
3004 else
3005 base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
3006 v = value_struct_elt_for_reference (domain,
3007 offset + base_offset,
3008 TYPE_BASECLASS (t, i),
3009 name,
3010 intype);
3011 if (v)
3012 return v;
3013 }
3014 return 0;
3015 }
3016
3017
3018 /* Find the real run-time type of a value using RTTI.
3019 * V is a pointer to the value.
3020 * A pointer to the struct type entry of the run-time type
3021 * is returneed.
3022 * FULL is a flag that is set only if the value V includes
3023 * the entire contents of an object of the RTTI type.
3024 * TOP is the offset to the top of the enclosing object of
3025 * the real run-time type. This offset may be for the embedded
3026 * object, or for the enclosing object of V.
3027 * USING_ENC is the flag that distinguishes the two cases.
3028 * If it is 1, then the offset is for the enclosing object,
3029 * otherwise for the embedded object.
3030 *
3031 * This currently works only for RTTI information generated
3032 * by the HP ANSI C++ compiler (aCC). g++ today (1997-06-10)
3033 * does not appear to support RTTI. This function returns a
3034 * NULL value for objects in the g++ runtime model. */
3035
3036 struct type *
3037 value_rtti_type (v, full, top, using_enc)
3038 value_ptr v;
3039 int * full;
3040 int * top;
3041 int * using_enc;
3042 {
3043 struct type * known_type;
3044 struct type * rtti_type;
3045 CORE_ADDR coreptr;
3046 value_ptr vp;
3047 int using_enclosing = 0;
3048 long top_offset = 0;
3049 char rtti_type_name[256];
3050
3051 if (full)
3052 *full = 0;
3053 if (top)
3054 *top = -1;
3055 if (using_enc)
3056 *using_enc = 0;
3057
3058 /* Get declared type */
3059 known_type = VALUE_TYPE (v);
3060 CHECK_TYPEDEF (known_type);
3061 /* RTTI works only or class objects */
3062 if (TYPE_CODE (known_type) != TYPE_CODE_CLASS)
3063 return NULL;
3064
3065 /* If neither the declared type nor the enclosing type of the
3066 * value structure has a HP ANSI C++ style virtual table,
3067 * we can't do anything. */
3068 if (!TYPE_HAS_VTABLE (known_type))
3069 {
3070 known_type = VALUE_ENCLOSING_TYPE (v);
3071 CHECK_TYPEDEF (known_type);
3072 if ((TYPE_CODE (known_type) != TYPE_CODE_CLASS) ||
3073 !TYPE_HAS_VTABLE (known_type))
3074 return NULL; /* No RTTI, or not HP-compiled types */
3075 CHECK_TYPEDEF (known_type);
3076 using_enclosing = 1;
3077 }
3078
3079 if (using_enclosing && using_enc)
3080 *using_enc = 1;
3081
3082 /* First get the virtual table address */
3083 coreptr = * (CORE_ADDR *) ((VALUE_CONTENTS_ALL (v))
3084 + VALUE_OFFSET (v)
3085 + (using_enclosing ? 0 : VALUE_EMBEDDED_OFFSET (v)));
3086 if (coreptr == 0)
3087 return NULL; /* return silently -- maybe called on gdb-generated value */
3088
3089 /* Fetch the top offset of the object */
3090 /* FIXME possible 32x64 problem with pointer size & arithmetic */
3091 vp = value_at (builtin_type_int,
3092 coreptr + 4 * HP_ACC_TOP_OFFSET_OFFSET,
3093 VALUE_BFD_SECTION (v));
3094 top_offset = value_as_long (vp);
3095 if (top)
3096 *top = top_offset;
3097
3098 /* Fetch the typeinfo pointer */
3099 /* FIXME possible 32x64 problem with pointer size & arithmetic */
3100 vp = value_at (builtin_type_int, coreptr + 4 * HP_ACC_TYPEINFO_OFFSET, VALUE_BFD_SECTION (v));
3101 /* Indirect through the typeinfo pointer and retrieve the pointer
3102 * to the string name */
3103 coreptr = * (CORE_ADDR *) (VALUE_CONTENTS (vp));
3104 if (!coreptr)
3105 error ("Retrieved null typeinfo pointer in trying to determine run-time type");
3106 vp = value_at (builtin_type_int, coreptr + 4, VALUE_BFD_SECTION (v)); /* 4 -> offset of name field */
3107 /* FIXME possible 32x64 problem */
3108
3109 coreptr = * (CORE_ADDR *) (VALUE_CONTENTS (vp));
3110
3111 read_memory_string (coreptr, rtti_type_name, 256);
3112
3113 if (strlen (rtti_type_name) == 0)
3114 error ("Retrieved null type name from typeinfo");
3115
3116 /* search for type */
3117 rtti_type = lookup_typename (rtti_type_name, (struct block *) 0, 1);
3118
3119 if (!rtti_type)
3120 error ("Could not find run-time type: invalid type name %s in typeinfo??", rtti_type_name);
3121 CHECK_TYPEDEF (rtti_type);
3122
3123 #if 0 /* debugging*/
3124 printf("RTTI type name %s, tag %s, full? %d\n", TYPE_NAME (rtti_type), TYPE_TAG_NAME (rtti_type), full ? *full : -1);
3125 #endif
3126
3127 /* Check whether we have the entire object */
3128 if (full /* Non-null pointer passed */
3129
3130 &&
3131 /* Either we checked on the whole object in hand and found the
3132 top offset to be zero */
3133 (((top_offset == 0) &&
3134 using_enclosing &&
3135 TYPE_LENGTH (known_type) == TYPE_LENGTH (rtti_type))
3136 ||
3137 /* Or we checked on the embedded object and top offset was the
3138 same as the embedded offset */
3139 ((top_offset == VALUE_EMBEDDED_OFFSET (v)) &&
3140 !using_enclosing &&
3141 TYPE_LENGTH (VALUE_ENCLOSING_TYPE (v)) == TYPE_LENGTH (rtti_type))))
3142
3143 *full = 1;
3144
3145 return rtti_type;
3146 }
3147
3148 /* Given a pointer value V, find the real (RTTI) type
3149 of the object it points to.
3150 Other parameters FULL, TOP, USING_ENC as with value_rtti_type()
3151 and refer to the values computed for the object pointed to. */
3152
3153 struct type *
3154 value_rtti_target_type (v, full, top, using_enc)
3155 value_ptr v;
3156 int * full;
3157 int * top;
3158 int * using_enc;
3159 {
3160 value_ptr target;
3161
3162 target = value_ind (v);
3163
3164 return value_rtti_type (target, full, top, using_enc);
3165 }
3166
3167 /* Given a value pointed to by ARGP, check its real run-time type, and
3168 if that is different from the enclosing type, create a new value
3169 using the real run-time type as the enclosing type (and of the same
3170 type as ARGP) and return it, with the embedded offset adjusted to
3171 be the correct offset to the enclosed object
3172 RTYPE is the type, and XFULL, XTOP, and XUSING_ENC are the other
3173 parameters, computed by value_rtti_type(). If these are available,
3174 they can be supplied and a second call to value_rtti_type() is avoided.
3175 (Pass RTYPE == NULL if they're not available */
3176
3177 value_ptr
3178 value_full_object (argp, rtype, xfull, xtop, xusing_enc)
3179 value_ptr argp;
3180 struct type * rtype;
3181 int xfull;
3182 int xtop;
3183 int xusing_enc;
3184
3185 {
3186 struct type * real_type;
3187 int full = 0;
3188 int top = -1;
3189 int using_enc = 0;
3190 value_ptr new_val;
3191
3192 if (rtype)
3193 {
3194 real_type = rtype;
3195 full = xfull;
3196 top = xtop;
3197 using_enc = xusing_enc;
3198 }
3199 else
3200 real_type = value_rtti_type (argp, &full, &top, &using_enc);
3201
3202 /* If no RTTI data, or if object is already complete, do nothing */
3203 if (!real_type || real_type == VALUE_ENCLOSING_TYPE (argp))
3204 return argp;
3205
3206 /* If we have the full object, but for some reason the enclosing
3207 type is wrong, set it */ /* pai: FIXME -- sounds iffy */
3208 if (full)
3209 {
3210 VALUE_ENCLOSING_TYPE (argp) = real_type;
3211 return argp;
3212 }
3213
3214 /* Check if object is in memory */
3215 if (VALUE_LVAL (argp) != lval_memory)
3216 {
3217 warning ("Couldn't retrieve complete object of RTTI type %s; object may be in register(s).", TYPE_NAME (real_type));
3218
3219 return argp;
3220 }
3221
3222 /* All other cases -- retrieve the complete object */
3223 /* Go back by the computed top_offset from the beginning of the object,
3224 adjusting for the embedded offset of argp if that's what value_rtti_type
3225 used for its computation. */
3226 new_val = value_at_lazy (real_type, VALUE_ADDRESS (argp) - top +
3227 (using_enc ? 0 : VALUE_EMBEDDED_OFFSET (argp)),
3228 VALUE_BFD_SECTION (argp));
3229 VALUE_TYPE (new_val) = VALUE_TYPE (argp);
3230 VALUE_EMBEDDED_OFFSET (new_val) = using_enc ? top + VALUE_EMBEDDED_OFFSET (argp) : top;
3231 return new_val;
3232 }
3233
3234
3235
3236
3237 /* C++: return the value of the class instance variable, if one exists.
3238 Flag COMPLAIN signals an error if the request is made in an
3239 inappropriate context. */
3240
3241 value_ptr
3242 value_of_this (complain)
3243 int complain;
3244 {
3245 struct symbol *func, *sym;
3246 struct block *b;
3247 int i;
3248 static const char funny_this[] = "this";
3249 value_ptr this;
3250
3251 if (selected_frame == 0)
3252 {
3253 if (complain)
3254 error ("no frame selected");
3255 else return 0;
3256 }
3257
3258 func = get_frame_function (selected_frame);
3259 if (!func)
3260 {
3261 if (complain)
3262 error ("no `this' in nameless context");
3263 else return 0;
3264 }
3265
3266 b = SYMBOL_BLOCK_VALUE (func);
3267 i = BLOCK_NSYMS (b);
3268 if (i <= 0)
3269 {
3270 if (complain)
3271 error ("no args, no `this'");
3272 else return 0;
3273 }
3274
3275 /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
3276 symbol instead of the LOC_ARG one (if both exist). */
3277 sym = lookup_block_symbol (b, funny_this, VAR_NAMESPACE);
3278 if (sym == NULL)
3279 {
3280 if (complain)
3281 error ("current stack frame not in method");
3282 else
3283 return NULL;
3284 }
3285
3286 this = read_var_value (sym, selected_frame);
3287 if (this == 0 && complain)
3288 error ("`this' argument at unknown address");
3289 return this;
3290 }
3291
3292 /* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH elements
3293 long, starting at LOWBOUND. The result has the same lower bound as
3294 the original ARRAY. */
3295
3296 value_ptr
3297 value_slice (array, lowbound, length)
3298 value_ptr array;
3299 int lowbound, length;
3300 {
3301 struct type *slice_range_type, *slice_type, *range_type;
3302 LONGEST lowerbound, upperbound, offset;
3303 value_ptr slice;
3304 struct type *array_type;
3305 array_type = check_typedef (VALUE_TYPE (array));
3306 COERCE_VARYING_ARRAY (array, array_type);
3307 if (TYPE_CODE (array_type) != TYPE_CODE_ARRAY
3308 && TYPE_CODE (array_type) != TYPE_CODE_STRING
3309 && TYPE_CODE (array_type) != TYPE_CODE_BITSTRING)
3310 error ("cannot take slice of non-array");
3311 range_type = TYPE_INDEX_TYPE (array_type);
3312 if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
3313 error ("slice from bad array or bitstring");
3314 if (lowbound < lowerbound || length < 0
3315 || lowbound + length - 1 > upperbound
3316 /* Chill allows zero-length strings but not arrays. */
3317 || (current_language->la_language == language_chill
3318 && length == 0 && TYPE_CODE (array_type) == TYPE_CODE_ARRAY))
3319 error ("slice out of range");
3320 /* FIXME-type-allocation: need a way to free this type when we are
3321 done with it. */
3322 slice_range_type = create_range_type ((struct type*) NULL,
3323 TYPE_TARGET_TYPE (range_type),
3324 lowbound, lowbound + length - 1);
3325 if (TYPE_CODE (array_type) == TYPE_CODE_BITSTRING)
3326 {
3327 int i;
3328 slice_type = create_set_type ((struct type*) NULL, slice_range_type);
3329 TYPE_CODE (slice_type) = TYPE_CODE_BITSTRING;
3330 slice = value_zero (slice_type, not_lval);
3331 for (i = 0; i < length; i++)
3332 {
3333 int element = value_bit_index (array_type,
3334 VALUE_CONTENTS (array),
3335 lowbound + i);
3336 if (element < 0)
3337 error ("internal error accessing bitstring");
3338 else if (element > 0)
3339 {
3340 int j = i % TARGET_CHAR_BIT;
3341 if (BITS_BIG_ENDIAN)
3342 j = TARGET_CHAR_BIT - 1 - j;
3343 VALUE_CONTENTS_RAW (slice)[i / TARGET_CHAR_BIT] |= (1 << j);
3344 }
3345 }
3346 /* We should set the address, bitssize, and bitspos, so the clice
3347 can be used on the LHS, but that may require extensions to
3348 value_assign. For now, just leave as a non_lval. FIXME. */
3349 }
3350 else
3351 {
3352 struct type *element_type = TYPE_TARGET_TYPE (array_type);
3353 offset
3354 = (lowbound - lowerbound) * TYPE_LENGTH (check_typedef (element_type));
3355 slice_type = create_array_type ((struct type*) NULL, element_type,
3356 slice_range_type);
3357 TYPE_CODE (slice_type) = TYPE_CODE (array_type);
3358 slice = allocate_value (slice_type);
3359 if (VALUE_LAZY (array))
3360 VALUE_LAZY (slice) = 1;
3361 else
3362 memcpy (VALUE_CONTENTS (slice), VALUE_CONTENTS (array) + offset,
3363 TYPE_LENGTH (slice_type));
3364 if (VALUE_LVAL (array) == lval_internalvar)
3365 VALUE_LVAL (slice) = lval_internalvar_component;
3366 else
3367 VALUE_LVAL (slice) = VALUE_LVAL (array);
3368 VALUE_ADDRESS (slice) = VALUE_ADDRESS (array);
3369 VALUE_OFFSET (slice) = VALUE_OFFSET (array) + offset;
3370 }
3371 return slice;
3372 }
3373
3374 /* Assuming chill_varying_type (VARRAY) is true, return an equivalent
3375 value as a fixed-length array. */
3376
3377 value_ptr
3378 varying_to_slice (varray)
3379 value_ptr varray;
3380 {
3381 struct type *vtype = check_typedef (VALUE_TYPE (varray));
3382 LONGEST length = unpack_long (TYPE_FIELD_TYPE (vtype, 0),
3383 VALUE_CONTENTS (varray)
3384 + TYPE_FIELD_BITPOS (vtype, 0) / 8);
3385 return value_slice (value_primitive_field (varray, 0, 1, vtype), 0, length);
3386 }
3387
3388 /* Create a value for a FORTRAN complex number. Currently most of
3389 the time values are coerced to COMPLEX*16 (i.e. a complex number
3390 composed of 2 doubles. This really should be a smarter routine
3391 that figures out precision inteligently as opposed to assuming
3392 doubles. FIXME: fmb */
3393
3394 value_ptr
3395 value_literal_complex (arg1, arg2, type)
3396 value_ptr arg1;
3397 value_ptr arg2;
3398 struct type *type;
3399 {
3400 register value_ptr val;
3401 struct type *real_type = TYPE_TARGET_TYPE (type);
3402
3403 val = allocate_value (type);
3404 arg1 = value_cast (real_type, arg1);
3405 arg2 = value_cast (real_type, arg2);
3406
3407 memcpy (VALUE_CONTENTS_RAW (val),
3408 VALUE_CONTENTS (arg1), TYPE_LENGTH (real_type));
3409 memcpy (VALUE_CONTENTS_RAW (val) + TYPE_LENGTH (real_type),
3410 VALUE_CONTENTS (arg2), TYPE_LENGTH (real_type));
3411 return val;
3412 }
3413
3414 /* Cast a value into the appropriate complex data type. */
3415
3416 static value_ptr
3417 cast_into_complex (type, val)
3418 struct type *type;
3419 register value_ptr val;
3420 {
3421 struct type *real_type = TYPE_TARGET_TYPE (type);
3422 if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_COMPLEX)
3423 {
3424 struct type *val_real_type = TYPE_TARGET_TYPE (VALUE_TYPE (val));
3425 value_ptr re_val = allocate_value (val_real_type);
3426 value_ptr im_val = allocate_value (val_real_type);
3427
3428 memcpy (VALUE_CONTENTS_RAW (re_val),
3429 VALUE_CONTENTS (val), TYPE_LENGTH (val_real_type));
3430 memcpy (VALUE_CONTENTS_RAW (im_val),
3431 VALUE_CONTENTS (val) + TYPE_LENGTH (val_real_type),
3432 TYPE_LENGTH (val_real_type));
3433
3434 return value_literal_complex (re_val, im_val, type);
3435 }
3436 else if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FLT
3437 || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_INT)
3438 return value_literal_complex (val, value_zero (real_type, not_lval), type);
3439 else
3440 error ("cannot cast non-number to complex");
3441 }
3442
3443 void
3444 _initialize_valops ()
3445 {
3446 #if 0
3447 add_show_from_set
3448 (add_set_cmd ("abandon", class_support, var_boolean, (char *)&auto_abandon,
3449 "Set automatic abandonment of expressions upon failure.",
3450 &setlist),
3451 &showlist);
3452 #endif
3453
3454 add_show_from_set
3455 (add_set_cmd ("overload-resolution", class_support, var_boolean, (char *)&overload_resolution,
3456 "Set overload resolution in evaluating C++ functions.",
3457 &setlist),
3458 &showlist);
3459 overload_resolution = 1;
3460
3461 }