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