valops.c revision 1.1.1.5 1 /* Perform non-arithmetic operations on values, for GDB.
2
3 Copyright (C) 1986-2017 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 3 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, see <http://www.gnu.org/licenses/>. */
19
20 #include "defs.h"
21 #include "symtab.h"
22 #include "gdbtypes.h"
23 #include "value.h"
24 #include "frame.h"
25 #include "inferior.h"
26 #include "gdbcore.h"
27 #include "target.h"
28 #include "demangle.h"
29 #include "language.h"
30 #include "gdbcmd.h"
31 #include "regcache.h"
32 #include "cp-abi.h"
33 #include "block.h"
34 #include "infcall.h"
35 #include "dictionary.h"
36 #include "cp-support.h"
37 #include "dfp.h"
38 #include "tracepoint.h"
39 #include "observer.h"
40 #include "objfiles.h"
41 #include "extension.h"
42
43 extern unsigned int overload_debug;
44 /* Local functions. */
45
46 static int typecmp (int staticp, int varargs, int nargs,
47 struct field t1[], struct value *t2[]);
48
49 static struct value *search_struct_field (const char *, struct value *,
50 struct type *, int);
51
52 static struct value *search_struct_method (const char *, struct value **,
53 struct value **,
54 LONGEST, int *, struct type *);
55
56 static int find_oload_champ_namespace (struct value **, int,
57 const char *, const char *,
58 struct symbol ***,
59 struct badness_vector **,
60 const int no_adl);
61
62 static
63 int find_oload_champ_namespace_loop (struct value **, int,
64 const char *, const char *,
65 int, struct symbol ***,
66 struct badness_vector **, int *,
67 const int no_adl);
68
69 static int find_oload_champ (struct value **, int, int,
70 struct fn_field *, VEC (xmethod_worker_ptr) *,
71 struct symbol **, struct badness_vector **);
72
73 static int oload_method_static_p (struct fn_field *, int);
74
75 enum oload_classification { STANDARD, NON_STANDARD, INCOMPATIBLE };
76
77 static enum
78 oload_classification classify_oload_match (struct badness_vector *,
79 int, int);
80
81 static struct value *value_struct_elt_for_reference (struct type *,
82 int, struct type *,
83 const char *,
84 struct type *,
85 int, enum noside);
86
87 static struct value *value_namespace_elt (const struct type *,
88 const char *, int , enum noside);
89
90 static struct value *value_maybe_namespace_elt (const struct type *,
91 const char *, int,
92 enum noside);
93
94 static CORE_ADDR allocate_space_in_inferior (int);
95
96 static struct value *cast_into_complex (struct type *, struct value *);
97
98 static void find_method_list (struct value **, const char *,
99 LONGEST, struct type *, struct fn_field **, int *,
100 VEC (xmethod_worker_ptr) **,
101 struct type **, LONGEST *);
102
103 void _initialize_valops (void);
104
105 #if 0
106 /* Flag for whether we want to abandon failed expression evals by
107 default. */
108
109 static int auto_abandon = 0;
110 #endif
111
112 int overload_resolution = 0;
113 static void
114 show_overload_resolution (struct ui_file *file, int from_tty,
115 struct cmd_list_element *c,
116 const char *value)
117 {
118 fprintf_filtered (file, _("Overload resolution in evaluating "
119 "C++ functions is %s.\n"),
120 value);
121 }
122
123 /* Find the address of function name NAME in the inferior. If OBJF_P
124 is non-NULL, *OBJF_P will be set to the OBJFILE where the function
125 is defined. */
126
127 struct value *
128 find_function_in_inferior (const char *name, struct objfile **objf_p)
129 {
130 struct block_symbol sym;
131
132 sym = lookup_symbol (name, 0, VAR_DOMAIN, 0);
133 if (sym.symbol != NULL)
134 {
135 if (SYMBOL_CLASS (sym.symbol) != LOC_BLOCK)
136 {
137 error (_("\"%s\" exists in this program but is not a function."),
138 name);
139 }
140
141 if (objf_p)
142 *objf_p = symbol_objfile (sym.symbol);
143
144 return value_of_variable (sym.symbol, sym.block);
145 }
146 else
147 {
148 struct bound_minimal_symbol msymbol =
149 lookup_bound_minimal_symbol (name);
150
151 if (msymbol.minsym != NULL)
152 {
153 struct objfile *objfile = msymbol.objfile;
154 struct gdbarch *gdbarch = get_objfile_arch (objfile);
155
156 struct type *type;
157 CORE_ADDR maddr;
158 type = lookup_pointer_type (builtin_type (gdbarch)->builtin_char);
159 type = lookup_function_type (type);
160 type = lookup_pointer_type (type);
161 maddr = BMSYMBOL_VALUE_ADDRESS (msymbol);
162
163 if (objf_p)
164 *objf_p = objfile;
165
166 return value_from_pointer (type, maddr);
167 }
168 else
169 {
170 if (!target_has_execution)
171 error (_("evaluation of this expression "
172 "requires the target program to be active"));
173 else
174 error (_("evaluation of this expression requires the "
175 "program to have a function \"%s\"."),
176 name);
177 }
178 }
179 }
180
181 /* Allocate NBYTES of space in the inferior using the inferior's
182 malloc and return a value that is a pointer to the allocated
183 space. */
184
185 struct value *
186 value_allocate_space_in_inferior (int len)
187 {
188 struct objfile *objf;
189 struct value *val = find_function_in_inferior ("malloc", &objf);
190 struct gdbarch *gdbarch = get_objfile_arch (objf);
191 struct value *blocklen;
192
193 blocklen = value_from_longest (builtin_type (gdbarch)->builtin_int, len);
194 val = call_function_by_hand (val, 1, &blocklen);
195 if (value_logical_not (val))
196 {
197 if (!target_has_execution)
198 error (_("No memory available to program now: "
199 "you need to start the target first"));
200 else
201 error (_("No memory available to program: call to malloc failed"));
202 }
203 return val;
204 }
205
206 static CORE_ADDR
207 allocate_space_in_inferior (int len)
208 {
209 return value_as_long (value_allocate_space_in_inferior (len));
210 }
211
212 /* Cast struct value VAL to type TYPE and return as a value.
213 Both type and val must be of TYPE_CODE_STRUCT or TYPE_CODE_UNION
214 for this to work. Typedef to one of the codes is permitted.
215 Returns NULL if the cast is neither an upcast nor a downcast. */
216
217 static struct value *
218 value_cast_structs (struct type *type, struct value *v2)
219 {
220 struct type *t1;
221 struct type *t2;
222 struct value *v;
223
224 gdb_assert (type != NULL && v2 != NULL);
225
226 t1 = check_typedef (type);
227 t2 = check_typedef (value_type (v2));
228
229 /* Check preconditions. */
230 gdb_assert ((TYPE_CODE (t1) == TYPE_CODE_STRUCT
231 || TYPE_CODE (t1) == TYPE_CODE_UNION)
232 && !!"Precondition is that type is of STRUCT or UNION kind.");
233 gdb_assert ((TYPE_CODE (t2) == TYPE_CODE_STRUCT
234 || TYPE_CODE (t2) == TYPE_CODE_UNION)
235 && !!"Precondition is that value is of STRUCT or UNION kind");
236
237 if (TYPE_NAME (t1) != NULL
238 && TYPE_NAME (t2) != NULL
239 && !strcmp (TYPE_NAME (t1), TYPE_NAME (t2)))
240 return NULL;
241
242 /* Upcasting: look in the type of the source to see if it contains the
243 type of the target as a superclass. If so, we'll need to
244 offset the pointer rather than just change its type. */
245 if (TYPE_NAME (t1) != NULL)
246 {
247 v = search_struct_field (type_name_no_tag (t1),
248 v2, t2, 1);
249 if (v)
250 return v;
251 }
252
253 /* Downcasting: look in the type of the target to see if it contains the
254 type of the source as a superclass. If so, we'll need to
255 offset the pointer rather than just change its type. */
256 if (TYPE_NAME (t2) != NULL)
257 {
258 /* Try downcasting using the run-time type of the value. */
259 int full, using_enc;
260 LONGEST top;
261 struct type *real_type;
262
263 real_type = value_rtti_type (v2, &full, &top, &using_enc);
264 if (real_type)
265 {
266 v = value_full_object (v2, real_type, full, top, using_enc);
267 v = value_at_lazy (real_type, value_address (v));
268 real_type = value_type (v);
269
270 /* We might be trying to cast to the outermost enclosing
271 type, in which case search_struct_field won't work. */
272 if (TYPE_NAME (real_type) != NULL
273 && !strcmp (TYPE_NAME (real_type), TYPE_NAME (t1)))
274 return v;
275
276 v = search_struct_field (type_name_no_tag (t2), v, real_type, 1);
277 if (v)
278 return v;
279 }
280
281 /* Try downcasting using information from the destination type
282 T2. This wouldn't work properly for classes with virtual
283 bases, but those were handled above. */
284 v = search_struct_field (type_name_no_tag (t2),
285 value_zero (t1, not_lval), t1, 1);
286 if (v)
287 {
288 /* Downcasting is possible (t1 is superclass of v2). */
289 CORE_ADDR addr2 = value_address (v2);
290
291 addr2 -= value_address (v) + value_embedded_offset (v);
292 return value_at (type, addr2);
293 }
294 }
295
296 return NULL;
297 }
298
299 /* Cast one pointer or reference type to another. Both TYPE and
300 the type of ARG2 should be pointer types, or else both should be
301 reference types. If SUBCLASS_CHECK is non-zero, this will force a
302 check to see whether TYPE is a superclass of ARG2's type. If
303 SUBCLASS_CHECK is zero, then the subclass check is done only when
304 ARG2 is itself non-zero. Returns the new pointer or reference. */
305
306 struct value *
307 value_cast_pointers (struct type *type, struct value *arg2,
308 int subclass_check)
309 {
310 struct type *type1 = check_typedef (type);
311 struct type *type2 = check_typedef (value_type (arg2));
312 struct type *t1 = check_typedef (TYPE_TARGET_TYPE (type1));
313 struct type *t2 = check_typedef (TYPE_TARGET_TYPE (type2));
314
315 if (TYPE_CODE (t1) == TYPE_CODE_STRUCT
316 && TYPE_CODE (t2) == TYPE_CODE_STRUCT
317 && (subclass_check || !value_logical_not (arg2)))
318 {
319 struct value *v2;
320
321 if (TYPE_IS_REFERENCE (type2))
322 v2 = coerce_ref (arg2);
323 else
324 v2 = value_ind (arg2);
325 gdb_assert (TYPE_CODE (check_typedef (value_type (v2)))
326 == TYPE_CODE_STRUCT && !!"Why did coercion fail?");
327 v2 = value_cast_structs (t1, v2);
328 /* At this point we have what we can have, un-dereference if needed. */
329 if (v2)
330 {
331 struct value *v = value_addr (v2);
332
333 deprecated_set_value_type (v, type);
334 return v;
335 }
336 }
337
338 /* No superclass found, just change the pointer type. */
339 arg2 = value_copy (arg2);
340 deprecated_set_value_type (arg2, type);
341 set_value_enclosing_type (arg2, type);
342 set_value_pointed_to_offset (arg2, 0); /* pai: chk_val */
343 return arg2;
344 }
345
346 /* Cast value ARG2 to type TYPE and return as a value.
347 More general than a C cast: accepts any two types of the same length,
348 and if ARG2 is an lvalue it can be cast into anything at all. */
349 /* In C++, casts may change pointer or object representations. */
350
351 struct value *
352 value_cast (struct type *type, struct value *arg2)
353 {
354 enum type_code code1;
355 enum type_code code2;
356 int scalar;
357 struct type *type2;
358
359 int convert_to_boolean = 0;
360
361 if (value_type (arg2) == type)
362 return arg2;
363
364 /* Check if we are casting struct reference to struct reference. */
365 if (TYPE_IS_REFERENCE (check_typedef (type)))
366 {
367 /* We dereference type; then we recurse and finally
368 we generate value of the given reference. Nothing wrong with
369 that. */
370 struct type *t1 = check_typedef (type);
371 struct type *dereftype = check_typedef (TYPE_TARGET_TYPE (t1));
372 struct value *val = value_cast (dereftype, arg2);
373
374 return value_ref (val, TYPE_CODE (t1));
375 }
376
377 if (TYPE_IS_REFERENCE (check_typedef (value_type (arg2))))
378 /* We deref the value and then do the cast. */
379 return value_cast (type, coerce_ref (arg2));
380
381 type = check_typedef (type);
382 code1 = TYPE_CODE (type);
383 arg2 = coerce_ref (arg2);
384 type2 = check_typedef (value_type (arg2));
385
386 /* You can't cast to a reference type. See value_cast_pointers
387 instead. */
388 gdb_assert (!TYPE_IS_REFERENCE (type));
389
390 /* A cast to an undetermined-length array_type, such as
391 (TYPE [])OBJECT, is treated like a cast to (TYPE [N])OBJECT,
392 where N is sizeof(OBJECT)/sizeof(TYPE). */
393 if (code1 == TYPE_CODE_ARRAY)
394 {
395 struct type *element_type = TYPE_TARGET_TYPE (type);
396 unsigned element_length = TYPE_LENGTH (check_typedef (element_type));
397
398 if (element_length > 0 && TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
399 {
400 struct type *range_type = TYPE_INDEX_TYPE (type);
401 int val_length = TYPE_LENGTH (type2);
402 LONGEST low_bound, high_bound, new_length;
403
404 if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
405 low_bound = 0, high_bound = 0;
406 new_length = val_length / element_length;
407 if (val_length % element_length != 0)
408 warning (_("array element type size does not "
409 "divide object size in cast"));
410 /* FIXME-type-allocation: need a way to free this type when
411 we are done with it. */
412 range_type = create_static_range_type ((struct type *) NULL,
413 TYPE_TARGET_TYPE (range_type),
414 low_bound,
415 new_length + low_bound - 1);
416 deprecated_set_value_type (arg2,
417 create_array_type ((struct type *) NULL,
418 element_type,
419 range_type));
420 return arg2;
421 }
422 }
423
424 if (current_language->c_style_arrays
425 && TYPE_CODE (type2) == TYPE_CODE_ARRAY
426 && !TYPE_VECTOR (type2))
427 arg2 = value_coerce_array (arg2);
428
429 if (TYPE_CODE (type2) == TYPE_CODE_FUNC)
430 arg2 = value_coerce_function (arg2);
431
432 type2 = check_typedef (value_type (arg2));
433 code2 = TYPE_CODE (type2);
434
435 if (code1 == TYPE_CODE_COMPLEX)
436 return cast_into_complex (type, arg2);
437 if (code1 == TYPE_CODE_BOOL)
438 {
439 code1 = TYPE_CODE_INT;
440 convert_to_boolean = 1;
441 }
442 if (code1 == TYPE_CODE_CHAR)
443 code1 = TYPE_CODE_INT;
444 if (code2 == TYPE_CODE_BOOL || code2 == TYPE_CODE_CHAR)
445 code2 = TYPE_CODE_INT;
446
447 scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
448 || code2 == TYPE_CODE_DECFLOAT || code2 == TYPE_CODE_ENUM
449 || code2 == TYPE_CODE_RANGE);
450
451 if ((code1 == TYPE_CODE_STRUCT || code1 == TYPE_CODE_UNION)
452 && (code2 == TYPE_CODE_STRUCT || code2 == TYPE_CODE_UNION)
453 && TYPE_NAME (type) != 0)
454 {
455 struct value *v = value_cast_structs (type, arg2);
456
457 if (v)
458 return v;
459 }
460
461 if (code1 == TYPE_CODE_FLT && scalar)
462 return value_from_double (type, value_as_double (arg2));
463 else if (code1 == TYPE_CODE_DECFLOAT && scalar)
464 {
465 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
466 int dec_len = TYPE_LENGTH (type);
467 gdb_byte dec[16];
468
469 if (code2 == TYPE_CODE_FLT)
470 decimal_from_floating (arg2, dec, dec_len, byte_order);
471 else if (code2 == TYPE_CODE_DECFLOAT)
472 decimal_convert (value_contents (arg2), TYPE_LENGTH (type2),
473 byte_order, dec, dec_len, byte_order);
474 else
475 /* The only option left is an integral type. */
476 decimal_from_integral (arg2, dec, dec_len, byte_order);
477
478 return value_from_decfloat (type, dec);
479 }
480 else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM
481 || code1 == TYPE_CODE_RANGE)
482 && (scalar || code2 == TYPE_CODE_PTR
483 || code2 == TYPE_CODE_MEMBERPTR))
484 {
485 LONGEST longest;
486
487 /* When we cast pointers to integers, we mustn't use
488 gdbarch_pointer_to_address to find the address the pointer
489 represents, as value_as_long would. GDB should evaluate
490 expressions just as the compiler would --- and the compiler
491 sees a cast as a simple reinterpretation of the pointer's
492 bits. */
493 if (code2 == TYPE_CODE_PTR)
494 longest = extract_unsigned_integer
495 (value_contents (arg2), TYPE_LENGTH (type2),
496 gdbarch_byte_order (get_type_arch (type2)));
497 else
498 longest = value_as_long (arg2);
499 return value_from_longest (type, convert_to_boolean ?
500 (LONGEST) (longest ? 1 : 0) : longest);
501 }
502 else if (code1 == TYPE_CODE_PTR && (code2 == TYPE_CODE_INT
503 || code2 == TYPE_CODE_ENUM
504 || code2 == TYPE_CODE_RANGE))
505 {
506 /* TYPE_LENGTH (type) is the length of a pointer, but we really
507 want the length of an address! -- we are really dealing with
508 addresses (i.e., gdb representations) not pointers (i.e.,
509 target representations) here.
510
511 This allows things like "print *(int *)0x01000234" to work
512 without printing a misleading message -- which would
513 otherwise occur when dealing with a target having two byte
514 pointers and four byte addresses. */
515
516 int addr_bit = gdbarch_addr_bit (get_type_arch (type2));
517 LONGEST longest = value_as_long (arg2);
518
519 if (addr_bit < sizeof (LONGEST) * HOST_CHAR_BIT)
520 {
521 if (longest >= ((LONGEST) 1 << addr_bit)
522 || longest <= -((LONGEST) 1 << addr_bit))
523 warning (_("value truncated"));
524 }
525 return value_from_longest (type, longest);
526 }
527 else if (code1 == TYPE_CODE_METHODPTR && code2 == TYPE_CODE_INT
528 && value_as_long (arg2) == 0)
529 {
530 struct value *result = allocate_value (type);
531
532 cplus_make_method_ptr (type, value_contents_writeable (result), 0, 0);
533 return result;
534 }
535 else if (code1 == TYPE_CODE_MEMBERPTR && code2 == TYPE_CODE_INT
536 && value_as_long (arg2) == 0)
537 {
538 /* The Itanium C++ ABI represents NULL pointers to members as
539 minus one, instead of biasing the normal case. */
540 return value_from_longest (type, -1);
541 }
542 else if (code1 == TYPE_CODE_ARRAY && TYPE_VECTOR (type)
543 && code2 == TYPE_CODE_ARRAY && TYPE_VECTOR (type2)
544 && TYPE_LENGTH (type) != TYPE_LENGTH (type2))
545 error (_("Cannot convert between vector values of different sizes"));
546 else if (code1 == TYPE_CODE_ARRAY && TYPE_VECTOR (type) && scalar
547 && TYPE_LENGTH (type) != TYPE_LENGTH (type2))
548 error (_("can only cast scalar to vector of same size"));
549 else if (code1 == TYPE_CODE_VOID)
550 {
551 return value_zero (type, not_lval);
552 }
553 else if (TYPE_LENGTH (type) == TYPE_LENGTH (type2))
554 {
555 if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
556 return value_cast_pointers (type, arg2, 0);
557
558 arg2 = value_copy (arg2);
559 deprecated_set_value_type (arg2, type);
560 set_value_enclosing_type (arg2, type);
561 set_value_pointed_to_offset (arg2, 0); /* pai: chk_val */
562 return arg2;
563 }
564 else if (VALUE_LVAL (arg2) == lval_memory)
565 return value_at_lazy (type, value_address (arg2));
566 else
567 {
568 error (_("Invalid cast."));
569 return 0;
570 }
571 }
572
573 /* The C++ reinterpret_cast operator. */
574
575 struct value *
576 value_reinterpret_cast (struct type *type, struct value *arg)
577 {
578 struct value *result;
579 struct type *real_type = check_typedef (type);
580 struct type *arg_type, *dest_type;
581 int is_ref = 0;
582 enum type_code dest_code, arg_code;
583
584 /* Do reference, function, and array conversion. */
585 arg = coerce_array (arg);
586
587 /* Attempt to preserve the type the user asked for. */
588 dest_type = type;
589
590 /* If we are casting to a reference type, transform
591 reinterpret_cast<T&[&]>(V) to *reinterpret_cast<T*>(&V). */
592 if (TYPE_IS_REFERENCE (real_type))
593 {
594 is_ref = 1;
595 arg = value_addr (arg);
596 dest_type = lookup_pointer_type (TYPE_TARGET_TYPE (dest_type));
597 real_type = lookup_pointer_type (real_type);
598 }
599
600 arg_type = value_type (arg);
601
602 dest_code = TYPE_CODE (real_type);
603 arg_code = TYPE_CODE (arg_type);
604
605 /* We can convert pointer types, or any pointer type to int, or int
606 type to pointer. */
607 if ((dest_code == TYPE_CODE_PTR && arg_code == TYPE_CODE_INT)
608 || (dest_code == TYPE_CODE_INT && arg_code == TYPE_CODE_PTR)
609 || (dest_code == TYPE_CODE_METHODPTR && arg_code == TYPE_CODE_INT)
610 || (dest_code == TYPE_CODE_INT && arg_code == TYPE_CODE_METHODPTR)
611 || (dest_code == TYPE_CODE_MEMBERPTR && arg_code == TYPE_CODE_INT)
612 || (dest_code == TYPE_CODE_INT && arg_code == TYPE_CODE_MEMBERPTR)
613 || (dest_code == arg_code
614 && (dest_code == TYPE_CODE_PTR
615 || dest_code == TYPE_CODE_METHODPTR
616 || dest_code == TYPE_CODE_MEMBERPTR)))
617 result = value_cast (dest_type, arg);
618 else
619 error (_("Invalid reinterpret_cast"));
620
621 if (is_ref)
622 result = value_cast (type, value_ref (value_ind (result),
623 TYPE_CODE (type)));
624
625 return result;
626 }
627
628 /* A helper for value_dynamic_cast. This implements the first of two
629 runtime checks: we iterate over all the base classes of the value's
630 class which are equal to the desired class; if only one of these
631 holds the value, then it is the answer. */
632
633 static int
634 dynamic_cast_check_1 (struct type *desired_type,
635 const gdb_byte *valaddr,
636 LONGEST embedded_offset,
637 CORE_ADDR address,
638 struct value *val,
639 struct type *search_type,
640 CORE_ADDR arg_addr,
641 struct type *arg_type,
642 struct value **result)
643 {
644 int i, result_count = 0;
645
646 for (i = 0; i < TYPE_N_BASECLASSES (search_type) && result_count < 2; ++i)
647 {
648 LONGEST offset = baseclass_offset (search_type, i, valaddr,
649 embedded_offset,
650 address, val);
651
652 if (class_types_same_p (desired_type, TYPE_BASECLASS (search_type, i)))
653 {
654 if (address + embedded_offset + offset >= arg_addr
655 && address + embedded_offset + offset < arg_addr + TYPE_LENGTH (arg_type))
656 {
657 ++result_count;
658 if (!*result)
659 *result = value_at_lazy (TYPE_BASECLASS (search_type, i),
660 address + embedded_offset + offset);
661 }
662 }
663 else
664 result_count += dynamic_cast_check_1 (desired_type,
665 valaddr,
666 embedded_offset + offset,
667 address, val,
668 TYPE_BASECLASS (search_type, i),
669 arg_addr,
670 arg_type,
671 result);
672 }
673
674 return result_count;
675 }
676
677 /* A helper for value_dynamic_cast. This implements the second of two
678 runtime checks: we look for a unique public sibling class of the
679 argument's declared class. */
680
681 static int
682 dynamic_cast_check_2 (struct type *desired_type,
683 const gdb_byte *valaddr,
684 LONGEST embedded_offset,
685 CORE_ADDR address,
686 struct value *val,
687 struct type *search_type,
688 struct value **result)
689 {
690 int i, result_count = 0;
691
692 for (i = 0; i < TYPE_N_BASECLASSES (search_type) && result_count < 2; ++i)
693 {
694 LONGEST offset;
695
696 if (! BASETYPE_VIA_PUBLIC (search_type, i))
697 continue;
698
699 offset = baseclass_offset (search_type, i, valaddr, embedded_offset,
700 address, val);
701 if (class_types_same_p (desired_type, TYPE_BASECLASS (search_type, i)))
702 {
703 ++result_count;
704 if (*result == NULL)
705 *result = value_at_lazy (TYPE_BASECLASS (search_type, i),
706 address + embedded_offset + offset);
707 }
708 else
709 result_count += dynamic_cast_check_2 (desired_type,
710 valaddr,
711 embedded_offset + offset,
712 address, val,
713 TYPE_BASECLASS (search_type, i),
714 result);
715 }
716
717 return result_count;
718 }
719
720 /* The C++ dynamic_cast operator. */
721
722 struct value *
723 value_dynamic_cast (struct type *type, struct value *arg)
724 {
725 int full, using_enc;
726 LONGEST top;
727 struct type *resolved_type = check_typedef (type);
728 struct type *arg_type = check_typedef (value_type (arg));
729 struct type *class_type, *rtti_type;
730 struct value *result, *tem, *original_arg = arg;
731 CORE_ADDR addr;
732 int is_ref = TYPE_IS_REFERENCE (resolved_type);
733
734 if (TYPE_CODE (resolved_type) != TYPE_CODE_PTR
735 && !TYPE_IS_REFERENCE (resolved_type))
736 error (_("Argument to dynamic_cast must be a pointer or reference type"));
737 if (TYPE_CODE (TYPE_TARGET_TYPE (resolved_type)) != TYPE_CODE_VOID
738 && TYPE_CODE (TYPE_TARGET_TYPE (resolved_type)) != TYPE_CODE_STRUCT)
739 error (_("Argument to dynamic_cast must be pointer to class or `void *'"));
740
741 class_type = check_typedef (TYPE_TARGET_TYPE (resolved_type));
742 if (TYPE_CODE (resolved_type) == TYPE_CODE_PTR)
743 {
744 if (TYPE_CODE (arg_type) != TYPE_CODE_PTR
745 && ! (TYPE_CODE (arg_type) == TYPE_CODE_INT
746 && value_as_long (arg) == 0))
747 error (_("Argument to dynamic_cast does not have pointer type"));
748 if (TYPE_CODE (arg_type) == TYPE_CODE_PTR)
749 {
750 arg_type = check_typedef (TYPE_TARGET_TYPE (arg_type));
751 if (TYPE_CODE (arg_type) != TYPE_CODE_STRUCT)
752 error (_("Argument to dynamic_cast does "
753 "not have pointer to class type"));
754 }
755
756 /* Handle NULL pointers. */
757 if (value_as_long (arg) == 0)
758 return value_zero (type, not_lval);
759
760 arg = value_ind (arg);
761 }
762 else
763 {
764 if (TYPE_CODE (arg_type) != TYPE_CODE_STRUCT)
765 error (_("Argument to dynamic_cast does not have class type"));
766 }
767
768 /* If the classes are the same, just return the argument. */
769 if (class_types_same_p (class_type, arg_type))
770 return value_cast (type, arg);
771
772 /* If the target type is a unique base class of the argument's
773 declared type, just cast it. */
774 if (is_ancestor (class_type, arg_type))
775 {
776 if (is_unique_ancestor (class_type, arg))
777 return value_cast (type, original_arg);
778 error (_("Ambiguous dynamic_cast"));
779 }
780
781 rtti_type = value_rtti_type (arg, &full, &top, &using_enc);
782 if (! rtti_type)
783 error (_("Couldn't determine value's most derived type for dynamic_cast"));
784
785 /* Compute the most derived object's address. */
786 addr = value_address (arg);
787 if (full)
788 {
789 /* Done. */
790 }
791 else if (using_enc)
792 addr += top;
793 else
794 addr += top + value_embedded_offset (arg);
795
796 /* dynamic_cast<void *> means to return a pointer to the
797 most-derived object. */
798 if (TYPE_CODE (resolved_type) == TYPE_CODE_PTR
799 && TYPE_CODE (TYPE_TARGET_TYPE (resolved_type)) == TYPE_CODE_VOID)
800 return value_at_lazy (type, addr);
801
802 tem = value_at (type, addr);
803 type = value_type (tem);
804
805 /* The first dynamic check specified in 5.2.7. */
806 if (is_public_ancestor (arg_type, TYPE_TARGET_TYPE (resolved_type)))
807 {
808 if (class_types_same_p (rtti_type, TYPE_TARGET_TYPE (resolved_type)))
809 return tem;
810 result = NULL;
811 if (dynamic_cast_check_1 (TYPE_TARGET_TYPE (resolved_type),
812 value_contents_for_printing (tem),
813 value_embedded_offset (tem),
814 value_address (tem), tem,
815 rtti_type, addr,
816 arg_type,
817 &result) == 1)
818 return value_cast (type,
819 is_ref
820 ? value_ref (result, TYPE_CODE (resolved_type))
821 : value_addr (result));
822 }
823
824 /* The second dynamic check specified in 5.2.7. */
825 result = NULL;
826 if (is_public_ancestor (arg_type, rtti_type)
827 && dynamic_cast_check_2 (TYPE_TARGET_TYPE (resolved_type),
828 value_contents_for_printing (tem),
829 value_embedded_offset (tem),
830 value_address (tem), tem,
831 rtti_type, &result) == 1)
832 return value_cast (type,
833 is_ref
834 ? value_ref (result, TYPE_CODE (resolved_type))
835 : value_addr (result));
836
837 if (TYPE_CODE (resolved_type) == TYPE_CODE_PTR)
838 return value_zero (type, not_lval);
839
840 error (_("dynamic_cast failed"));
841 }
842
843 /* Create a value of type TYPE that is zero, and return it. */
844
845 struct value *
846 value_zero (struct type *type, enum lval_type lv)
847 {
848 struct value *val = allocate_value (type);
849
850 VALUE_LVAL (val) = (lv == lval_computed ? not_lval : lv);
851 return val;
852 }
853
854 /* Create a not_lval value of numeric type TYPE that is one, and return it. */
855
856 struct value *
857 value_one (struct type *type)
858 {
859 struct type *type1 = check_typedef (type);
860 struct value *val;
861
862 if (TYPE_CODE (type1) == TYPE_CODE_DECFLOAT)
863 {
864 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
865 gdb_byte v[16];
866
867 decimal_from_string (v, TYPE_LENGTH (type), byte_order, "1");
868 val = value_from_decfloat (type, v);
869 }
870 else if (TYPE_CODE (type1) == TYPE_CODE_FLT)
871 {
872 val = value_from_double (type, (DOUBLEST) 1);
873 }
874 else if (is_integral_type (type1))
875 {
876 val = value_from_longest (type, (LONGEST) 1);
877 }
878 else if (TYPE_CODE (type1) == TYPE_CODE_ARRAY && TYPE_VECTOR (type1))
879 {
880 struct type *eltype = check_typedef (TYPE_TARGET_TYPE (type1));
881 int i;
882 LONGEST low_bound, high_bound;
883 struct value *tmp;
884
885 if (!get_array_bounds (type1, &low_bound, &high_bound))
886 error (_("Could not determine the vector bounds"));
887
888 val = allocate_value (type);
889 for (i = 0; i < high_bound - low_bound + 1; i++)
890 {
891 tmp = value_one (eltype);
892 memcpy (value_contents_writeable (val) + i * TYPE_LENGTH (eltype),
893 value_contents_all (tmp), TYPE_LENGTH (eltype));
894 }
895 }
896 else
897 {
898 error (_("Not a numeric type."));
899 }
900
901 /* value_one result is never used for assignments to. */
902 gdb_assert (VALUE_LVAL (val) == not_lval);
903
904 return val;
905 }
906
907 /* Helper function for value_at, value_at_lazy, and value_at_lazy_stack.
908 The type of the created value may differ from the passed type TYPE.
909 Make sure to retrieve the returned values's new type after this call
910 e.g. in case the type is a variable length array. */
911
912 static struct value *
913 get_value_at (struct type *type, CORE_ADDR addr, int lazy)
914 {
915 struct value *val;
916
917 if (TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
918 error (_("Attempt to dereference a generic pointer."));
919
920 val = value_from_contents_and_address (type, NULL, addr);
921
922 if (!lazy)
923 value_fetch_lazy (val);
924
925 return val;
926 }
927
928 /* Return a value with type TYPE located at ADDR.
929
930 Call value_at only if the data needs to be fetched immediately;
931 if we can be 'lazy' and defer the fetch, perhaps indefinately, call
932 value_at_lazy instead. value_at_lazy simply records the address of
933 the data and sets the lazy-evaluation-required flag. The lazy flag
934 is tested in the value_contents macro, which is used if and when
935 the contents are actually required. The type of the created value
936 may differ from the passed type TYPE. Make sure to retrieve the
937 returned values's new type after this call e.g. in case the type
938 is a variable length array.
939
940 Note: value_at does *NOT* handle embedded offsets; perform such
941 adjustments before or after calling it. */
942
943 struct value *
944 value_at (struct type *type, CORE_ADDR addr)
945 {
946 return get_value_at (type, addr, 0);
947 }
948
949 /* Return a lazy value with type TYPE located at ADDR (cf. value_at).
950 The type of the created value may differ from the passed type TYPE.
951 Make sure to retrieve the returned values's new type after this call
952 e.g. in case the type is a variable length array. */
953
954 struct value *
955 value_at_lazy (struct type *type, CORE_ADDR addr)
956 {
957 return get_value_at (type, addr, 1);
958 }
959
960 void
961 read_value_memory (struct value *val, LONGEST embedded_offset,
962 int stack, CORE_ADDR memaddr,
963 gdb_byte *buffer, size_t length)
964 {
965 ULONGEST xfered_total = 0;
966 struct gdbarch *arch = get_value_arch (val);
967 int unit_size = gdbarch_addressable_memory_unit_size (arch);
968 enum target_object object;
969
970 object = stack ? TARGET_OBJECT_STACK_MEMORY : TARGET_OBJECT_MEMORY;
971
972 while (xfered_total < length)
973 {
974 enum target_xfer_status status;
975 ULONGEST xfered_partial;
976
977 status = target_xfer_partial (current_target.beneath,
978 object, NULL,
979 buffer + xfered_total * unit_size, NULL,
980 memaddr + xfered_total,
981 length - xfered_total,
982 &xfered_partial);
983
984 if (status == TARGET_XFER_OK)
985 /* nothing */;
986 else if (status == TARGET_XFER_UNAVAILABLE)
987 mark_value_bytes_unavailable (val, embedded_offset + xfered_total,
988 xfered_partial);
989 else if (status == TARGET_XFER_EOF)
990 memory_error (TARGET_XFER_E_IO, memaddr + xfered_total);
991 else
992 memory_error (status, memaddr + xfered_total);
993
994 xfered_total += xfered_partial;
995 QUIT;
996 }
997 }
998
999 /* Store the contents of FROMVAL into the location of TOVAL.
1000 Return a new value with the location of TOVAL and contents of FROMVAL. */
1001
1002 struct value *
1003 value_assign (struct value *toval, struct value *fromval)
1004 {
1005 struct type *type;
1006 struct value *val;
1007 struct frame_id old_frame;
1008
1009 if (!deprecated_value_modifiable (toval))
1010 error (_("Left operand of assignment is not a modifiable lvalue."));
1011
1012 toval = coerce_ref (toval);
1013
1014 type = value_type (toval);
1015 if (VALUE_LVAL (toval) != lval_internalvar)
1016 fromval = value_cast (type, fromval);
1017 else
1018 {
1019 /* Coerce arrays and functions to pointers, except for arrays
1020 which only live in GDB's storage. */
1021 if (!value_must_coerce_to_target (fromval))
1022 fromval = coerce_array (fromval);
1023 }
1024
1025 type = check_typedef (type);
1026
1027 /* Since modifying a register can trash the frame chain, and
1028 modifying memory can trash the frame cache, we save the old frame
1029 and then restore the new frame afterwards. */
1030 old_frame = get_frame_id (deprecated_safe_get_selected_frame ());
1031
1032 switch (VALUE_LVAL (toval))
1033 {
1034 case lval_internalvar:
1035 set_internalvar (VALUE_INTERNALVAR (toval), fromval);
1036 return value_of_internalvar (get_type_arch (type),
1037 VALUE_INTERNALVAR (toval));
1038
1039 case lval_internalvar_component:
1040 {
1041 LONGEST offset = value_offset (toval);
1042
1043 /* Are we dealing with a bitfield?
1044
1045 It is important to mention that `value_parent (toval)' is
1046 non-NULL iff `value_bitsize (toval)' is non-zero. */
1047 if (value_bitsize (toval))
1048 {
1049 /* VALUE_INTERNALVAR below refers to the parent value, while
1050 the offset is relative to this parent value. */
1051 gdb_assert (value_parent (value_parent (toval)) == NULL);
1052 offset += value_offset (value_parent (toval));
1053 }
1054
1055 set_internalvar_component (VALUE_INTERNALVAR (toval),
1056 offset,
1057 value_bitpos (toval),
1058 value_bitsize (toval),
1059 fromval);
1060 }
1061 break;
1062
1063 case lval_memory:
1064 {
1065 const gdb_byte *dest_buffer;
1066 CORE_ADDR changed_addr;
1067 int changed_len;
1068 gdb_byte buffer[sizeof (LONGEST)];
1069
1070 if (value_bitsize (toval))
1071 {
1072 struct value *parent = value_parent (toval);
1073
1074 changed_addr = value_address (parent) + value_offset (toval);
1075 changed_len = (value_bitpos (toval)
1076 + value_bitsize (toval)
1077 + HOST_CHAR_BIT - 1)
1078 / HOST_CHAR_BIT;
1079
1080 /* If we can read-modify-write exactly the size of the
1081 containing type (e.g. short or int) then do so. This
1082 is safer for volatile bitfields mapped to hardware
1083 registers. */
1084 if (changed_len < TYPE_LENGTH (type)
1085 && TYPE_LENGTH (type) <= (int) sizeof (LONGEST)
1086 && ((LONGEST) changed_addr % TYPE_LENGTH (type)) == 0)
1087 changed_len = TYPE_LENGTH (type);
1088
1089 if (changed_len > (int) sizeof (LONGEST))
1090 error (_("Can't handle bitfields which "
1091 "don't fit in a %d bit word."),
1092 (int) sizeof (LONGEST) * HOST_CHAR_BIT);
1093
1094 read_memory (changed_addr, buffer, changed_len);
1095 modify_field (type, buffer, value_as_long (fromval),
1096 value_bitpos (toval), value_bitsize (toval));
1097 dest_buffer = buffer;
1098 }
1099 else
1100 {
1101 changed_addr = value_address (toval);
1102 changed_len = type_length_units (type);
1103 dest_buffer = value_contents (fromval);
1104 }
1105
1106 write_memory_with_notification (changed_addr, dest_buffer, changed_len);
1107 }
1108 break;
1109
1110 case lval_register:
1111 {
1112 struct frame_info *frame;
1113 struct gdbarch *gdbarch;
1114 int value_reg;
1115
1116 /* Figure out which frame this is in currently.
1117
1118 We use VALUE_FRAME_ID for obtaining the value's frame id instead of
1119 VALUE_NEXT_FRAME_ID due to requiring a frame which may be passed to
1120 put_frame_register_bytes() below. That function will (eventually)
1121 perform the necessary unwind operation by first obtaining the next
1122 frame. */
1123 frame = frame_find_by_id (VALUE_FRAME_ID (toval));
1124
1125 value_reg = VALUE_REGNUM (toval);
1126
1127 if (!frame)
1128 error (_("Value being assigned to is no longer active."));
1129
1130 gdbarch = get_frame_arch (frame);
1131
1132 if (value_bitsize (toval))
1133 {
1134 struct value *parent = value_parent (toval);
1135 LONGEST offset = value_offset (parent) + value_offset (toval);
1136 int changed_len;
1137 gdb_byte buffer[sizeof (LONGEST)];
1138 int optim, unavail;
1139
1140 changed_len = (value_bitpos (toval)
1141 + value_bitsize (toval)
1142 + HOST_CHAR_BIT - 1)
1143 / HOST_CHAR_BIT;
1144
1145 if (changed_len > (int) sizeof (LONGEST))
1146 error (_("Can't handle bitfields which "
1147 "don't fit in a %d bit word."),
1148 (int) sizeof (LONGEST) * HOST_CHAR_BIT);
1149
1150 if (!get_frame_register_bytes (frame, value_reg, offset,
1151 changed_len, buffer,
1152 &optim, &unavail))
1153 {
1154 if (optim)
1155 throw_error (OPTIMIZED_OUT_ERROR,
1156 _("value has been optimized out"));
1157 if (unavail)
1158 throw_error (NOT_AVAILABLE_ERROR,
1159 _("value is not available"));
1160 }
1161
1162 modify_field (type, buffer, value_as_long (fromval),
1163 value_bitpos (toval), value_bitsize (toval));
1164
1165 put_frame_register_bytes (frame, value_reg, offset,
1166 changed_len, buffer);
1167 }
1168 else
1169 {
1170 if (gdbarch_convert_register_p (gdbarch, VALUE_REGNUM (toval),
1171 type))
1172 {
1173 /* If TOVAL is a special machine register requiring
1174 conversion of program values to a special raw
1175 format. */
1176 gdbarch_value_to_register (gdbarch, frame,
1177 VALUE_REGNUM (toval), type,
1178 value_contents (fromval));
1179 }
1180 else
1181 {
1182 put_frame_register_bytes (frame, value_reg,
1183 value_offset (toval),
1184 TYPE_LENGTH (type),
1185 value_contents (fromval));
1186 }
1187 }
1188
1189 observer_notify_register_changed (frame, value_reg);
1190 break;
1191 }
1192
1193 case lval_computed:
1194 {
1195 const struct lval_funcs *funcs = value_computed_funcs (toval);
1196
1197 if (funcs->write != NULL)
1198 {
1199 funcs->write (toval, fromval);
1200 break;
1201 }
1202 }
1203 /* Fall through. */
1204
1205 default:
1206 error (_("Left operand of assignment is not an lvalue."));
1207 }
1208
1209 /* Assigning to the stack pointer, frame pointer, and other
1210 (architecture and calling convention specific) registers may
1211 cause the frame cache and regcache to be out of date. Assigning to memory
1212 also can. We just do this on all assignments to registers or
1213 memory, for simplicity's sake; I doubt the slowdown matters. */
1214 switch (VALUE_LVAL (toval))
1215 {
1216 case lval_memory:
1217 case lval_register:
1218 case lval_computed:
1219
1220 observer_notify_target_changed (¤t_target);
1221
1222 /* Having destroyed the frame cache, restore the selected
1223 frame. */
1224
1225 /* FIXME: cagney/2002-11-02: There has to be a better way of
1226 doing this. Instead of constantly saving/restoring the
1227 frame. Why not create a get_selected_frame() function that,
1228 having saved the selected frame's ID can automatically
1229 re-find the previously selected frame automatically. */
1230
1231 {
1232 struct frame_info *fi = frame_find_by_id (old_frame);
1233
1234 if (fi != NULL)
1235 select_frame (fi);
1236 }
1237
1238 break;
1239 default:
1240 break;
1241 }
1242
1243 /* If the field does not entirely fill a LONGEST, then zero the sign
1244 bits. If the field is signed, and is negative, then sign
1245 extend. */
1246 if ((value_bitsize (toval) > 0)
1247 && (value_bitsize (toval) < 8 * (int) sizeof (LONGEST)))
1248 {
1249 LONGEST fieldval = value_as_long (fromval);
1250 LONGEST valmask = (((ULONGEST) 1) << value_bitsize (toval)) - 1;
1251
1252 fieldval &= valmask;
1253 if (!TYPE_UNSIGNED (type)
1254 && (fieldval & (valmask ^ (valmask >> 1))))
1255 fieldval |= ~valmask;
1256
1257 fromval = value_from_longest (type, fieldval);
1258 }
1259
1260 /* The return value is a copy of TOVAL so it shares its location
1261 information, but its contents are updated from FROMVAL. This
1262 implies the returned value is not lazy, even if TOVAL was. */
1263 val = value_copy (toval);
1264 set_value_lazy (val, 0);
1265 memcpy (value_contents_raw (val), value_contents (fromval),
1266 TYPE_LENGTH (type));
1267
1268 /* We copy over the enclosing type and pointed-to offset from FROMVAL
1269 in the case of pointer types. For object types, the enclosing type
1270 and embedded offset must *not* be copied: the target object refered
1271 to by TOVAL retains its original dynamic type after assignment. */
1272 if (TYPE_CODE (type) == TYPE_CODE_PTR)
1273 {
1274 set_value_enclosing_type (val, value_enclosing_type (fromval));
1275 set_value_pointed_to_offset (val, value_pointed_to_offset (fromval));
1276 }
1277
1278 return val;
1279 }
1280
1281 /* Extend a value VAL to COUNT repetitions of its type. */
1282
1283 struct value *
1284 value_repeat (struct value *arg1, int count)
1285 {
1286 struct value *val;
1287
1288 if (VALUE_LVAL (arg1) != lval_memory)
1289 error (_("Only values in memory can be extended with '@'."));
1290 if (count < 1)
1291 error (_("Invalid number %d of repetitions."), count);
1292
1293 val = allocate_repeat_value (value_enclosing_type (arg1), count);
1294
1295 VALUE_LVAL (val) = lval_memory;
1296 set_value_address (val, value_address (arg1));
1297
1298 read_value_memory (val, 0, value_stack (val), value_address (val),
1299 value_contents_all_raw (val),
1300 type_length_units (value_enclosing_type (val)));
1301
1302 return val;
1303 }
1304
1305 struct value *
1306 value_of_variable (struct symbol *var, const struct block *b)
1307 {
1308 struct frame_info *frame = NULL;
1309
1310 if (symbol_read_needs_frame (var))
1311 frame = get_selected_frame (_("No frame selected."));
1312
1313 return read_var_value (var, b, frame);
1314 }
1315
1316 struct value *
1317 address_of_variable (struct symbol *var, const struct block *b)
1318 {
1319 struct type *type = SYMBOL_TYPE (var);
1320 struct value *val;
1321
1322 /* Evaluate it first; if the result is a memory address, we're fine.
1323 Lazy evaluation pays off here. */
1324
1325 val = value_of_variable (var, b);
1326 type = value_type (val);
1327
1328 if ((VALUE_LVAL (val) == lval_memory && value_lazy (val))
1329 || TYPE_CODE (type) == TYPE_CODE_FUNC)
1330 {
1331 CORE_ADDR addr = value_address (val);
1332
1333 return value_from_pointer (lookup_pointer_type (type), addr);
1334 }
1335
1336 /* Not a memory address; check what the problem was. */
1337 switch (VALUE_LVAL (val))
1338 {
1339 case lval_register:
1340 {
1341 struct frame_info *frame;
1342 const char *regname;
1343
1344 frame = frame_find_by_id (VALUE_NEXT_FRAME_ID (val));
1345 gdb_assert (frame);
1346
1347 regname = gdbarch_register_name (get_frame_arch (frame),
1348 VALUE_REGNUM (val));
1349 gdb_assert (regname && *regname);
1350
1351 error (_("Address requested for identifier "
1352 "\"%s\" which is in register $%s"),
1353 SYMBOL_PRINT_NAME (var), regname);
1354 break;
1355 }
1356
1357 default:
1358 error (_("Can't take address of \"%s\" which isn't an lvalue."),
1359 SYMBOL_PRINT_NAME (var));
1360 break;
1361 }
1362
1363 return val;
1364 }
1365
1366 /* Return one if VAL does not live in target memory, but should in order
1367 to operate on it. Otherwise return zero. */
1368
1369 int
1370 value_must_coerce_to_target (struct value *val)
1371 {
1372 struct type *valtype;
1373
1374 /* The only lval kinds which do not live in target memory. */
1375 if (VALUE_LVAL (val) != not_lval
1376 && VALUE_LVAL (val) != lval_internalvar
1377 && VALUE_LVAL (val) != lval_xcallable)
1378 return 0;
1379
1380 valtype = check_typedef (value_type (val));
1381
1382 switch (TYPE_CODE (valtype))
1383 {
1384 case TYPE_CODE_ARRAY:
1385 return TYPE_VECTOR (valtype) ? 0 : 1;
1386 case TYPE_CODE_STRING:
1387 return 1;
1388 default:
1389 return 0;
1390 }
1391 }
1392
1393 /* Make sure that VAL lives in target memory if it's supposed to. For
1394 instance, strings are constructed as character arrays in GDB's
1395 storage, and this function copies them to the target. */
1396
1397 struct value *
1398 value_coerce_to_target (struct value *val)
1399 {
1400 LONGEST length;
1401 CORE_ADDR addr;
1402
1403 if (!value_must_coerce_to_target (val))
1404 return val;
1405
1406 length = TYPE_LENGTH (check_typedef (value_type (val)));
1407 addr = allocate_space_in_inferior (length);
1408 write_memory (addr, value_contents (val), length);
1409 return value_at_lazy (value_type (val), addr);
1410 }
1411
1412 /* Given a value which is an array, return a value which is a pointer
1413 to its first element, regardless of whether or not the array has a
1414 nonzero lower bound.
1415
1416 FIXME: A previous comment here indicated that this routine should
1417 be substracting the array's lower bound. It's not clear to me that
1418 this is correct. Given an array subscripting operation, it would
1419 certainly work to do the adjustment here, essentially computing:
1420
1421 (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
1422
1423 However I believe a more appropriate and logical place to account
1424 for the lower bound is to do so in value_subscript, essentially
1425 computing:
1426
1427 (&array[0] + ((index - lowerbound) * sizeof array[0]))
1428
1429 As further evidence consider what would happen with operations
1430 other than array subscripting, where the caller would get back a
1431 value that had an address somewhere before the actual first element
1432 of the array, and the information about the lower bound would be
1433 lost because of the coercion to pointer type. */
1434
1435 struct value *
1436 value_coerce_array (struct value *arg1)
1437 {
1438 struct type *type = check_typedef (value_type (arg1));
1439
1440 /* If the user tries to do something requiring a pointer with an
1441 array that has not yet been pushed to the target, then this would
1442 be a good time to do so. */
1443 arg1 = value_coerce_to_target (arg1);
1444
1445 if (VALUE_LVAL (arg1) != lval_memory)
1446 error (_("Attempt to take address of value not located in memory."));
1447
1448 return value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
1449 value_address (arg1));
1450 }
1451
1452 /* Given a value which is a function, return a value which is a pointer
1453 to it. */
1454
1455 struct value *
1456 value_coerce_function (struct value *arg1)
1457 {
1458 struct value *retval;
1459
1460 if (VALUE_LVAL (arg1) != lval_memory)
1461 error (_("Attempt to take address of value not located in memory."));
1462
1463 retval = value_from_pointer (lookup_pointer_type (value_type (arg1)),
1464 value_address (arg1));
1465 return retval;
1466 }
1467
1468 /* Return a pointer value for the object for which ARG1 is the
1469 contents. */
1470
1471 struct value *
1472 value_addr (struct value *arg1)
1473 {
1474 struct value *arg2;
1475 struct type *type = check_typedef (value_type (arg1));
1476
1477 if (TYPE_IS_REFERENCE (type))
1478 {
1479 if (value_bits_synthetic_pointer (arg1, value_embedded_offset (arg1),
1480 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
1481 arg1 = coerce_ref (arg1);
1482 else
1483 {
1484 /* Copy the value, but change the type from (T&) to (T*). We
1485 keep the same location information, which is efficient, and
1486 allows &(&X) to get the location containing the reference.
1487 Do the same to its enclosing type for consistency. */
1488 struct type *type_ptr
1489 = lookup_pointer_type (TYPE_TARGET_TYPE (type));
1490 struct type *enclosing_type
1491 = check_typedef (value_enclosing_type (arg1));
1492 struct type *enclosing_type_ptr
1493 = lookup_pointer_type (TYPE_TARGET_TYPE (enclosing_type));
1494
1495 arg2 = value_copy (arg1);
1496 deprecated_set_value_type (arg2, type_ptr);
1497 set_value_enclosing_type (arg2, enclosing_type_ptr);
1498
1499 return arg2;
1500 }
1501 }
1502 if (TYPE_CODE (type) == TYPE_CODE_FUNC)
1503 return value_coerce_function (arg1);
1504
1505 /* If this is an array that has not yet been pushed to the target,
1506 then this would be a good time to force it to memory. */
1507 arg1 = value_coerce_to_target (arg1);
1508
1509 if (VALUE_LVAL (arg1) != lval_memory)
1510 error (_("Attempt to take address of value not located in memory."));
1511
1512 /* Get target memory address. */
1513 arg2 = value_from_pointer (lookup_pointer_type (value_type (arg1)),
1514 (value_address (arg1)
1515 + value_embedded_offset (arg1)));
1516
1517 /* This may be a pointer to a base subobject; so remember the
1518 full derived object's type ... */
1519 set_value_enclosing_type (arg2,
1520 lookup_pointer_type (value_enclosing_type (arg1)));
1521 /* ... and also the relative position of the subobject in the full
1522 object. */
1523 set_value_pointed_to_offset (arg2, value_embedded_offset (arg1));
1524 return arg2;
1525 }
1526
1527 /* Return a reference value for the object for which ARG1 is the
1528 contents. */
1529
1530 struct value *
1531 value_ref (struct value *arg1, enum type_code refcode)
1532 {
1533 struct value *arg2;
1534 struct type *type = check_typedef (value_type (arg1));
1535
1536 gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
1537
1538 if ((TYPE_CODE (type) == TYPE_CODE_REF
1539 || TYPE_CODE (type) == TYPE_CODE_RVALUE_REF)
1540 && TYPE_CODE (type) == refcode)
1541 return arg1;
1542
1543 arg2 = value_addr (arg1);
1544 deprecated_set_value_type (arg2, lookup_reference_type (type, refcode));
1545 return arg2;
1546 }
1547
1548 /* Given a value of a pointer type, apply the C unary * operator to
1549 it. */
1550
1551 struct value *
1552 value_ind (struct value *arg1)
1553 {
1554 struct type *base_type;
1555 struct value *arg2;
1556
1557 arg1 = coerce_array (arg1);
1558
1559 base_type = check_typedef (value_type (arg1));
1560
1561 if (VALUE_LVAL (arg1) == lval_computed)
1562 {
1563 const struct lval_funcs *funcs = value_computed_funcs (arg1);
1564
1565 if (funcs->indirect)
1566 {
1567 struct value *result = funcs->indirect (arg1);
1568
1569 if (result)
1570 return result;
1571 }
1572 }
1573
1574 if (TYPE_CODE (base_type) == TYPE_CODE_PTR)
1575 {
1576 struct type *enc_type;
1577
1578 /* We may be pointing to something embedded in a larger object.
1579 Get the real type of the enclosing object. */
1580 enc_type = check_typedef (value_enclosing_type (arg1));
1581 enc_type = TYPE_TARGET_TYPE (enc_type);
1582
1583 if (TYPE_CODE (check_typedef (enc_type)) == TYPE_CODE_FUNC
1584 || TYPE_CODE (check_typedef (enc_type)) == TYPE_CODE_METHOD)
1585 /* For functions, go through find_function_addr, which knows
1586 how to handle function descriptors. */
1587 arg2 = value_at_lazy (enc_type,
1588 find_function_addr (arg1, NULL));
1589 else
1590 /* Retrieve the enclosing object pointed to. */
1591 arg2 = value_at_lazy (enc_type,
1592 (value_as_address (arg1)
1593 - value_pointed_to_offset (arg1)));
1594
1595 enc_type = value_type (arg2);
1596 return readjust_indirect_value_type (arg2, enc_type, base_type, arg1);
1597 }
1598
1599 error (_("Attempt to take contents of a non-pointer value."));
1600 return 0; /* For lint -- never reached. */
1601 }
1602
1603 /* Create a value for an array by allocating space in GDB, copying the
1605 data into that space, and then setting up an array value.
1606
1607 The array bounds are set from LOWBOUND and HIGHBOUND, and the array
1608 is populated from the values passed in ELEMVEC.
1609
1610 The element type of the array is inherited from the type of the
1611 first element, and all elements must have the same size (though we
1612 don't currently enforce any restriction on their types). */
1613
1614 struct value *
1615 value_array (int lowbound, int highbound, struct value **elemvec)
1616 {
1617 int nelem;
1618 int idx;
1619 ULONGEST typelength;
1620 struct value *val;
1621 struct type *arraytype;
1622
1623 /* Validate that the bounds are reasonable and that each of the
1624 elements have the same size. */
1625
1626 nelem = highbound - lowbound + 1;
1627 if (nelem <= 0)
1628 {
1629 error (_("bad array bounds (%d, %d)"), lowbound, highbound);
1630 }
1631 typelength = type_length_units (value_enclosing_type (elemvec[0]));
1632 for (idx = 1; idx < nelem; idx++)
1633 {
1634 if (type_length_units (value_enclosing_type (elemvec[idx]))
1635 != typelength)
1636 {
1637 error (_("array elements must all be the same size"));
1638 }
1639 }
1640
1641 arraytype = lookup_array_range_type (value_enclosing_type (elemvec[0]),
1642 lowbound, highbound);
1643
1644 if (!current_language->c_style_arrays)
1645 {
1646 val = allocate_value (arraytype);
1647 for (idx = 0; idx < nelem; idx++)
1648 value_contents_copy (val, idx * typelength, elemvec[idx], 0,
1649 typelength);
1650 return val;
1651 }
1652
1653 /* Allocate space to store the array, and then initialize it by
1654 copying in each element. */
1655
1656 val = allocate_value (arraytype);
1657 for (idx = 0; idx < nelem; idx++)
1658 value_contents_copy (val, idx * typelength, elemvec[idx], 0, typelength);
1659 return val;
1660 }
1661
1662 struct value *
1663 value_cstring (const char *ptr, ssize_t len, struct type *char_type)
1664 {
1665 struct value *val;
1666 int lowbound = current_language->string_lower_bound;
1667 ssize_t highbound = len / TYPE_LENGTH (char_type);
1668 struct type *stringtype
1669 = lookup_array_range_type (char_type, lowbound, highbound + lowbound - 1);
1670
1671 val = allocate_value (stringtype);
1672 memcpy (value_contents_raw (val), ptr, len);
1673 return val;
1674 }
1675
1676 /* Create a value for a string constant by allocating space in the
1677 inferior, copying the data into that space, and returning the
1678 address with type TYPE_CODE_STRING. PTR points to the string
1679 constant data; LEN is number of characters.
1680
1681 Note that string types are like array of char types with a lower
1682 bound of zero and an upper bound of LEN - 1. Also note that the
1683 string may contain embedded null bytes. */
1684
1685 struct value *
1686 value_string (const char *ptr, ssize_t len, struct type *char_type)
1687 {
1688 struct value *val;
1689 int lowbound = current_language->string_lower_bound;
1690 ssize_t highbound = len / TYPE_LENGTH (char_type);
1691 struct type *stringtype
1692 = lookup_string_range_type (char_type, lowbound, highbound + lowbound - 1);
1693
1694 val = allocate_value (stringtype);
1695 memcpy (value_contents_raw (val), ptr, len);
1696 return val;
1697 }
1698
1699
1700 /* See if we can pass arguments in T2 to a function which takes
1702 arguments of types T1. T1 is a list of NARGS arguments, and T2 is
1703 a NULL-terminated vector. If some arguments need coercion of some
1704 sort, then the coerced values are written into T2. Return value is
1705 0 if the arguments could be matched, or the position at which they
1706 differ if not.
1707
1708 STATICP is nonzero if the T1 argument list came from a static
1709 member function. T2 will still include the ``this'' pointer, but
1710 it will be skipped.
1711
1712 For non-static member functions, we ignore the first argument,
1713 which is the type of the instance variable. This is because we
1714 want to handle calls with objects from derived classes. This is
1715 not entirely correct: we should actually check to make sure that a
1716 requested operation is type secure, shouldn't we? FIXME. */
1717
1718 static int
1719 typecmp (int staticp, int varargs, int nargs,
1720 struct field t1[], struct value *t2[])
1721 {
1722 int i;
1723
1724 if (t2 == 0)
1725 internal_error (__FILE__, __LINE__,
1726 _("typecmp: no argument list"));
1727
1728 /* Skip ``this'' argument if applicable. T2 will always include
1729 THIS. */
1730 if (staticp)
1731 t2 ++;
1732
1733 for (i = 0;
1734 (i < nargs) && TYPE_CODE (t1[i].type) != TYPE_CODE_VOID;
1735 i++)
1736 {
1737 struct type *tt1, *tt2;
1738
1739 if (!t2[i])
1740 return i + 1;
1741
1742 tt1 = check_typedef (t1[i].type);
1743 tt2 = check_typedef (value_type (t2[i]));
1744
1745 if (TYPE_IS_REFERENCE (tt1)
1746 /* We should be doing hairy argument matching, as below. */
1747 && (TYPE_CODE (check_typedef (TYPE_TARGET_TYPE (tt1)))
1748 == TYPE_CODE (tt2)))
1749 {
1750 if (TYPE_CODE (tt2) == TYPE_CODE_ARRAY)
1751 t2[i] = value_coerce_array (t2[i]);
1752 else
1753 t2[i] = value_ref (t2[i], TYPE_CODE (tt1));
1754 continue;
1755 }
1756
1757 /* djb - 20000715 - Until the new type structure is in the
1758 place, and we can attempt things like implicit conversions,
1759 we need to do this so you can take something like a map<const
1760 char *>, and properly access map["hello"], because the
1761 argument to [] will be a reference to a pointer to a char,
1762 and the argument will be a pointer to a char. */
1763 while (TYPE_IS_REFERENCE (tt1) || TYPE_CODE (tt1) == TYPE_CODE_PTR)
1764 {
1765 tt1 = check_typedef( TYPE_TARGET_TYPE(tt1) );
1766 }
1767 while (TYPE_CODE(tt2) == TYPE_CODE_ARRAY
1768 || TYPE_CODE(tt2) == TYPE_CODE_PTR
1769 || TYPE_IS_REFERENCE (tt2))
1770 {
1771 tt2 = check_typedef (TYPE_TARGET_TYPE(tt2));
1772 }
1773 if (TYPE_CODE (tt1) == TYPE_CODE (tt2))
1774 continue;
1775 /* Array to pointer is a `trivial conversion' according to the
1776 ARM. */
1777
1778 /* We should be doing much hairier argument matching (see
1779 section 13.2 of the ARM), but as a quick kludge, just check
1780 for the same type code. */
1781 if (TYPE_CODE (t1[i].type) != TYPE_CODE (value_type (t2[i])))
1782 return i + 1;
1783 }
1784 if (varargs || t2[i] == NULL)
1785 return 0;
1786 return i + 1;
1787 }
1788
1789 /* Helper class for do_search_struct_field that updates *RESULT_PTR
1790 and *LAST_BOFFSET, and possibly throws an exception if the field
1791 search has yielded ambiguous results. */
1792
1793 static void
1794 update_search_result (struct value **result_ptr, struct value *v,
1795 LONGEST *last_boffset, LONGEST boffset,
1796 const char *name, struct type *type)
1797 {
1798 if (v != NULL)
1799 {
1800 if (*result_ptr != NULL
1801 /* The result is not ambiguous if all the classes that are
1802 found occupy the same space. */
1803 && *last_boffset != boffset)
1804 error (_("base class '%s' is ambiguous in type '%s'"),
1805 name, TYPE_SAFE_NAME (type));
1806 *result_ptr = v;
1807 *last_boffset = boffset;
1808 }
1809 }
1810
1811 /* A helper for search_struct_field. This does all the work; most
1812 arguments are as passed to search_struct_field. The result is
1813 stored in *RESULT_PTR, which must be initialized to NULL.
1814 OUTERMOST_TYPE is the type of the initial type passed to
1815 search_struct_field; this is used for error reporting when the
1816 lookup is ambiguous. */
1817
1818 static void
1819 do_search_struct_field (const char *name, struct value *arg1, LONGEST offset,
1820 struct type *type, int looking_for_baseclass,
1821 struct value **result_ptr,
1822 LONGEST *last_boffset,
1823 struct type *outermost_type)
1824 {
1825 int i;
1826 int nbases;
1827
1828 type = check_typedef (type);
1829 nbases = TYPE_N_BASECLASSES (type);
1830
1831 if (!looking_for_baseclass)
1832 for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
1833 {
1834 const char *t_field_name = TYPE_FIELD_NAME (type, i);
1835
1836 if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
1837 {
1838 struct value *v;
1839
1840 if (field_is_static (&TYPE_FIELD (type, i)))
1841 v = value_static_field (type, i);
1842 else
1843 v = value_primitive_field (arg1, offset, i, type);
1844 *result_ptr = v;
1845 return;
1846 }
1847
1848 if (t_field_name
1849 && t_field_name[0] == '\0')
1850 {
1851 struct type *field_type = TYPE_FIELD_TYPE (type, i);
1852
1853 if (TYPE_CODE (field_type) == TYPE_CODE_UNION
1854 || TYPE_CODE (field_type) == TYPE_CODE_STRUCT)
1855 {
1856 /* Look for a match through the fields of an anonymous
1857 union, or anonymous struct. C++ provides anonymous
1858 unions.
1859
1860 In the GNU Chill (now deleted from GDB)
1861 implementation of variant record types, each
1862 <alternative field> has an (anonymous) union type,
1863 each member of the union represents a <variant
1864 alternative>. Each <variant alternative> is
1865 represented as a struct, with a member for each
1866 <variant field>. */
1867
1868 struct value *v = NULL;
1869 LONGEST new_offset = offset;
1870
1871 /* This is pretty gross. In G++, the offset in an
1872 anonymous union is relative to the beginning of the
1873 enclosing struct. In the GNU Chill (now deleted
1874 from GDB) implementation of variant records, the
1875 bitpos is zero in an anonymous union field, so we
1876 have to add the offset of the union here. */
1877 if (TYPE_CODE (field_type) == TYPE_CODE_STRUCT
1878 || (TYPE_NFIELDS (field_type) > 0
1879 && TYPE_FIELD_BITPOS (field_type, 0) == 0))
1880 new_offset += TYPE_FIELD_BITPOS (type, i) / 8;
1881
1882 do_search_struct_field (name, arg1, new_offset,
1883 field_type,
1884 looking_for_baseclass, &v,
1885 last_boffset,
1886 outermost_type);
1887 if (v)
1888 {
1889 *result_ptr = v;
1890 return;
1891 }
1892 }
1893 }
1894 }
1895
1896 for (i = 0; i < nbases; i++)
1897 {
1898 struct value *v = NULL;
1899 struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
1900 /* If we are looking for baseclasses, this is what we get when
1901 we hit them. But it could happen that the base part's member
1902 name is not yet filled in. */
1903 int found_baseclass = (looking_for_baseclass
1904 && TYPE_BASECLASS_NAME (type, i) != NULL
1905 && (strcmp_iw (name,
1906 TYPE_BASECLASS_NAME (type,
1907 i)) == 0));
1908 LONGEST boffset = value_embedded_offset (arg1) + offset;
1909
1910 if (BASETYPE_VIA_VIRTUAL (type, i))
1911 {
1912 struct value *v2;
1913
1914 boffset = baseclass_offset (type, i,
1915 value_contents_for_printing (arg1),
1916 value_embedded_offset (arg1) + offset,
1917 value_address (arg1),
1918 arg1);
1919
1920 /* The virtual base class pointer might have been clobbered
1921 by the user program. Make sure that it still points to a
1922 valid memory location. */
1923
1924 boffset += value_embedded_offset (arg1) + offset;
1925 if (boffset < 0
1926 || boffset >= TYPE_LENGTH (value_enclosing_type (arg1)))
1927 {
1928 CORE_ADDR base_addr;
1929
1930 base_addr = value_address (arg1) + boffset;
1931 v2 = value_at_lazy (basetype, base_addr);
1932 if (target_read_memory (base_addr,
1933 value_contents_raw (v2),
1934 TYPE_LENGTH (value_type (v2))) != 0)
1935 error (_("virtual baseclass botch"));
1936 }
1937 else
1938 {
1939 v2 = value_copy (arg1);
1940 deprecated_set_value_type (v2, basetype);
1941 set_value_embedded_offset (v2, boffset);
1942 }
1943
1944 if (found_baseclass)
1945 v = v2;
1946 else
1947 {
1948 do_search_struct_field (name, v2, 0,
1949 TYPE_BASECLASS (type, i),
1950 looking_for_baseclass,
1951 result_ptr, last_boffset,
1952 outermost_type);
1953 }
1954 }
1955 else if (found_baseclass)
1956 v = value_primitive_field (arg1, offset, i, type);
1957 else
1958 {
1959 do_search_struct_field (name, arg1,
1960 offset + TYPE_BASECLASS_BITPOS (type,
1961 i) / 8,
1962 basetype, looking_for_baseclass,
1963 result_ptr, last_boffset,
1964 outermost_type);
1965 }
1966
1967 update_search_result (result_ptr, v, last_boffset,
1968 boffset, name, outermost_type);
1969 }
1970 }
1971
1972 /* Helper function used by value_struct_elt to recurse through
1973 baseclasses. Look for a field NAME in ARG1. Search in it assuming
1974 it has (class) type TYPE. If found, return value, else return NULL.
1975
1976 If LOOKING_FOR_BASECLASS, then instead of looking for struct
1977 fields, look for a baseclass named NAME. */
1978
1979 static struct value *
1980 search_struct_field (const char *name, struct value *arg1,
1981 struct type *type, int looking_for_baseclass)
1982 {
1983 struct value *result = NULL;
1984 LONGEST boffset = 0;
1985
1986 do_search_struct_field (name, arg1, 0, type, looking_for_baseclass,
1987 &result, &boffset, type);
1988 return result;
1989 }
1990
1991 /* Helper function used by value_struct_elt to recurse through
1992 baseclasses. Look for a field NAME in ARG1. Adjust the address of
1993 ARG1 by OFFSET bytes, and search in it assuming it has (class) type
1994 TYPE.
1995
1996 If found, return value, else if name matched and args not return
1997 (value) -1, else return NULL. */
1998
1999 static struct value *
2000 search_struct_method (const char *name, struct value **arg1p,
2001 struct value **args, LONGEST offset,
2002 int *static_memfuncp, struct type *type)
2003 {
2004 int i;
2005 struct value *v;
2006 int name_matched = 0;
2007 char dem_opname[64];
2008
2009 type = check_typedef (type);
2010 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2011 {
2012 const char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2013
2014 /* FIXME! May need to check for ARM demangling here. */
2015 if (startswith (t_field_name, "__") ||
2016 startswith (t_field_name, "op") ||
2017 startswith (t_field_name, "type"))
2018 {
2019 if (cplus_demangle_opname (t_field_name, dem_opname, DMGL_ANSI))
2020 t_field_name = dem_opname;
2021 else if (cplus_demangle_opname (t_field_name, dem_opname, 0))
2022 t_field_name = dem_opname;
2023 }
2024 if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2025 {
2026 int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
2027 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
2028
2029 name_matched = 1;
2030 check_stub_method_group (type, i);
2031 if (j > 0 && args == 0)
2032 error (_("cannot resolve overloaded method "
2033 "`%s': no arguments supplied"), name);
2034 else if (j == 0 && args == 0)
2035 {
2036 v = value_fn_field (arg1p, f, j, type, offset);
2037 if (v != NULL)
2038 return v;
2039 }
2040 else
2041 while (j >= 0)
2042 {
2043 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
2044 TYPE_VARARGS (TYPE_FN_FIELD_TYPE (f, j)),
2045 TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (f, j)),
2046 TYPE_FN_FIELD_ARGS (f, j), args))
2047 {
2048 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
2049 return value_virtual_fn_field (arg1p, f, j,
2050 type, offset);
2051 if (TYPE_FN_FIELD_STATIC_P (f, j)
2052 && static_memfuncp)
2053 *static_memfuncp = 1;
2054 v = value_fn_field (arg1p, f, j, type, offset);
2055 if (v != NULL)
2056 return v;
2057 }
2058 j--;
2059 }
2060 }
2061 }
2062
2063 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2064 {
2065 LONGEST base_offset;
2066 LONGEST this_offset;
2067
2068 if (BASETYPE_VIA_VIRTUAL (type, i))
2069 {
2070 struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
2071 struct value *base_val;
2072 const gdb_byte *base_valaddr;
2073
2074 /* The virtual base class pointer might have been
2075 clobbered by the user program. Make sure that it
2076 still points to a valid memory location. */
2077
2078 if (offset < 0 || offset >= TYPE_LENGTH (type))
2079 {
2080 gdb_byte *tmp;
2081 struct cleanup *back_to;
2082 CORE_ADDR address;
2083
2084 tmp = (gdb_byte *) xmalloc (TYPE_LENGTH (baseclass));
2085 back_to = make_cleanup (xfree, tmp);
2086 address = value_address (*arg1p);
2087
2088 if (target_read_memory (address + offset,
2089 tmp, TYPE_LENGTH (baseclass)) != 0)
2090 error (_("virtual baseclass botch"));
2091
2092 base_val = value_from_contents_and_address (baseclass,
2093 tmp,
2094 address + offset);
2095 base_valaddr = value_contents_for_printing (base_val);
2096 this_offset = 0;
2097 do_cleanups (back_to);
2098 }
2099 else
2100 {
2101 base_val = *arg1p;
2102 base_valaddr = value_contents_for_printing (*arg1p);
2103 this_offset = offset;
2104 }
2105
2106 base_offset = baseclass_offset (type, i, base_valaddr,
2107 this_offset, value_address (base_val),
2108 base_val);
2109 }
2110 else
2111 {
2112 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2113 }
2114 v = search_struct_method (name, arg1p, args, base_offset + offset,
2115 static_memfuncp, TYPE_BASECLASS (type, i));
2116 if (v == (struct value *) - 1)
2117 {
2118 name_matched = 1;
2119 }
2120 else if (v)
2121 {
2122 /* FIXME-bothner: Why is this commented out? Why is it here? */
2123 /* *arg1p = arg1_tmp; */
2124 return v;
2125 }
2126 }
2127 if (name_matched)
2128 return (struct value *) - 1;
2129 else
2130 return NULL;
2131 }
2132
2133 /* Given *ARGP, a value of type (pointer to a)* structure/union,
2134 extract the component named NAME from the ultimate target
2135 structure/union and return it as a value with its appropriate type.
2136 ERR is used in the error message if *ARGP's type is wrong.
2137
2138 C++: ARGS is a list of argument types to aid in the selection of
2139 an appropriate method. Also, handle derived types.
2140
2141 STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
2142 where the truthvalue of whether the function that was resolved was
2143 a static member function or not is stored.
2144
2145 ERR is an error message to be printed in case the field is not
2146 found. */
2147
2148 struct value *
2149 value_struct_elt (struct value **argp, struct value **args,
2150 const char *name, int *static_memfuncp, const char *err)
2151 {
2152 struct type *t;
2153 struct value *v;
2154
2155 *argp = coerce_array (*argp);
2156
2157 t = check_typedef (value_type (*argp));
2158
2159 /* Follow pointers until we get to a non-pointer. */
2160
2161 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
2162 {
2163 *argp = value_ind (*argp);
2164 /* Don't coerce fn pointer to fn and then back again! */
2165 if (TYPE_CODE (check_typedef (value_type (*argp))) != TYPE_CODE_FUNC)
2166 *argp = coerce_array (*argp);
2167 t = check_typedef (value_type (*argp));
2168 }
2169
2170 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2171 && TYPE_CODE (t) != TYPE_CODE_UNION)
2172 error (_("Attempt to extract a component of a value that is not a %s."),
2173 err);
2174
2175 /* Assume it's not, unless we see that it is. */
2176 if (static_memfuncp)
2177 *static_memfuncp = 0;
2178
2179 if (!args)
2180 {
2181 /* if there are no arguments ...do this... */
2182
2183 /* Try as a field first, because if we succeed, there is less
2184 work to be done. */
2185 v = search_struct_field (name, *argp, t, 0);
2186 if (v)
2187 return v;
2188
2189 /* C++: If it was not found as a data field, then try to
2190 return it as a pointer to a method. */
2191 v = search_struct_method (name, argp, args, 0,
2192 static_memfuncp, t);
2193
2194 if (v == (struct value *) - 1)
2195 error (_("Cannot take address of method %s."), name);
2196 else if (v == 0)
2197 {
2198 if (TYPE_NFN_FIELDS (t))
2199 error (_("There is no member or method named %s."), name);
2200 else
2201 error (_("There is no member named %s."), name);
2202 }
2203 return v;
2204 }
2205
2206 v = search_struct_method (name, argp, args, 0,
2207 static_memfuncp, t);
2208
2209 if (v == (struct value *) - 1)
2210 {
2211 error (_("One of the arguments you tried to pass to %s could not "
2212 "be converted to what the function wants."), name);
2213 }
2214 else if (v == 0)
2215 {
2216 /* See if user tried to invoke data as function. If so, hand it
2217 back. If it's not callable (i.e., a pointer to function),
2218 gdb should give an error. */
2219 v = search_struct_field (name, *argp, t, 0);
2220 /* If we found an ordinary field, then it is not a method call.
2221 So, treat it as if it were a static member function. */
2222 if (v && static_memfuncp)
2223 *static_memfuncp = 1;
2224 }
2225
2226 if (!v)
2227 throw_error (NOT_FOUND_ERROR,
2228 _("Structure has no component named %s."), name);
2229 return v;
2230 }
2231
2232 /* Given *ARGP, a value of type structure or union, or a pointer/reference
2233 to a structure or union, extract and return its component (field) of
2234 type FTYPE at the specified BITPOS.
2235 Throw an exception on error. */
2236
2237 struct value *
2238 value_struct_elt_bitpos (struct value **argp, int bitpos, struct type *ftype,
2239 const char *err)
2240 {
2241 struct type *t;
2242 int i;
2243
2244 *argp = coerce_array (*argp);
2245
2246 t = check_typedef (value_type (*argp));
2247
2248 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
2249 {
2250 *argp = value_ind (*argp);
2251 if (TYPE_CODE (check_typedef (value_type (*argp))) != TYPE_CODE_FUNC)
2252 *argp = coerce_array (*argp);
2253 t = check_typedef (value_type (*argp));
2254 }
2255
2256 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2257 && TYPE_CODE (t) != TYPE_CODE_UNION)
2258 error (_("Attempt to extract a component of a value that is not a %s."),
2259 err);
2260
2261 for (i = TYPE_N_BASECLASSES (t); i < TYPE_NFIELDS (t); i++)
2262 {
2263 if (!field_is_static (&TYPE_FIELD (t, i))
2264 && bitpos == TYPE_FIELD_BITPOS (t, i)
2265 && types_equal (ftype, TYPE_FIELD_TYPE (t, i)))
2266 return value_primitive_field (*argp, 0, i, t);
2267 }
2268
2269 error (_("No field with matching bitpos and type."));
2270
2271 /* Never hit. */
2272 return NULL;
2273 }
2274
2275 /* Search through the methods of an object (and its bases) to find a
2276 specified method. Return the pointer to the fn_field list FN_LIST of
2277 overloaded instances defined in the source language. If available
2278 and matching, a vector of matching xmethods defined in extension
2279 languages are also returned in XM_WORKER_VEC
2280
2281 Helper function for value_find_oload_list.
2282 ARGP is a pointer to a pointer to a value (the object).
2283 METHOD is a string containing the method name.
2284 OFFSET is the offset within the value.
2285 TYPE is the assumed type of the object.
2286 FN_LIST is the pointer to matching overloaded instances defined in
2287 source language. Since this is a recursive function, *FN_LIST
2288 should be set to NULL when calling this function.
2289 NUM_FNS is the number of overloaded instances. *NUM_FNS should be set to
2290 0 when calling this function.
2291 XM_WORKER_VEC is the vector of matching xmethod workers. *XM_WORKER_VEC
2292 should also be set to NULL when calling this function.
2293 BASETYPE is set to the actual type of the subobject where the
2294 method is found.
2295 BOFFSET is the offset of the base subobject where the method is found. */
2296
2297 static void
2298 find_method_list (struct value **argp, const char *method,
2299 LONGEST offset, struct type *type,
2300 struct fn_field **fn_list, int *num_fns,
2301 VEC (xmethod_worker_ptr) **xm_worker_vec,
2302 struct type **basetype, LONGEST *boffset)
2303 {
2304 int i;
2305 struct fn_field *f = NULL;
2306 VEC (xmethod_worker_ptr) *worker_vec = NULL, *new_vec = NULL;
2307
2308 gdb_assert (fn_list != NULL && xm_worker_vec != NULL);
2309 type = check_typedef (type);
2310
2311 /* First check in object itself.
2312 This function is called recursively to search through base classes.
2313 If there is a source method match found at some stage, then we need not
2314 look for source methods in consequent recursive calls. */
2315 if ((*fn_list) == NULL)
2316 {
2317 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2318 {
2319 /* pai: FIXME What about operators and type conversions? */
2320 const char *fn_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2321
2322 if (fn_field_name && (strcmp_iw (fn_field_name, method) == 0))
2323 {
2324 int len = TYPE_FN_FIELDLIST_LENGTH (type, i);
2325 f = TYPE_FN_FIELDLIST1 (type, i);
2326 *fn_list = f;
2327
2328 *num_fns = len;
2329 *basetype = type;
2330 *boffset = offset;
2331
2332 /* Resolve any stub methods. */
2333 check_stub_method_group (type, i);
2334
2335 break;
2336 }
2337 }
2338 }
2339
2340 /* Unlike source methods, xmethods can be accumulated over successive
2341 recursive calls. In other words, an xmethod named 'm' in a class
2342 will not hide an xmethod named 'm' in its base class(es). We want
2343 it to be this way because xmethods are after all convenience functions
2344 and hence there is no point restricting them with something like method
2345 hiding. Moreover, if hiding is done for xmethods as well, then we will
2346 have to provide a mechanism to un-hide (like the 'using' construct). */
2347 worker_vec = get_matching_xmethod_workers (type, method);
2348 new_vec = VEC_merge (xmethod_worker_ptr, *xm_worker_vec, worker_vec);
2349
2350 VEC_free (xmethod_worker_ptr, *xm_worker_vec);
2351 VEC_free (xmethod_worker_ptr, worker_vec);
2352 *xm_worker_vec = new_vec;
2353
2354 /* If source methods are not found in current class, look for them in the
2355 base classes. We also have to go through the base classes to gather
2356 extension methods. */
2357 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2358 {
2359 LONGEST base_offset;
2360
2361 if (BASETYPE_VIA_VIRTUAL (type, i))
2362 {
2363 base_offset = baseclass_offset (type, i,
2364 value_contents_for_printing (*argp),
2365 value_offset (*argp) + offset,
2366 value_address (*argp), *argp);
2367 }
2368 else /* Non-virtual base, simply use bit position from debug
2369 info. */
2370 {
2371 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2372 }
2373
2374 find_method_list (argp, method, base_offset + offset,
2375 TYPE_BASECLASS (type, i), fn_list, num_fns,
2376 xm_worker_vec, basetype, boffset);
2377 }
2378 }
2379
2380 /* Return the list of overloaded methods of a specified name. The methods
2381 could be those GDB finds in the binary, or xmethod. Methods found in
2382 the binary are returned in FN_LIST, and xmethods are returned in
2383 XM_WORKER_VEC.
2384
2385 ARGP is a pointer to a pointer to a value (the object).
2386 METHOD is the method name.
2387 OFFSET is the offset within the value contents.
2388 FN_LIST is the pointer to matching overloaded instances defined in
2389 source language.
2390 NUM_FNS is the number of overloaded instances.
2391 XM_WORKER_VEC is the vector of matching xmethod workers defined in
2392 extension languages.
2393 BASETYPE is set to the type of the base subobject that defines the
2394 method.
2395 BOFFSET is the offset of the base subobject which defines the method. */
2396
2397 static void
2398 value_find_oload_method_list (struct value **argp, const char *method,
2399 LONGEST offset, struct fn_field **fn_list,
2400 int *num_fns,
2401 VEC (xmethod_worker_ptr) **xm_worker_vec,
2402 struct type **basetype, LONGEST *boffset)
2403 {
2404 struct type *t;
2405
2406 t = check_typedef (value_type (*argp));
2407
2408 /* Code snarfed from value_struct_elt. */
2409 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
2410 {
2411 *argp = value_ind (*argp);
2412 /* Don't coerce fn pointer to fn and then back again! */
2413 if (TYPE_CODE (check_typedef (value_type (*argp))) != TYPE_CODE_FUNC)
2414 *argp = coerce_array (*argp);
2415 t = check_typedef (value_type (*argp));
2416 }
2417
2418 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2419 && TYPE_CODE (t) != TYPE_CODE_UNION)
2420 error (_("Attempt to extract a component of a "
2421 "value that is not a struct or union"));
2422
2423 gdb_assert (fn_list != NULL && xm_worker_vec != NULL);
2424
2425 /* Clear the lists. */
2426 *fn_list = NULL;
2427 *num_fns = 0;
2428 *xm_worker_vec = NULL;
2429
2430 find_method_list (argp, method, 0, t, fn_list, num_fns, xm_worker_vec,
2431 basetype, boffset);
2432 }
2433
2434 /* Given an array of arguments (ARGS) (which includes an
2435 entry for "this" in the case of C++ methods), the number of
2436 arguments NARGS, the NAME of a function, and whether it's a method or
2437 not (METHOD), find the best function that matches on the argument types
2438 according to the overload resolution rules.
2439
2440 METHOD can be one of three values:
2441 NON_METHOD for non-member functions.
2442 METHOD: for member functions.
2443 BOTH: used for overload resolution of operators where the
2444 candidates are expected to be either member or non member
2445 functions. In this case the first argument ARGTYPES
2446 (representing 'this') is expected to be a reference to the
2447 target object, and will be dereferenced when attempting the
2448 non-member search.
2449
2450 In the case of class methods, the parameter OBJ is an object value
2451 in which to search for overloaded methods.
2452
2453 In the case of non-method functions, the parameter FSYM is a symbol
2454 corresponding to one of the overloaded functions.
2455
2456 Return value is an integer: 0 -> good match, 10 -> debugger applied
2457 non-standard coercions, 100 -> incompatible.
2458
2459 If a method is being searched for, VALP will hold the value.
2460 If a non-method is being searched for, SYMP will hold the symbol
2461 for it.
2462
2463 If a method is being searched for, and it is a static method,
2464 then STATICP will point to a non-zero value.
2465
2466 If NO_ADL argument dependent lookup is disabled. This is used to prevent
2467 ADL overload candidates when performing overload resolution for a fully
2468 qualified name.
2469
2470 If NOSIDE is EVAL_AVOID_SIDE_EFFECTS, then OBJP's memory cannot be
2471 read while picking the best overload match (it may be all zeroes and thus
2472 not have a vtable pointer), in which case skip virtual function lookup.
2473 This is ok as typically EVAL_AVOID_SIDE_EFFECTS is only used to determine
2474 the result type.
2475
2476 Note: This function does *not* check the value of
2477 overload_resolution. Caller must check it to see whether overload
2478 resolution is permitted. */
2479
2480 int
2481 find_overload_match (struct value **args, int nargs,
2482 const char *name, enum oload_search_type method,
2483 struct value **objp, struct symbol *fsym,
2484 struct value **valp, struct symbol **symp,
2485 int *staticp, const int no_adl,
2486 const enum noside noside)
2487 {
2488 struct value *obj = (objp ? *objp : NULL);
2489 struct type *obj_type = obj ? value_type (obj) : NULL;
2490 /* Index of best overloaded function. */
2491 int func_oload_champ = -1;
2492 int method_oload_champ = -1;
2493 int src_method_oload_champ = -1;
2494 int ext_method_oload_champ = -1;
2495
2496 /* The measure for the current best match. */
2497 struct badness_vector *method_badness = NULL;
2498 struct badness_vector *func_badness = NULL;
2499 struct badness_vector *ext_method_badness = NULL;
2500 struct badness_vector *src_method_badness = NULL;
2501
2502 struct value *temp = obj;
2503 /* For methods, the list of overloaded methods. */
2504 struct fn_field *fns_ptr = NULL;
2505 /* For non-methods, the list of overloaded function symbols. */
2506 struct symbol **oload_syms = NULL;
2507 /* For xmethods, the VEC of xmethod workers. */
2508 VEC (xmethod_worker_ptr) *xm_worker_vec = NULL;
2509 /* Number of overloaded instances being considered. */
2510 int num_fns = 0;
2511 struct type *basetype = NULL;
2512 LONGEST boffset;
2513
2514 struct cleanup *all_cleanups = make_cleanup (null_cleanup, NULL);
2515
2516 const char *obj_type_name = NULL;
2517 const char *func_name = NULL;
2518 enum oload_classification match_quality;
2519 enum oload_classification method_match_quality = INCOMPATIBLE;
2520 enum oload_classification src_method_match_quality = INCOMPATIBLE;
2521 enum oload_classification ext_method_match_quality = INCOMPATIBLE;
2522 enum oload_classification func_match_quality = INCOMPATIBLE;
2523
2524 /* Get the list of overloaded methods or functions. */
2525 if (method == METHOD || method == BOTH)
2526 {
2527 gdb_assert (obj);
2528
2529 /* OBJ may be a pointer value rather than the object itself. */
2530 obj = coerce_ref (obj);
2531 while (TYPE_CODE (check_typedef (value_type (obj))) == TYPE_CODE_PTR)
2532 obj = coerce_ref (value_ind (obj));
2533 obj_type_name = TYPE_NAME (value_type (obj));
2534
2535 /* First check whether this is a data member, e.g. a pointer to
2536 a function. */
2537 if (TYPE_CODE (check_typedef (value_type (obj))) == TYPE_CODE_STRUCT)
2538 {
2539 *valp = search_struct_field (name, obj,
2540 check_typedef (value_type (obj)), 0);
2541 if (*valp)
2542 {
2543 *staticp = 1;
2544 do_cleanups (all_cleanups);
2545 return 0;
2546 }
2547 }
2548
2549 /* Retrieve the list of methods with the name NAME. */
2550 value_find_oload_method_list (&temp, name, 0, &fns_ptr, &num_fns,
2551 &xm_worker_vec, &basetype, &boffset);
2552 /* If this is a method only search, and no methods were found
2553 the search has faild. */
2554 if (method == METHOD && (!fns_ptr || !num_fns) && !xm_worker_vec)
2555 error (_("Couldn't find method %s%s%s"),
2556 obj_type_name,
2557 (obj_type_name && *obj_type_name) ? "::" : "",
2558 name);
2559 /* If we are dealing with stub method types, they should have
2560 been resolved by find_method_list via
2561 value_find_oload_method_list above. */
2562 if (fns_ptr)
2563 {
2564 gdb_assert (TYPE_SELF_TYPE (fns_ptr[0].type) != NULL);
2565
2566 src_method_oload_champ = find_oload_champ (args, nargs,
2567 num_fns, fns_ptr, NULL,
2568 NULL, &src_method_badness);
2569
2570 src_method_match_quality = classify_oload_match
2571 (src_method_badness, nargs,
2572 oload_method_static_p (fns_ptr, src_method_oload_champ));
2573
2574 make_cleanup (xfree, src_method_badness);
2575 }
2576
2577 if (VEC_length (xmethod_worker_ptr, xm_worker_vec) > 0)
2578 {
2579 ext_method_oload_champ = find_oload_champ (args, nargs,
2580 0, NULL, xm_worker_vec,
2581 NULL, &ext_method_badness);
2582 ext_method_match_quality = classify_oload_match (ext_method_badness,
2583 nargs, 0);
2584 make_cleanup (xfree, ext_method_badness);
2585 make_cleanup (free_xmethod_worker_vec, xm_worker_vec);
2586 }
2587
2588 if (src_method_oload_champ >= 0 && ext_method_oload_champ >= 0)
2589 {
2590 switch (compare_badness (ext_method_badness, src_method_badness))
2591 {
2592 case 0: /* Src method and xmethod are equally good. */
2593 /* If src method and xmethod are equally good, then
2594 xmethod should be the winner. Hence, fall through to the
2595 case where a xmethod is better than the source
2596 method, except when the xmethod match quality is
2597 non-standard. */
2598 /* FALLTHROUGH */
2599 case 1: /* Src method and ext method are incompatible. */
2600 /* If ext method match is not standard, then let source method
2601 win. Otherwise, fallthrough to let xmethod win. */
2602 if (ext_method_match_quality != STANDARD)
2603 {
2604 method_oload_champ = src_method_oload_champ;
2605 method_badness = src_method_badness;
2606 ext_method_oload_champ = -1;
2607 method_match_quality = src_method_match_quality;
2608 break;
2609 }
2610 /* FALLTHROUGH */
2611 case 2: /* Ext method is champion. */
2612 method_oload_champ = ext_method_oload_champ;
2613 method_badness = ext_method_badness;
2614 src_method_oload_champ = -1;
2615 method_match_quality = ext_method_match_quality;
2616 break;
2617 case 3: /* Src method is champion. */
2618 method_oload_champ = src_method_oload_champ;
2619 method_badness = src_method_badness;
2620 ext_method_oload_champ = -1;
2621 method_match_quality = src_method_match_quality;
2622 break;
2623 default:
2624 gdb_assert_not_reached ("Unexpected overload comparison "
2625 "result");
2626 break;
2627 }
2628 }
2629 else if (src_method_oload_champ >= 0)
2630 {
2631 method_oload_champ = src_method_oload_champ;
2632 method_badness = src_method_badness;
2633 method_match_quality = src_method_match_quality;
2634 }
2635 else if (ext_method_oload_champ >= 0)
2636 {
2637 method_oload_champ = ext_method_oload_champ;
2638 method_badness = ext_method_badness;
2639 method_match_quality = ext_method_match_quality;
2640 }
2641 }
2642
2643 if (method == NON_METHOD || method == BOTH)
2644 {
2645 const char *qualified_name = NULL;
2646
2647 /* If the overload match is being search for both as a method
2648 and non member function, the first argument must now be
2649 dereferenced. */
2650 if (method == BOTH)
2651 args[0] = value_ind (args[0]);
2652
2653 if (fsym)
2654 {
2655 qualified_name = SYMBOL_NATURAL_NAME (fsym);
2656
2657 /* If we have a function with a C++ name, try to extract just
2658 the function part. Do not try this for non-functions (e.g.
2659 function pointers). */
2660 if (qualified_name
2661 && TYPE_CODE (check_typedef (SYMBOL_TYPE (fsym)))
2662 == TYPE_CODE_FUNC)
2663 {
2664 char *temp;
2665
2666 temp = cp_func_name (qualified_name);
2667
2668 /* If cp_func_name did not remove anything, the name of the
2669 symbol did not include scope or argument types - it was
2670 probably a C-style function. */
2671 if (temp)
2672 {
2673 make_cleanup (xfree, temp);
2674 if (strcmp (temp, qualified_name) == 0)
2675 func_name = NULL;
2676 else
2677 func_name = temp;
2678 }
2679 }
2680 }
2681 else
2682 {
2683 func_name = name;
2684 qualified_name = name;
2685 }
2686
2687 /* If there was no C++ name, this must be a C-style function or
2688 not a function at all. Just return the same symbol. Do the
2689 same if cp_func_name fails for some reason. */
2690 if (func_name == NULL)
2691 {
2692 *symp = fsym;
2693 do_cleanups (all_cleanups);
2694 return 0;
2695 }
2696
2697 func_oload_champ = find_oload_champ_namespace (args, nargs,
2698 func_name,
2699 qualified_name,
2700 &oload_syms,
2701 &func_badness,
2702 no_adl);
2703
2704 if (func_oload_champ >= 0)
2705 func_match_quality = classify_oload_match (func_badness, nargs, 0);
2706
2707 make_cleanup (xfree, oload_syms);
2708 make_cleanup (xfree, func_badness);
2709 }
2710
2711 /* Did we find a match ? */
2712 if (method_oload_champ == -1 && func_oload_champ == -1)
2713 throw_error (NOT_FOUND_ERROR,
2714 _("No symbol \"%s\" in current context."),
2715 name);
2716
2717 /* If we have found both a method match and a function
2718 match, find out which one is better, and calculate match
2719 quality. */
2720 if (method_oload_champ >= 0 && func_oload_champ >= 0)
2721 {
2722 switch (compare_badness (func_badness, method_badness))
2723 {
2724 case 0: /* Top two contenders are equally good. */
2725 /* FIXME: GDB does not support the general ambiguous case.
2726 All candidates should be collected and presented the
2727 user. */
2728 error (_("Ambiguous overload resolution"));
2729 break;
2730 case 1: /* Incomparable top contenders. */
2731 /* This is an error incompatible candidates
2732 should not have been proposed. */
2733 error (_("Internal error: incompatible "
2734 "overload candidates proposed"));
2735 break;
2736 case 2: /* Function champion. */
2737 method_oload_champ = -1;
2738 match_quality = func_match_quality;
2739 break;
2740 case 3: /* Method champion. */
2741 func_oload_champ = -1;
2742 match_quality = method_match_quality;
2743 break;
2744 default:
2745 error (_("Internal error: unexpected overload comparison result"));
2746 break;
2747 }
2748 }
2749 else
2750 {
2751 /* We have either a method match or a function match. */
2752 if (method_oload_champ >= 0)
2753 match_quality = method_match_quality;
2754 else
2755 match_quality = func_match_quality;
2756 }
2757
2758 if (match_quality == INCOMPATIBLE)
2759 {
2760 if (method == METHOD)
2761 error (_("Cannot resolve method %s%s%s to any overloaded instance"),
2762 obj_type_name,
2763 (obj_type_name && *obj_type_name) ? "::" : "",
2764 name);
2765 else
2766 error (_("Cannot resolve function %s to any overloaded instance"),
2767 func_name);
2768 }
2769 else if (match_quality == NON_STANDARD)
2770 {
2771 if (method == METHOD)
2772 warning (_("Using non-standard conversion to match "
2773 "method %s%s%s to supplied arguments"),
2774 obj_type_name,
2775 (obj_type_name && *obj_type_name) ? "::" : "",
2776 name);
2777 else
2778 warning (_("Using non-standard conversion to match "
2779 "function %s to supplied arguments"),
2780 func_name);
2781 }
2782
2783 if (staticp != NULL)
2784 *staticp = oload_method_static_p (fns_ptr, method_oload_champ);
2785
2786 if (method_oload_champ >= 0)
2787 {
2788 if (src_method_oload_champ >= 0)
2789 {
2790 if (TYPE_FN_FIELD_VIRTUAL_P (fns_ptr, method_oload_champ)
2791 && noside != EVAL_AVOID_SIDE_EFFECTS)
2792 {
2793 *valp = value_virtual_fn_field (&temp, fns_ptr,
2794 method_oload_champ, basetype,
2795 boffset);
2796 }
2797 else
2798 *valp = value_fn_field (&temp, fns_ptr, method_oload_champ,
2799 basetype, boffset);
2800 }
2801 else
2802 {
2803 *valp = value_of_xmethod (clone_xmethod_worker
2804 (VEC_index (xmethod_worker_ptr, xm_worker_vec,
2805 ext_method_oload_champ)));
2806 }
2807 }
2808 else
2809 *symp = oload_syms[func_oload_champ];
2810
2811 if (objp)
2812 {
2813 struct type *temp_type = check_typedef (value_type (temp));
2814 struct type *objtype = check_typedef (obj_type);
2815
2816 if (TYPE_CODE (temp_type) != TYPE_CODE_PTR
2817 && (TYPE_CODE (objtype) == TYPE_CODE_PTR
2818 || TYPE_IS_REFERENCE (objtype)))
2819 {
2820 temp = value_addr (temp);
2821 }
2822 *objp = temp;
2823 }
2824
2825 do_cleanups (all_cleanups);
2826
2827 switch (match_quality)
2828 {
2829 case INCOMPATIBLE:
2830 return 100;
2831 case NON_STANDARD:
2832 return 10;
2833 default: /* STANDARD */
2834 return 0;
2835 }
2836 }
2837
2838 /* Find the best overload match, searching for FUNC_NAME in namespaces
2839 contained in QUALIFIED_NAME until it either finds a good match or
2840 runs out of namespaces. It stores the overloaded functions in
2841 *OLOAD_SYMS, and the badness vector in *OLOAD_CHAMP_BV. The
2842 calling function is responsible for freeing *OLOAD_SYMS and
2843 *OLOAD_CHAMP_BV. If NO_ADL, argument dependent lookup is not
2844 performned. */
2845
2846 static int
2847 find_oload_champ_namespace (struct value **args, int nargs,
2848 const char *func_name,
2849 const char *qualified_name,
2850 struct symbol ***oload_syms,
2851 struct badness_vector **oload_champ_bv,
2852 const int no_adl)
2853 {
2854 int oload_champ;
2855
2856 find_oload_champ_namespace_loop (args, nargs,
2857 func_name,
2858 qualified_name, 0,
2859 oload_syms, oload_champ_bv,
2860 &oload_champ,
2861 no_adl);
2862
2863 return oload_champ;
2864 }
2865
2866 /* Helper function for find_oload_champ_namespace; NAMESPACE_LEN is
2867 how deep we've looked for namespaces, and the champ is stored in
2868 OLOAD_CHAMP. The return value is 1 if the champ is a good one, 0
2869 if it isn't. Other arguments are the same as in
2870 find_oload_champ_namespace
2871
2872 It is the caller's responsibility to free *OLOAD_SYMS and
2873 *OLOAD_CHAMP_BV. */
2874
2875 static int
2876 find_oload_champ_namespace_loop (struct value **args, int nargs,
2877 const char *func_name,
2878 const char *qualified_name,
2879 int namespace_len,
2880 struct symbol ***oload_syms,
2881 struct badness_vector **oload_champ_bv,
2882 int *oload_champ,
2883 const int no_adl)
2884 {
2885 int next_namespace_len = namespace_len;
2886 int searched_deeper = 0;
2887 int num_fns = 0;
2888 struct cleanup *old_cleanups;
2889 int new_oload_champ;
2890 struct symbol **new_oload_syms;
2891 struct badness_vector *new_oload_champ_bv;
2892 char *new_namespace;
2893
2894 if (next_namespace_len != 0)
2895 {
2896 gdb_assert (qualified_name[next_namespace_len] == ':');
2897 next_namespace_len += 2;
2898 }
2899 next_namespace_len +=
2900 cp_find_first_component (qualified_name + next_namespace_len);
2901
2902 /* Initialize these to values that can safely be xfree'd. */
2903 *oload_syms = NULL;
2904 *oload_champ_bv = NULL;
2905
2906 /* First, see if we have a deeper namespace we can search in.
2907 If we get a good match there, use it. */
2908
2909 if (qualified_name[next_namespace_len] == ':')
2910 {
2911 searched_deeper = 1;
2912
2913 if (find_oload_champ_namespace_loop (args, nargs,
2914 func_name, qualified_name,
2915 next_namespace_len,
2916 oload_syms, oload_champ_bv,
2917 oload_champ, no_adl))
2918 {
2919 return 1;
2920 }
2921 };
2922
2923 /* If we reach here, either we're in the deepest namespace or we
2924 didn't find a good match in a deeper namespace. But, in the
2925 latter case, we still have a bad match in a deeper namespace;
2926 note that we might not find any match at all in the current
2927 namespace. (There's always a match in the deepest namespace,
2928 because this overload mechanism only gets called if there's a
2929 function symbol to start off with.) */
2930
2931 old_cleanups = make_cleanup (xfree, *oload_syms);
2932 make_cleanup (xfree, *oload_champ_bv);
2933 new_namespace = (char *) alloca (namespace_len + 1);
2934 strncpy (new_namespace, qualified_name, namespace_len);
2935 new_namespace[namespace_len] = '\0';
2936 new_oload_syms = make_symbol_overload_list (func_name,
2937 new_namespace);
2938
2939 /* If we have reached the deepest level perform argument
2940 determined lookup. */
2941 if (!searched_deeper && !no_adl)
2942 {
2943 int ix;
2944 struct type **arg_types;
2945
2946 /* Prepare list of argument types for overload resolution. */
2947 arg_types = (struct type **)
2948 alloca (nargs * (sizeof (struct type *)));
2949 for (ix = 0; ix < nargs; ix++)
2950 arg_types[ix] = value_type (args[ix]);
2951 make_symbol_overload_list_adl (arg_types, nargs, func_name);
2952 }
2953
2954 while (new_oload_syms[num_fns])
2955 ++num_fns;
2956
2957 new_oload_champ = find_oload_champ (args, nargs, num_fns,
2958 NULL, NULL, new_oload_syms,
2959 &new_oload_champ_bv);
2960
2961 /* Case 1: We found a good match. Free earlier matches (if any),
2962 and return it. Case 2: We didn't find a good match, but we're
2963 not the deepest function. Then go with the bad match that the
2964 deeper function found. Case 3: We found a bad match, and we're
2965 the deepest function. Then return what we found, even though
2966 it's a bad match. */
2967
2968 if (new_oload_champ != -1
2969 && classify_oload_match (new_oload_champ_bv, nargs, 0) == STANDARD)
2970 {
2971 *oload_syms = new_oload_syms;
2972 *oload_champ = new_oload_champ;
2973 *oload_champ_bv = new_oload_champ_bv;
2974 do_cleanups (old_cleanups);
2975 return 1;
2976 }
2977 else if (searched_deeper)
2978 {
2979 xfree (new_oload_syms);
2980 xfree (new_oload_champ_bv);
2981 discard_cleanups (old_cleanups);
2982 return 0;
2983 }
2984 else
2985 {
2986 *oload_syms = new_oload_syms;
2987 *oload_champ = new_oload_champ;
2988 *oload_champ_bv = new_oload_champ_bv;
2989 do_cleanups (old_cleanups);
2990 return 0;
2991 }
2992 }
2993
2994 /* Look for a function to take NARGS args of ARGS. Find
2995 the best match from among the overloaded methods or functions
2996 given by FNS_PTR or OLOAD_SYMS or XM_WORKER_VEC, respectively.
2997 One, and only one of FNS_PTR, OLOAD_SYMS and XM_WORKER_VEC can be
2998 non-NULL.
2999
3000 If XM_WORKER_VEC is NULL, then the length of the arrays FNS_PTR
3001 or OLOAD_SYMS (whichever is non-NULL) is specified in NUM_FNS.
3002
3003 Return the index of the best match; store an indication of the
3004 quality of the match in OLOAD_CHAMP_BV.
3005
3006 It is the caller's responsibility to free *OLOAD_CHAMP_BV. */
3007
3008 static int
3009 find_oload_champ (struct value **args, int nargs,
3010 int num_fns, struct fn_field *fns_ptr,
3011 VEC (xmethod_worker_ptr) *xm_worker_vec,
3012 struct symbol **oload_syms,
3013 struct badness_vector **oload_champ_bv)
3014 {
3015 int ix;
3016 int fn_count;
3017 /* A measure of how good an overloaded instance is. */
3018 struct badness_vector *bv;
3019 /* Index of best overloaded function. */
3020 int oload_champ = -1;
3021 /* Current ambiguity state for overload resolution. */
3022 int oload_ambiguous = 0;
3023 /* 0 => no ambiguity, 1 => two good funcs, 2 => incomparable funcs. */
3024
3025 /* A champion can be found among methods alone, or among functions
3026 alone, or in xmethods alone, but not in more than one of these
3027 groups. */
3028 gdb_assert ((fns_ptr != NULL) + (oload_syms != NULL) + (xm_worker_vec != NULL)
3029 == 1);
3030
3031 *oload_champ_bv = NULL;
3032
3033 fn_count = (xm_worker_vec != NULL
3034 ? VEC_length (xmethod_worker_ptr, xm_worker_vec)
3035 : num_fns);
3036 /* Consider each candidate in turn. */
3037 for (ix = 0; ix < fn_count; ix++)
3038 {
3039 int jj;
3040 int static_offset = 0;
3041 int nparms;
3042 struct type **parm_types;
3043 struct xmethod_worker *worker = NULL;
3044
3045 if (xm_worker_vec != NULL)
3046 {
3047 worker = VEC_index (xmethod_worker_ptr, xm_worker_vec, ix);
3048 parm_types = get_xmethod_arg_types (worker, &nparms);
3049 }
3050 else
3051 {
3052 if (fns_ptr != NULL)
3053 {
3054 nparms = TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (fns_ptr, ix));
3055 static_offset = oload_method_static_p (fns_ptr, ix);
3056 }
3057 else
3058 nparms = TYPE_NFIELDS (SYMBOL_TYPE (oload_syms[ix]));
3059
3060 parm_types = XNEWVEC (struct type *, nparms);
3061 for (jj = 0; jj < nparms; jj++)
3062 parm_types[jj] = (fns_ptr != NULL
3063 ? (TYPE_FN_FIELD_ARGS (fns_ptr, ix)[jj].type)
3064 : TYPE_FIELD_TYPE (SYMBOL_TYPE (oload_syms[ix]),
3065 jj));
3066 }
3067
3068 /* Compare parameter types to supplied argument types. Skip
3069 THIS for static methods. */
3070 bv = rank_function (parm_types, nparms,
3071 args + static_offset,
3072 nargs - static_offset);
3073
3074 if (!*oload_champ_bv)
3075 {
3076 *oload_champ_bv = bv;
3077 oload_champ = 0;
3078 }
3079 else /* See whether current candidate is better or worse than
3080 previous best. */
3081 switch (compare_badness (bv, *oload_champ_bv))
3082 {
3083 case 0: /* Top two contenders are equally good. */
3084 oload_ambiguous = 1;
3085 break;
3086 case 1: /* Incomparable top contenders. */
3087 oload_ambiguous = 2;
3088 break;
3089 case 2: /* New champion, record details. */
3090 *oload_champ_bv = bv;
3091 oload_ambiguous = 0;
3092 oload_champ = ix;
3093 break;
3094 case 3:
3095 default:
3096 break;
3097 }
3098 xfree (parm_types);
3099 if (overload_debug)
3100 {
3101 if (fns_ptr != NULL)
3102 fprintf_filtered (gdb_stderr,
3103 "Overloaded method instance %s, # of parms %d\n",
3104 fns_ptr[ix].physname, nparms);
3105 else if (xm_worker_vec != NULL)
3106 fprintf_filtered (gdb_stderr,
3107 "Xmethod worker, # of parms %d\n",
3108 nparms);
3109 else
3110 fprintf_filtered (gdb_stderr,
3111 "Overloaded function instance "
3112 "%s # of parms %d\n",
3113 SYMBOL_DEMANGLED_NAME (oload_syms[ix]),
3114 nparms);
3115 for (jj = 0; jj < nargs - static_offset; jj++)
3116 fprintf_filtered (gdb_stderr,
3117 "...Badness @ %d : %d\n",
3118 jj, bv->rank[jj].rank);
3119 fprintf_filtered (gdb_stderr, "Overload resolution "
3120 "champion is %d, ambiguous? %d\n",
3121 oload_champ, oload_ambiguous);
3122 }
3123 }
3124
3125 return oload_champ;
3126 }
3127
3128 /* Return 1 if we're looking at a static method, 0 if we're looking at
3129 a non-static method or a function that isn't a method. */
3130
3131 static int
3132 oload_method_static_p (struct fn_field *fns_ptr, int index)
3133 {
3134 if (fns_ptr && index >= 0 && TYPE_FN_FIELD_STATIC_P (fns_ptr, index))
3135 return 1;
3136 else
3137 return 0;
3138 }
3139
3140 /* Check how good an overload match OLOAD_CHAMP_BV represents. */
3141
3142 static enum oload_classification
3143 classify_oload_match (struct badness_vector *oload_champ_bv,
3144 int nargs,
3145 int static_offset)
3146 {
3147 int ix;
3148 enum oload_classification worst = STANDARD;
3149
3150 for (ix = 1; ix <= nargs - static_offset; ix++)
3151 {
3152 /* If this conversion is as bad as INCOMPATIBLE_TYPE_BADNESS
3153 or worse return INCOMPATIBLE. */
3154 if (compare_ranks (oload_champ_bv->rank[ix],
3155 INCOMPATIBLE_TYPE_BADNESS) <= 0)
3156 return INCOMPATIBLE; /* Truly mismatched types. */
3157 /* Otherwise If this conversion is as bad as
3158 NS_POINTER_CONVERSION_BADNESS or worse return NON_STANDARD. */
3159 else if (compare_ranks (oload_champ_bv->rank[ix],
3160 NS_POINTER_CONVERSION_BADNESS) <= 0)
3161 worst = NON_STANDARD; /* Non-standard type conversions
3162 needed. */
3163 }
3164
3165 /* If no INCOMPATIBLE classification was found, return the worst one
3166 that was found (if any). */
3167 return worst;
3168 }
3169
3170 /* C++: return 1 is NAME is a legitimate name for the destructor of
3171 type TYPE. If TYPE does not have a destructor, or if NAME is
3172 inappropriate for TYPE, an error is signaled. Parameter TYPE should not yet
3173 have CHECK_TYPEDEF applied, this function will apply it itself. */
3174
3175 int
3176 destructor_name_p (const char *name, struct type *type)
3177 {
3178 if (name[0] == '~')
3179 {
3180 const char *dname = type_name_no_tag_or_error (type);
3181 const char *cp = strchr (dname, '<');
3182 unsigned int len;
3183
3184 /* Do not compare the template part for template classes. */
3185 if (cp == NULL)
3186 len = strlen (dname);
3187 else
3188 len = cp - dname;
3189 if (strlen (name + 1) != len || strncmp (dname, name + 1, len) != 0)
3190 error (_("name of destructor must equal name of class"));
3191 else
3192 return 1;
3193 }
3194 return 0;
3195 }
3196
3197 /* Find an enum constant named NAME in TYPE. TYPE must be an "enum
3198 class". If the name is found, return a value representing it;
3199 otherwise throw an exception. */
3200
3201 static struct value *
3202 enum_constant_from_type (struct type *type, const char *name)
3203 {
3204 int i;
3205 int name_len = strlen (name);
3206
3207 gdb_assert (TYPE_CODE (type) == TYPE_CODE_ENUM
3208 && TYPE_DECLARED_CLASS (type));
3209
3210 for (i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); ++i)
3211 {
3212 const char *fname = TYPE_FIELD_NAME (type, i);
3213 int len;
3214
3215 if (TYPE_FIELD_LOC_KIND (type, i) != FIELD_LOC_KIND_ENUMVAL
3216 || fname == NULL)
3217 continue;
3218
3219 /* Look for the trailing "::NAME", since enum class constant
3220 names are qualified here. */
3221 len = strlen (fname);
3222 if (len + 2 >= name_len
3223 && fname[len - name_len - 2] == ':'
3224 && fname[len - name_len - 1] == ':'
3225 && strcmp (&fname[len - name_len], name) == 0)
3226 return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, i));
3227 }
3228
3229 error (_("no constant named \"%s\" in enum \"%s\""),
3230 name, TYPE_TAG_NAME (type));
3231 }
3232
3233 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
3234 return the appropriate member (or the address of the member, if
3235 WANT_ADDRESS). This function is used to resolve user expressions
3236 of the form "DOMAIN::NAME". For more details on what happens, see
3237 the comment before value_struct_elt_for_reference. */
3238
3239 struct value *
3240 value_aggregate_elt (struct type *curtype, const char *name,
3241 struct type *expect_type, int want_address,
3242 enum noside noside)
3243 {
3244 switch (TYPE_CODE (curtype))
3245 {
3246 case TYPE_CODE_STRUCT:
3247 case TYPE_CODE_UNION:
3248 return value_struct_elt_for_reference (curtype, 0, curtype,
3249 name, expect_type,
3250 want_address, noside);
3251 case TYPE_CODE_NAMESPACE:
3252 return value_namespace_elt (curtype, name,
3253 want_address, noside);
3254
3255 case TYPE_CODE_ENUM:
3256 return enum_constant_from_type (curtype, name);
3257
3258 default:
3259 internal_error (__FILE__, __LINE__,
3260 _("non-aggregate type in value_aggregate_elt"));
3261 }
3262 }
3263
3264 /* Compares the two method/function types T1 and T2 for "equality"
3265 with respect to the methods' parameters. If the types of the
3266 two parameter lists are the same, returns 1; 0 otherwise. This
3267 comparison may ignore any artificial parameters in T1 if
3268 SKIP_ARTIFICIAL is non-zero. This function will ALWAYS skip
3269 the first artificial parameter in T1, assumed to be a 'this' pointer.
3270
3271 The type T2 is expected to have come from make_params (in eval.c). */
3272
3273 static int
3274 compare_parameters (struct type *t1, struct type *t2, int skip_artificial)
3275 {
3276 int start = 0;
3277
3278 if (TYPE_NFIELDS (t1) > 0 && TYPE_FIELD_ARTIFICIAL (t1, 0))
3279 ++start;
3280
3281 /* If skipping artificial fields, find the first real field
3282 in T1. */
3283 if (skip_artificial)
3284 {
3285 while (start < TYPE_NFIELDS (t1)
3286 && TYPE_FIELD_ARTIFICIAL (t1, start))
3287 ++start;
3288 }
3289
3290 /* Now compare parameters. */
3291
3292 /* Special case: a method taking void. T1 will contain no
3293 non-artificial fields, and T2 will contain TYPE_CODE_VOID. */
3294 if ((TYPE_NFIELDS (t1) - start) == 0 && TYPE_NFIELDS (t2) == 1
3295 && TYPE_CODE (TYPE_FIELD_TYPE (t2, 0)) == TYPE_CODE_VOID)
3296 return 1;
3297
3298 if ((TYPE_NFIELDS (t1) - start) == TYPE_NFIELDS (t2))
3299 {
3300 int i;
3301
3302 for (i = 0; i < TYPE_NFIELDS (t2); ++i)
3303 {
3304 if (compare_ranks (rank_one_type (TYPE_FIELD_TYPE (t1, start + i),
3305 TYPE_FIELD_TYPE (t2, i), NULL),
3306 EXACT_MATCH_BADNESS) != 0)
3307 return 0;
3308 }
3309
3310 return 1;
3311 }
3312
3313 return 0;
3314 }
3315
3316 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
3317 return the address of this member as a "pointer to member" type.
3318 If INTYPE is non-null, then it will be the type of the member we
3319 are looking for. This will help us resolve "pointers to member
3320 functions". This function is used to resolve user expressions of
3321 the form "DOMAIN::NAME". */
3322
3323 static struct value *
3324 value_struct_elt_for_reference (struct type *domain, int offset,
3325 struct type *curtype, const char *name,
3326 struct type *intype,
3327 int want_address,
3328 enum noside noside)
3329 {
3330 struct type *t = curtype;
3331 int i;
3332 struct value *v, *result;
3333
3334 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
3335 && TYPE_CODE (t) != TYPE_CODE_UNION)
3336 error (_("Internal error: non-aggregate type "
3337 "to value_struct_elt_for_reference"));
3338
3339 for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
3340 {
3341 const char *t_field_name = TYPE_FIELD_NAME (t, i);
3342
3343 if (t_field_name && strcmp (t_field_name, name) == 0)
3344 {
3345 if (field_is_static (&TYPE_FIELD (t, i)))
3346 {
3347 v = value_static_field (t, i);
3348 if (want_address)
3349 v = value_addr (v);
3350 return v;
3351 }
3352 if (TYPE_FIELD_PACKED (t, i))
3353 error (_("pointers to bitfield members not allowed"));
3354
3355 if (want_address)
3356 return value_from_longest
3357 (lookup_memberptr_type (TYPE_FIELD_TYPE (t, i), domain),
3358 offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
3359 else if (noside != EVAL_NORMAL)
3360 return allocate_value (TYPE_FIELD_TYPE (t, i));
3361 else
3362 {
3363 /* Try to evaluate NAME as a qualified name with implicit
3364 this pointer. In this case, attempt to return the
3365 equivalent to `this->*(&TYPE::NAME)'. */
3366 v = value_of_this_silent (current_language);
3367 if (v != NULL)
3368 {
3369 struct value *ptr;
3370 long mem_offset;
3371 struct type *type, *tmp;
3372
3373 ptr = value_aggregate_elt (domain, name, NULL, 1, noside);
3374 type = check_typedef (value_type (ptr));
3375 gdb_assert (type != NULL
3376 && TYPE_CODE (type) == TYPE_CODE_MEMBERPTR);
3377 tmp = lookup_pointer_type (TYPE_SELF_TYPE (type));
3378 v = value_cast_pointers (tmp, v, 1);
3379 mem_offset = value_as_long (ptr);
3380 tmp = lookup_pointer_type (TYPE_TARGET_TYPE (type));
3381 result = value_from_pointer (tmp,
3382 value_as_long (v) + mem_offset);
3383 return value_ind (result);
3384 }
3385
3386 error (_("Cannot reference non-static field \"%s\""), name);
3387 }
3388 }
3389 }
3390
3391 /* C++: If it was not found as a data field, then try to return it
3392 as a pointer to a method. */
3393
3394 /* Perform all necessary dereferencing. */
3395 while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
3396 intype = TYPE_TARGET_TYPE (intype);
3397
3398 for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
3399 {
3400 const char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
3401 char dem_opname[64];
3402
3403 if (startswith (t_field_name, "__")
3404 || startswith (t_field_name, "op")
3405 || startswith (t_field_name, "type"))
3406 {
3407 if (cplus_demangle_opname (t_field_name,
3408 dem_opname, DMGL_ANSI))
3409 t_field_name = dem_opname;
3410 else if (cplus_demangle_opname (t_field_name,
3411 dem_opname, 0))
3412 t_field_name = dem_opname;
3413 }
3414 if (t_field_name && strcmp (t_field_name, name) == 0)
3415 {
3416 int j;
3417 int len = TYPE_FN_FIELDLIST_LENGTH (t, i);
3418 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
3419
3420 check_stub_method_group (t, i);
3421
3422 if (intype)
3423 {
3424 for (j = 0; j < len; ++j)
3425 {
3426 if (compare_parameters (TYPE_FN_FIELD_TYPE (f, j), intype, 0)
3427 || compare_parameters (TYPE_FN_FIELD_TYPE (f, j),
3428 intype, 1))
3429 break;
3430 }
3431
3432 if (j == len)
3433 error (_("no member function matches "
3434 "that type instantiation"));
3435 }
3436 else
3437 {
3438 int ii;
3439
3440 j = -1;
3441 for (ii = 0; ii < len; ++ii)
3442 {
3443 /* Skip artificial methods. This is necessary if,
3444 for example, the user wants to "print
3445 subclass::subclass" with only one user-defined
3446 constructor. There is no ambiguity in this case.
3447 We are careful here to allow artificial methods
3448 if they are the unique result. */
3449 if (TYPE_FN_FIELD_ARTIFICIAL (f, ii))
3450 {
3451 if (j == -1)
3452 j = ii;
3453 continue;
3454 }
3455
3456 /* Desired method is ambiguous if more than one
3457 method is defined. */
3458 if (j != -1 && !TYPE_FN_FIELD_ARTIFICIAL (f, j))
3459 error (_("non-unique member `%s' requires "
3460 "type instantiation"), name);
3461
3462 j = ii;
3463 }
3464
3465 if (j == -1)
3466 error (_("no matching member function"));
3467 }
3468
3469 if (TYPE_FN_FIELD_STATIC_P (f, j))
3470 {
3471 struct symbol *s =
3472 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
3473 0, VAR_DOMAIN, 0).symbol;
3474
3475 if (s == NULL)
3476 return NULL;
3477
3478 if (want_address)
3479 return value_addr (read_var_value (s, 0, 0));
3480 else
3481 return read_var_value (s, 0, 0);
3482 }
3483
3484 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
3485 {
3486 if (want_address)
3487 {
3488 result = allocate_value
3489 (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
3490 cplus_make_method_ptr (value_type (result),
3491 value_contents_writeable (result),
3492 TYPE_FN_FIELD_VOFFSET (f, j), 1);
3493 }
3494 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
3495 return allocate_value (TYPE_FN_FIELD_TYPE (f, j));
3496 else
3497 error (_("Cannot reference virtual member function \"%s\""),
3498 name);
3499 }
3500 else
3501 {
3502 struct symbol *s =
3503 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
3504 0, VAR_DOMAIN, 0).symbol;
3505
3506 if (s == NULL)
3507 return NULL;
3508
3509 v = read_var_value (s, 0, 0);
3510 if (!want_address)
3511 result = v;
3512 else
3513 {
3514 result = allocate_value (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
3515 cplus_make_method_ptr (value_type (result),
3516 value_contents_writeable (result),
3517 value_address (v), 0);
3518 }
3519 }
3520 return result;
3521 }
3522 }
3523 for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
3524 {
3525 struct value *v;
3526 int base_offset;
3527
3528 if (BASETYPE_VIA_VIRTUAL (t, i))
3529 base_offset = 0;
3530 else
3531 base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
3532 v = value_struct_elt_for_reference (domain,
3533 offset + base_offset,
3534 TYPE_BASECLASS (t, i),
3535 name, intype,
3536 want_address, noside);
3537 if (v)
3538 return v;
3539 }
3540
3541 /* As a last chance, pretend that CURTYPE is a namespace, and look
3542 it up that way; this (frequently) works for types nested inside
3543 classes. */
3544
3545 return value_maybe_namespace_elt (curtype, name,
3546 want_address, noside);
3547 }
3548
3549 /* C++: Return the member NAME of the namespace given by the type
3550 CURTYPE. */
3551
3552 static struct value *
3553 value_namespace_elt (const struct type *curtype,
3554 const char *name, int want_address,
3555 enum noside noside)
3556 {
3557 struct value *retval = value_maybe_namespace_elt (curtype, name,
3558 want_address,
3559 noside);
3560
3561 if (retval == NULL)
3562 error (_("No symbol \"%s\" in namespace \"%s\"."),
3563 name, TYPE_TAG_NAME (curtype));
3564
3565 return retval;
3566 }
3567
3568 /* A helper function used by value_namespace_elt and
3569 value_struct_elt_for_reference. It looks up NAME inside the
3570 context CURTYPE; this works if CURTYPE is a namespace or if CURTYPE
3571 is a class and NAME refers to a type in CURTYPE itself (as opposed
3572 to, say, some base class of CURTYPE). */
3573
3574 static struct value *
3575 value_maybe_namespace_elt (const struct type *curtype,
3576 const char *name, int want_address,
3577 enum noside noside)
3578 {
3579 const char *namespace_name = TYPE_TAG_NAME (curtype);
3580 struct block_symbol sym;
3581 struct value *result;
3582
3583 sym = cp_lookup_symbol_namespace (namespace_name, name,
3584 get_selected_block (0), VAR_DOMAIN);
3585
3586 if (sym.symbol == NULL)
3587 return NULL;
3588 else if ((noside == EVAL_AVOID_SIDE_EFFECTS)
3589 && (SYMBOL_CLASS (sym.symbol) == LOC_TYPEDEF))
3590 result = allocate_value (SYMBOL_TYPE (sym.symbol));
3591 else
3592 result = value_of_variable (sym.symbol, sym.block);
3593
3594 if (want_address)
3595 result = value_addr (result);
3596
3597 return result;
3598 }
3599
3600 /* Given a pointer or a reference value V, find its real (RTTI) type.
3601
3602 Other parameters FULL, TOP, USING_ENC as with value_rtti_type()
3603 and refer to the values computed for the object pointed to. */
3604
3605 struct type *
3606 value_rtti_indirect_type (struct value *v, int *full,
3607 LONGEST *top, int *using_enc)
3608 {
3609 struct value *target = NULL;
3610 struct type *type, *real_type, *target_type;
3611
3612 type = value_type (v);
3613 type = check_typedef (type);
3614 if (TYPE_IS_REFERENCE (type))
3615 target = coerce_ref (v);
3616 else if (TYPE_CODE (type) == TYPE_CODE_PTR)
3617 {
3618
3619 TRY
3620 {
3621 target = value_ind (v);
3622 }
3623 CATCH (except, RETURN_MASK_ERROR)
3624 {
3625 if (except.error == MEMORY_ERROR)
3626 {
3627 /* value_ind threw a memory error. The pointer is NULL or
3628 contains an uninitialized value: we can't determine any
3629 type. */
3630 return NULL;
3631 }
3632 throw_exception (except);
3633 }
3634 END_CATCH
3635 }
3636 else
3637 return NULL;
3638
3639 real_type = value_rtti_type (target, full, top, using_enc);
3640
3641 if (real_type)
3642 {
3643 /* Copy qualifiers to the referenced object. */
3644 target_type = value_type (target);
3645 real_type = make_cv_type (TYPE_CONST (target_type),
3646 TYPE_VOLATILE (target_type), real_type, NULL);
3647 if (TYPE_IS_REFERENCE (type))
3648 real_type = lookup_reference_type (real_type, TYPE_CODE (type));
3649 else if (TYPE_CODE (type) == TYPE_CODE_PTR)
3650 real_type = lookup_pointer_type (real_type);
3651 else
3652 internal_error (__FILE__, __LINE__, _("Unexpected value type."));
3653
3654 /* Copy qualifiers to the pointer/reference. */
3655 real_type = make_cv_type (TYPE_CONST (type), TYPE_VOLATILE (type),
3656 real_type, NULL);
3657 }
3658
3659 return real_type;
3660 }
3661
3662 /* Given a value pointed to by ARGP, check its real run-time type, and
3663 if that is different from the enclosing type, create a new value
3664 using the real run-time type as the enclosing type (and of the same
3665 type as ARGP) and return it, with the embedded offset adjusted to
3666 be the correct offset to the enclosed object. RTYPE is the type,
3667 and XFULL, XTOP, and XUSING_ENC are the other parameters, computed
3668 by value_rtti_type(). If these are available, they can be supplied
3669 and a second call to value_rtti_type() is avoided. (Pass RTYPE ==
3670 NULL if they're not available. */
3671
3672 struct value *
3673 value_full_object (struct value *argp,
3674 struct type *rtype,
3675 int xfull, int xtop,
3676 int xusing_enc)
3677 {
3678 struct type *real_type;
3679 int full = 0;
3680 LONGEST top = -1;
3681 int using_enc = 0;
3682 struct value *new_val;
3683
3684 if (rtype)
3685 {
3686 real_type = rtype;
3687 full = xfull;
3688 top = xtop;
3689 using_enc = xusing_enc;
3690 }
3691 else
3692 real_type = value_rtti_type (argp, &full, &top, &using_enc);
3693
3694 /* If no RTTI data, or if object is already complete, do nothing. */
3695 if (!real_type || real_type == value_enclosing_type (argp))
3696 return argp;
3697
3698 /* In a destructor we might see a real type that is a superclass of
3699 the object's type. In this case it is better to leave the object
3700 as-is. */
3701 if (full
3702 && TYPE_LENGTH (real_type) < TYPE_LENGTH (value_enclosing_type (argp)))
3703 return argp;
3704
3705 /* If we have the full object, but for some reason the enclosing
3706 type is wrong, set it. */
3707 /* pai: FIXME -- sounds iffy */
3708 if (full)
3709 {
3710 argp = value_copy (argp);
3711 set_value_enclosing_type (argp, real_type);
3712 return argp;
3713 }
3714
3715 /* Check if object is in memory. */
3716 if (VALUE_LVAL (argp) != lval_memory)
3717 {
3718 warning (_("Couldn't retrieve complete object of RTTI "
3719 "type %s; object may be in register(s)."),
3720 TYPE_NAME (real_type));
3721
3722 return argp;
3723 }
3724
3725 /* All other cases -- retrieve the complete object. */
3726 /* Go back by the computed top_offset from the beginning of the
3727 object, adjusting for the embedded offset of argp if that's what
3728 value_rtti_type used for its computation. */
3729 new_val = value_at_lazy (real_type, value_address (argp) - top +
3730 (using_enc ? 0 : value_embedded_offset (argp)));
3731 deprecated_set_value_type (new_val, value_type (argp));
3732 set_value_embedded_offset (new_val, (using_enc
3733 ? top + value_embedded_offset (argp)
3734 : top));
3735 return new_val;
3736 }
3737
3738
3739 /* Return the value of the local variable, if one exists. Throw error
3740 otherwise, such as if the request is made in an inappropriate context. */
3741
3742 struct value *
3743 value_of_this (const struct language_defn *lang)
3744 {
3745 struct block_symbol sym;
3746 const struct block *b;
3747 struct frame_info *frame;
3748
3749 if (!lang->la_name_of_this)
3750 error (_("no `this' in current language"));
3751
3752 frame = get_selected_frame (_("no frame selected"));
3753
3754 b = get_frame_block (frame, NULL);
3755
3756 sym = lookup_language_this (lang, b);
3757 if (sym.symbol == NULL)
3758 error (_("current stack frame does not contain a variable named `%s'"),
3759 lang->la_name_of_this);
3760
3761 return read_var_value (sym.symbol, sym.block, frame);
3762 }
3763
3764 /* Return the value of the local variable, if one exists. Return NULL
3765 otherwise. Never throw error. */
3766
3767 struct value *
3768 value_of_this_silent (const struct language_defn *lang)
3769 {
3770 struct value *ret = NULL;
3771
3772 TRY
3773 {
3774 ret = value_of_this (lang);
3775 }
3776 CATCH (except, RETURN_MASK_ERROR)
3777 {
3778 }
3779 END_CATCH
3780
3781 return ret;
3782 }
3783
3784 /* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH
3785 elements long, starting at LOWBOUND. The result has the same lower
3786 bound as the original ARRAY. */
3787
3788 struct value *
3789 value_slice (struct value *array, int lowbound, int length)
3790 {
3791 struct type *slice_range_type, *slice_type, *range_type;
3792 LONGEST lowerbound, upperbound;
3793 struct value *slice;
3794 struct type *array_type;
3795
3796 array_type = check_typedef (value_type (array));
3797 if (TYPE_CODE (array_type) != TYPE_CODE_ARRAY
3798 && TYPE_CODE (array_type) != TYPE_CODE_STRING)
3799 error (_("cannot take slice of non-array"));
3800
3801 range_type = TYPE_INDEX_TYPE (array_type);
3802 if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
3803 error (_("slice from bad array or bitstring"));
3804
3805 if (lowbound < lowerbound || length < 0
3806 || lowbound + length - 1 > upperbound)
3807 error (_("slice out of range"));
3808
3809 /* FIXME-type-allocation: need a way to free this type when we are
3810 done with it. */
3811 slice_range_type = create_static_range_type ((struct type *) NULL,
3812 TYPE_TARGET_TYPE (range_type),
3813 lowbound,
3814 lowbound + length - 1);
3815
3816 {
3817 struct type *element_type = TYPE_TARGET_TYPE (array_type);
3818 LONGEST offset
3819 = (lowbound - lowerbound) * TYPE_LENGTH (check_typedef (element_type));
3820
3821 slice_type = create_array_type ((struct type *) NULL,
3822 element_type,
3823 slice_range_type);
3824 TYPE_CODE (slice_type) = TYPE_CODE (array_type);
3825
3826 if (VALUE_LVAL (array) == lval_memory && value_lazy (array))
3827 slice = allocate_value_lazy (slice_type);
3828 else
3829 {
3830 slice = allocate_value (slice_type);
3831 value_contents_copy (slice, 0, array, offset,
3832 type_length_units (slice_type));
3833 }
3834
3835 set_value_component_location (slice, array);
3836 set_value_offset (slice, value_offset (array) + offset);
3837 }
3838
3839 return slice;
3840 }
3841
3842 /* Create a value for a FORTRAN complex number. Currently most of the
3843 time values are coerced to COMPLEX*16 (i.e. a complex number
3844 composed of 2 doubles. This really should be a smarter routine
3845 that figures out precision inteligently as opposed to assuming
3846 doubles. FIXME: fmb */
3847
3848 struct value *
3849 value_literal_complex (struct value *arg1,
3850 struct value *arg2,
3851 struct type *type)
3852 {
3853 struct value *val;
3854 struct type *real_type = TYPE_TARGET_TYPE (type);
3855
3856 val = allocate_value (type);
3857 arg1 = value_cast (real_type, arg1);
3858 arg2 = value_cast (real_type, arg2);
3859
3860 memcpy (value_contents_raw (val),
3861 value_contents (arg1), TYPE_LENGTH (real_type));
3862 memcpy (value_contents_raw (val) + TYPE_LENGTH (real_type),
3863 value_contents (arg2), TYPE_LENGTH (real_type));
3864 return val;
3865 }
3866
3867 /* Cast a value into the appropriate complex data type. */
3868
3869 static struct value *
3870 cast_into_complex (struct type *type, struct value *val)
3871 {
3872 struct type *real_type = TYPE_TARGET_TYPE (type);
3873
3874 if (TYPE_CODE (value_type (val)) == TYPE_CODE_COMPLEX)
3875 {
3876 struct type *val_real_type = TYPE_TARGET_TYPE (value_type (val));
3877 struct value *re_val = allocate_value (val_real_type);
3878 struct value *im_val = allocate_value (val_real_type);
3879
3880 memcpy (value_contents_raw (re_val),
3881 value_contents (val), TYPE_LENGTH (val_real_type));
3882 memcpy (value_contents_raw (im_val),
3883 value_contents (val) + TYPE_LENGTH (val_real_type),
3884 TYPE_LENGTH (val_real_type));
3885
3886 return value_literal_complex (re_val, im_val, type);
3887 }
3888 else if (TYPE_CODE (value_type (val)) == TYPE_CODE_FLT
3889 || TYPE_CODE (value_type (val)) == TYPE_CODE_INT)
3890 return value_literal_complex (val,
3891 value_zero (real_type, not_lval),
3892 type);
3893 else
3894 error (_("cannot cast non-number to complex"));
3895 }
3896
3897 void
3898 _initialize_valops (void)
3899 {
3900 add_setshow_boolean_cmd ("overload-resolution", class_support,
3901 &overload_resolution, _("\
3902 Set overload resolution in evaluating C++ functions."), _("\
3903 Show overload resolution in evaluating C++ functions."),
3904 NULL, NULL,
3905 show_overload_resolution,
3906 &setlist, &showlist);
3907 overload_resolution = 1;
3908 }
3909