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