change and rename gmp_string_asprintf to return an std::string
[binutils-gdb.git] / gdb / valops.c
blob0f84a70ceb6e6cc66592f36ad3c6b2f7ad6b7429
1 /* Perform non-arithmetic operations on values, for GDB.
3 Copyright (C) 1986-2020 Free Software Foundation, Inc.
5 This file is part of GDB.
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.
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.
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/>. */
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"
45 /* Local functions. */
47 static int typecmp (int staticp, int varargs, int nargs,
48 struct field t1[], struct value *t2[]);
50 static struct value *search_struct_field (const char *, struct value *,
51 struct type *, int);
53 static struct value *search_struct_method (const char *, struct value **,
54 struct value **,
55 LONGEST, int *, struct type *);
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);
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);
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);
76 static int oload_method_static_p (struct fn_field *, int);
78 enum oload_classification { STANDARD, NON_STANDARD, INCOMPATIBLE };
80 static enum oload_classification classify_oload_match
81 (const badness_vector &, int, int);
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);
89 static struct value *value_namespace_elt (const struct type *,
90 const char *, int , enum noside);
92 static struct value *value_maybe_namespace_elt (const struct type *,
93 const char *, int,
94 enum noside);
96 static CORE_ADDR allocate_space_in_inferior (int);
98 static struct value *cast_into_complex (struct type *, struct value *);
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)
106 fprintf_filtered (file, _("Overload resolution in evaluating "
107 "C++ functions is %s.\n"),
108 value);
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. */
115 struct value *
116 find_function_in_inferior (const char *name, struct objfile **objf_p)
118 struct block_symbol sym;
120 sym = lookup_symbol (name, 0, VAR_DOMAIN, 0);
121 if (sym.symbol != NULL)
123 if (SYMBOL_CLASS (sym.symbol) != LOC_BLOCK)
125 error (_("\"%s\" exists in this program but is not a function."),
126 name);
129 if (objf_p)
130 *objf_p = symbol_objfile (sym.symbol);
132 return value_of_variable (sym.symbol, sym.block);
134 else
136 struct bound_minimal_symbol msymbol =
137 lookup_bound_minimal_symbol (name);
139 if (msymbol.minsym != NULL)
141 struct objfile *objfile = msymbol.objfile;
142 struct gdbarch *gdbarch = objfile->arch ();
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);
151 if (objf_p)
152 *objf_p = objfile;
154 return value_from_pointer (type, maddr);
156 else
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);
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. */
173 struct value *
174 value_allocate_space_in_inferior (int len)
176 struct objfile *objf;
177 struct value *val = find_function_in_inferior ("malloc", &objf);
178 struct gdbarch *gdbarch = objf->arch ();
179 struct value *blocklen;
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))
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"));
191 return val;
194 static CORE_ADDR
195 allocate_space_in_inferior (int len)
197 return value_as_long (value_allocate_space_in_inferior (len));
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. */
205 static struct value *
206 value_cast_structs (struct type *type, struct value *v2)
208 struct type *t1;
209 struct type *t2;
210 struct value *v;
212 gdb_assert (type != NULL && v2 != NULL);
214 t1 = check_typedef (type);
215 t2 = check_typedef (value_type (v2));
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");
225 if (t1->name () != NULL
226 && t2->name () != NULL
227 && !strcmp (t1->name (), t2->name ()))
228 return NULL;
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)
235 v = search_struct_field (t1->name (),
236 v2, t2, 1);
237 if (v)
238 return v;
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)
246 /* Try downcasting using the run-time type of the value. */
247 int full, using_enc;
248 LONGEST top;
249 struct type *real_type;
251 real_type = value_rtti_type (v2, &full, &top, &using_enc);
252 if (real_type)
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);
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;
264 v = search_struct_field (t2->name (), v, real_type, 1);
265 if (v)
266 return v;
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)
276 /* Downcasting is possible (t1 is superclass of v2). */
277 CORE_ADDR addr2 = value_address (v2);
279 addr2 -= value_address (v) + value_embedded_offset (v);
280 return value_at (type, addr2);
284 return NULL;
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. */
294 struct value *
295 value_cast_pointers (struct type *type, struct value *arg2,
296 int subclass_check)
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));
303 if (t1->code () == TYPE_CODE_STRUCT
304 && t2->code () == TYPE_CODE_STRUCT
305 && (subclass_check || !value_logical_not (arg2)))
307 struct value *v2;
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)
319 struct value *v = value_addr (v2);
321 deprecated_set_value_type (v, type);
322 return v;
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;
334 /* Assuming that TO_TYPE is a fixed point type, return a value
335 corresponding to the cast of FROM_VAL to that type. */
337 static struct value *
338 value_cast_to_fixed_point (struct type *to_type, struct value *from_val)
340 struct type *from_type = value_type (from_val);
342 if (from_type == to_type)
343 return from_val;
345 gdb_mpq vq;
347 /* Extract the value as a rational number. */
349 if (is_floating_type (from_type))
351 double d = target_float_to_host_double (value_contents (from_val),
352 from_type);
353 mpq_set_d (vq.val, d);
356 else if (is_integral_type (from_type) || is_fixed_point_type (from_type))
358 gdb_mpz vz;
360 vz.read (value_contents (from_val), TYPE_LENGTH (from_type),
361 type_byte_order (from_type), from_type->is_unsigned ());
362 mpq_set_z (vq.val, vz.val);
364 if (is_fixed_point_type (from_type))
365 mpq_mul (vq.val, vq.val, fixed_point_scaling_factor (from_type).val);
368 else
369 error (_("Invalid conversion from type %s to fixed point type %s"),
370 from_type->name (), to_type->name ());
372 /* Divide that value by the scaling factor to obtain the unscaled
373 value, first in rational form, and then in integer form. */
375 mpq_div (vq.val, vq.val, fixed_point_scaling_factor (to_type).val);
376 gdb_mpz unscaled = vq.get_rounded ();
378 /* Finally, create the result value, and pack the unscaled value
379 in it. */
380 struct value *result = allocate_value (to_type);
381 unscaled.write (value_contents_raw (result),
382 TYPE_LENGTH (to_type), type_byte_order (to_type),
383 to_type->is_unsigned ());
385 return result;
388 /* Cast value ARG2 to type TYPE and return as a value.
389 More general than a C cast: accepts any two types of the same length,
390 and if ARG2 is an lvalue it can be cast into anything at all. */
391 /* In C++, casts may change pointer or object representations. */
393 struct value *
394 value_cast (struct type *type, struct value *arg2)
396 enum type_code code1;
397 enum type_code code2;
398 int scalar;
399 struct type *type2;
401 int convert_to_boolean = 0;
403 if (value_type (arg2) == type)
404 return arg2;
406 if (is_fixed_point_type (type))
407 return value_cast_to_fixed_point (type, arg2);
409 /* Check if we are casting struct reference to struct reference. */
410 if (TYPE_IS_REFERENCE (check_typedef (type)))
412 /* We dereference type; then we recurse and finally
413 we generate value of the given reference. Nothing wrong with
414 that. */
415 struct type *t1 = check_typedef (type);
416 struct type *dereftype = check_typedef (TYPE_TARGET_TYPE (t1));
417 struct value *val = value_cast (dereftype, arg2);
419 return value_ref (val, t1->code ());
422 if (TYPE_IS_REFERENCE (check_typedef (value_type (arg2))))
423 /* We deref the value and then do the cast. */
424 return value_cast (type, coerce_ref (arg2));
426 /* Strip typedefs / resolve stubs in order to get at the type's
427 code/length, but remember the original type, to use as the
428 resulting type of the cast, in case it was a typedef. */
429 struct type *to_type = type;
431 type = check_typedef (type);
432 code1 = type->code ();
433 arg2 = coerce_ref (arg2);
434 type2 = check_typedef (value_type (arg2));
436 /* You can't cast to a reference type. See value_cast_pointers
437 instead. */
438 gdb_assert (!TYPE_IS_REFERENCE (type));
440 /* A cast to an undetermined-length array_type, such as
441 (TYPE [])OBJECT, is treated like a cast to (TYPE [N])OBJECT,
442 where N is sizeof(OBJECT)/sizeof(TYPE). */
443 if (code1 == TYPE_CODE_ARRAY)
445 struct type *element_type = TYPE_TARGET_TYPE (type);
446 unsigned element_length = TYPE_LENGTH (check_typedef (element_type));
448 if (element_length > 0 && type->bounds ()->high.kind () == PROP_UNDEFINED)
450 struct type *range_type = type->index_type ();
451 int val_length = TYPE_LENGTH (type2);
452 LONGEST low_bound, high_bound, new_length;
454 if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
455 low_bound = 0, high_bound = 0;
456 new_length = val_length / element_length;
457 if (val_length % element_length != 0)
458 warning (_("array element type size does not "
459 "divide object size in cast"));
460 /* FIXME-type-allocation: need a way to free this type when
461 we are done with it. */
462 range_type = create_static_range_type (NULL,
463 TYPE_TARGET_TYPE (range_type),
464 low_bound,
465 new_length + low_bound - 1);
466 deprecated_set_value_type (arg2,
467 create_array_type (NULL,
468 element_type,
469 range_type));
470 return arg2;
474 if (current_language->c_style_arrays_p ()
475 && type2->code () == TYPE_CODE_ARRAY
476 && !type2->is_vector ())
477 arg2 = value_coerce_array (arg2);
479 if (type2->code () == TYPE_CODE_FUNC)
480 arg2 = value_coerce_function (arg2);
482 type2 = check_typedef (value_type (arg2));
483 code2 = type2->code ();
485 if (code1 == TYPE_CODE_COMPLEX)
486 return cast_into_complex (to_type, arg2);
487 if (code1 == TYPE_CODE_BOOL)
489 code1 = TYPE_CODE_INT;
490 convert_to_boolean = 1;
492 if (code1 == TYPE_CODE_CHAR)
493 code1 = TYPE_CODE_INT;
494 if (code2 == TYPE_CODE_BOOL || code2 == TYPE_CODE_CHAR)
495 code2 = TYPE_CODE_INT;
497 scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
498 || code2 == TYPE_CODE_DECFLOAT || code2 == TYPE_CODE_ENUM
499 || code2 == TYPE_CODE_RANGE
500 || is_fixed_point_type (type2));
502 if ((code1 == TYPE_CODE_STRUCT || code1 == TYPE_CODE_UNION)
503 && (code2 == TYPE_CODE_STRUCT || code2 == TYPE_CODE_UNION)
504 && type->name () != 0)
506 struct value *v = value_cast_structs (to_type, arg2);
508 if (v)
509 return v;
512 if (is_floating_type (type) && scalar)
514 if (is_floating_value (arg2))
516 struct value *v = allocate_value (to_type);
517 target_float_convert (value_contents (arg2), type2,
518 value_contents_raw (v), type);
519 return v;
521 else if (is_fixed_point_type (type2))
523 gdb_mpq fp_val;
525 fp_val.read_fixed_point
526 (value_contents (arg2), TYPE_LENGTH (type2),
527 type_byte_order (type2), type2->is_unsigned (),
528 fixed_point_scaling_factor (type2));
530 struct value *v = allocate_value (to_type);
531 target_float_from_host_double (value_contents_raw (v),
532 to_type, mpq_get_d (fp_val.val));
533 return v;
536 /* The only option left is an integral type. */
537 if (type2->is_unsigned ())
538 return value_from_ulongest (to_type, value_as_long (arg2));
539 else
540 return value_from_longest (to_type, value_as_long (arg2));
542 else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM
543 || code1 == TYPE_CODE_RANGE)
544 && (scalar || code2 == TYPE_CODE_PTR
545 || code2 == TYPE_CODE_MEMBERPTR))
547 LONGEST longest;
549 /* When we cast pointers to integers, we mustn't use
550 gdbarch_pointer_to_address to find the address the pointer
551 represents, as value_as_long would. GDB should evaluate
552 expressions just as the compiler would --- and the compiler
553 sees a cast as a simple reinterpretation of the pointer's
554 bits. */
555 if (code2 == TYPE_CODE_PTR)
556 longest = extract_unsigned_integer
557 (value_contents (arg2), TYPE_LENGTH (type2),
558 type_byte_order (type2));
559 else
560 longest = value_as_long (arg2);
561 return value_from_longest (to_type, convert_to_boolean ?
562 (LONGEST) (longest ? 1 : 0) : longest);
564 else if (code1 == TYPE_CODE_PTR && (code2 == TYPE_CODE_INT
565 || code2 == TYPE_CODE_ENUM
566 || code2 == TYPE_CODE_RANGE))
568 /* TYPE_LENGTH (type) is the length of a pointer, but we really
569 want the length of an address! -- we are really dealing with
570 addresses (i.e., gdb representations) not pointers (i.e.,
571 target representations) here.
573 This allows things like "print *(int *)0x01000234" to work
574 without printing a misleading message -- which would
575 otherwise occur when dealing with a target having two byte
576 pointers and four byte addresses. */
578 int addr_bit = gdbarch_addr_bit (get_type_arch (type2));
579 LONGEST longest = value_as_long (arg2);
581 if (addr_bit < sizeof (LONGEST) * HOST_CHAR_BIT)
583 if (longest >= ((LONGEST) 1 << addr_bit)
584 || longest <= -((LONGEST) 1 << addr_bit))
585 warning (_("value truncated"));
587 return value_from_longest (to_type, longest);
589 else if (code1 == TYPE_CODE_METHODPTR && code2 == TYPE_CODE_INT
590 && value_as_long (arg2) == 0)
592 struct value *result = allocate_value (to_type);
594 cplus_make_method_ptr (to_type, value_contents_writeable (result), 0, 0);
595 return result;
597 else if (code1 == TYPE_CODE_MEMBERPTR && code2 == TYPE_CODE_INT
598 && value_as_long (arg2) == 0)
600 /* The Itanium C++ ABI represents NULL pointers to members as
601 minus one, instead of biasing the normal case. */
602 return value_from_longest (to_type, -1);
604 else if (code1 == TYPE_CODE_ARRAY && type->is_vector ()
605 && code2 == TYPE_CODE_ARRAY && type2->is_vector ()
606 && TYPE_LENGTH (type) != TYPE_LENGTH (type2))
607 error (_("Cannot convert between vector values of different sizes"));
608 else if (code1 == TYPE_CODE_ARRAY && type->is_vector () && scalar
609 && TYPE_LENGTH (type) != TYPE_LENGTH (type2))
610 error (_("can only cast scalar to vector of same size"));
611 else if (code1 == TYPE_CODE_VOID)
613 return value_zero (to_type, not_lval);
615 else if (TYPE_LENGTH (type) == TYPE_LENGTH (type2))
617 if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
618 return value_cast_pointers (to_type, arg2, 0);
620 arg2 = value_copy (arg2);
621 deprecated_set_value_type (arg2, to_type);
622 set_value_enclosing_type (arg2, to_type);
623 set_value_pointed_to_offset (arg2, 0); /* pai: chk_val */
624 return arg2;
626 else if (VALUE_LVAL (arg2) == lval_memory)
627 return value_at_lazy (to_type, value_address (arg2));
628 else
630 if (current_language->la_language == language_ada)
631 error (_("Invalid type conversion."));
632 error (_("Invalid cast."));
636 /* The C++ reinterpret_cast operator. */
638 struct value *
639 value_reinterpret_cast (struct type *type, struct value *arg)
641 struct value *result;
642 struct type *real_type = check_typedef (type);
643 struct type *arg_type, *dest_type;
644 int is_ref = 0;
645 enum type_code dest_code, arg_code;
647 /* Do reference, function, and array conversion. */
648 arg = coerce_array (arg);
650 /* Attempt to preserve the type the user asked for. */
651 dest_type = type;
653 /* If we are casting to a reference type, transform
654 reinterpret_cast<T&[&]>(V) to *reinterpret_cast<T*>(&V). */
655 if (TYPE_IS_REFERENCE (real_type))
657 is_ref = 1;
658 arg = value_addr (arg);
659 dest_type = lookup_pointer_type (TYPE_TARGET_TYPE (dest_type));
660 real_type = lookup_pointer_type (real_type);
663 arg_type = value_type (arg);
665 dest_code = real_type->code ();
666 arg_code = arg_type->code ();
668 /* We can convert pointer types, or any pointer type to int, or int
669 type to pointer. */
670 if ((dest_code == TYPE_CODE_PTR && arg_code == TYPE_CODE_INT)
671 || (dest_code == TYPE_CODE_INT && arg_code == TYPE_CODE_PTR)
672 || (dest_code == TYPE_CODE_METHODPTR && arg_code == TYPE_CODE_INT)
673 || (dest_code == TYPE_CODE_INT && arg_code == TYPE_CODE_METHODPTR)
674 || (dest_code == TYPE_CODE_MEMBERPTR && arg_code == TYPE_CODE_INT)
675 || (dest_code == TYPE_CODE_INT && arg_code == TYPE_CODE_MEMBERPTR)
676 || (dest_code == arg_code
677 && (dest_code == TYPE_CODE_PTR
678 || dest_code == TYPE_CODE_METHODPTR
679 || dest_code == TYPE_CODE_MEMBERPTR)))
680 result = value_cast (dest_type, arg);
681 else
682 error (_("Invalid reinterpret_cast"));
684 if (is_ref)
685 result = value_cast (type, value_ref (value_ind (result),
686 type->code ()));
688 return result;
691 /* A helper for value_dynamic_cast. This implements the first of two
692 runtime checks: we iterate over all the base classes of the value's
693 class which are equal to the desired class; if only one of these
694 holds the value, then it is the answer. */
696 static int
697 dynamic_cast_check_1 (struct type *desired_type,
698 const gdb_byte *valaddr,
699 LONGEST embedded_offset,
700 CORE_ADDR address,
701 struct value *val,
702 struct type *search_type,
703 CORE_ADDR arg_addr,
704 struct type *arg_type,
705 struct value **result)
707 int i, result_count = 0;
709 for (i = 0; i < TYPE_N_BASECLASSES (search_type) && result_count < 2; ++i)
711 LONGEST offset = baseclass_offset (search_type, i, valaddr,
712 embedded_offset,
713 address, val);
715 if (class_types_same_p (desired_type, TYPE_BASECLASS (search_type, i)))
717 if (address + embedded_offset + offset >= arg_addr
718 && address + embedded_offset + offset < arg_addr + TYPE_LENGTH (arg_type))
720 ++result_count;
721 if (!*result)
722 *result = value_at_lazy (TYPE_BASECLASS (search_type, i),
723 address + embedded_offset + offset);
726 else
727 result_count += dynamic_cast_check_1 (desired_type,
728 valaddr,
729 embedded_offset + offset,
730 address, val,
731 TYPE_BASECLASS (search_type, i),
732 arg_addr,
733 arg_type,
734 result);
737 return result_count;
740 /* A helper for value_dynamic_cast. This implements the second of two
741 runtime checks: we look for a unique public sibling class of the
742 argument's declared class. */
744 static int
745 dynamic_cast_check_2 (struct type *desired_type,
746 const gdb_byte *valaddr,
747 LONGEST embedded_offset,
748 CORE_ADDR address,
749 struct value *val,
750 struct type *search_type,
751 struct value **result)
753 int i, result_count = 0;
755 for (i = 0; i < TYPE_N_BASECLASSES (search_type) && result_count < 2; ++i)
757 LONGEST offset;
759 if (! BASETYPE_VIA_PUBLIC (search_type, i))
760 continue;
762 offset = baseclass_offset (search_type, i, valaddr, embedded_offset,
763 address, val);
764 if (class_types_same_p (desired_type, TYPE_BASECLASS (search_type, i)))
766 ++result_count;
767 if (*result == NULL)
768 *result = value_at_lazy (TYPE_BASECLASS (search_type, i),
769 address + embedded_offset + offset);
771 else
772 result_count += dynamic_cast_check_2 (desired_type,
773 valaddr,
774 embedded_offset + offset,
775 address, val,
776 TYPE_BASECLASS (search_type, i),
777 result);
780 return result_count;
783 /* The C++ dynamic_cast operator. */
785 struct value *
786 value_dynamic_cast (struct type *type, struct value *arg)
788 int full, using_enc;
789 LONGEST top;
790 struct type *resolved_type = check_typedef (type);
791 struct type *arg_type = check_typedef (value_type (arg));
792 struct type *class_type, *rtti_type;
793 struct value *result, *tem, *original_arg = arg;
794 CORE_ADDR addr;
795 int is_ref = TYPE_IS_REFERENCE (resolved_type);
797 if (resolved_type->code () != TYPE_CODE_PTR
798 && !TYPE_IS_REFERENCE (resolved_type))
799 error (_("Argument to dynamic_cast must be a pointer or reference type"));
800 if (TYPE_TARGET_TYPE (resolved_type)->code () != TYPE_CODE_VOID
801 && TYPE_TARGET_TYPE (resolved_type)->code () != TYPE_CODE_STRUCT)
802 error (_("Argument to dynamic_cast must be pointer to class or `void *'"));
804 class_type = check_typedef (TYPE_TARGET_TYPE (resolved_type));
805 if (resolved_type->code () == TYPE_CODE_PTR)
807 if (arg_type->code () != TYPE_CODE_PTR
808 && ! (arg_type->code () == TYPE_CODE_INT
809 && value_as_long (arg) == 0))
810 error (_("Argument to dynamic_cast does not have pointer type"));
811 if (arg_type->code () == TYPE_CODE_PTR)
813 arg_type = check_typedef (TYPE_TARGET_TYPE (arg_type));
814 if (arg_type->code () != TYPE_CODE_STRUCT)
815 error (_("Argument to dynamic_cast does "
816 "not have pointer to class type"));
819 /* Handle NULL pointers. */
820 if (value_as_long (arg) == 0)
821 return value_zero (type, not_lval);
823 arg = value_ind (arg);
825 else
827 if (arg_type->code () != TYPE_CODE_STRUCT)
828 error (_("Argument to dynamic_cast does not have class type"));
831 /* If the classes are the same, just return the argument. */
832 if (class_types_same_p (class_type, arg_type))
833 return value_cast (type, arg);
835 /* If the target type is a unique base class of the argument's
836 declared type, just cast it. */
837 if (is_ancestor (class_type, arg_type))
839 if (is_unique_ancestor (class_type, arg))
840 return value_cast (type, original_arg);
841 error (_("Ambiguous dynamic_cast"));
844 rtti_type = value_rtti_type (arg, &full, &top, &using_enc);
845 if (! rtti_type)
846 error (_("Couldn't determine value's most derived type for dynamic_cast"));
848 /* Compute the most derived object's address. */
849 addr = value_address (arg);
850 if (full)
852 /* Done. */
854 else if (using_enc)
855 addr += top;
856 else
857 addr += top + value_embedded_offset (arg);
859 /* dynamic_cast<void *> means to return a pointer to the
860 most-derived object. */
861 if (resolved_type->code () == TYPE_CODE_PTR
862 && TYPE_TARGET_TYPE (resolved_type)->code () == TYPE_CODE_VOID)
863 return value_at_lazy (type, addr);
865 tem = value_at (type, addr);
866 type = value_type (tem);
868 /* The first dynamic check specified in 5.2.7. */
869 if (is_public_ancestor (arg_type, TYPE_TARGET_TYPE (resolved_type)))
871 if (class_types_same_p (rtti_type, TYPE_TARGET_TYPE (resolved_type)))
872 return tem;
873 result = NULL;
874 if (dynamic_cast_check_1 (TYPE_TARGET_TYPE (resolved_type),
875 value_contents_for_printing (tem),
876 value_embedded_offset (tem),
877 value_address (tem), tem,
878 rtti_type, addr,
879 arg_type,
880 &result) == 1)
881 return value_cast (type,
882 is_ref
883 ? value_ref (result, resolved_type->code ())
884 : value_addr (result));
887 /* The second dynamic check specified in 5.2.7. */
888 result = NULL;
889 if (is_public_ancestor (arg_type, rtti_type)
890 && dynamic_cast_check_2 (TYPE_TARGET_TYPE (resolved_type),
891 value_contents_for_printing (tem),
892 value_embedded_offset (tem),
893 value_address (tem), tem,
894 rtti_type, &result) == 1)
895 return value_cast (type,
896 is_ref
897 ? value_ref (result, resolved_type->code ())
898 : value_addr (result));
900 if (resolved_type->code () == TYPE_CODE_PTR)
901 return value_zero (type, not_lval);
903 error (_("dynamic_cast failed"));
906 /* Create a value of type TYPE that is zero, and return it. */
908 struct value *
909 value_zero (struct type *type, enum lval_type lv)
911 struct value *val = allocate_value (type);
913 VALUE_LVAL (val) = (lv == lval_computed ? not_lval : lv);
914 return val;
917 /* Create a not_lval value of numeric type TYPE that is one, and return it. */
919 struct value *
920 value_one (struct type *type)
922 struct type *type1 = check_typedef (type);
923 struct value *val;
925 if (is_integral_type (type1) || is_floating_type (type1))
927 val = value_from_longest (type, (LONGEST) 1);
929 else if (type1->code () == TYPE_CODE_ARRAY && type1->is_vector ())
931 struct type *eltype = check_typedef (TYPE_TARGET_TYPE (type1));
932 int i;
933 LONGEST low_bound, high_bound;
934 struct value *tmp;
936 if (!get_array_bounds (type1, &low_bound, &high_bound))
937 error (_("Could not determine the vector bounds"));
939 val = allocate_value (type);
940 for (i = 0; i < high_bound - low_bound + 1; i++)
942 tmp = value_one (eltype);
943 memcpy (value_contents_writeable (val) + i * TYPE_LENGTH (eltype),
944 value_contents_all (tmp), TYPE_LENGTH (eltype));
947 else
949 error (_("Not a numeric type."));
952 /* value_one result is never used for assignments to. */
953 gdb_assert (VALUE_LVAL (val) == not_lval);
955 return val;
958 /* Helper function for value_at, value_at_lazy, and value_at_lazy_stack.
959 The type of the created value may differ from the passed type TYPE.
960 Make sure to retrieve the returned values's new type after this call
961 e.g. in case the type is a variable length array. */
963 static struct value *
964 get_value_at (struct type *type, CORE_ADDR addr, int lazy)
966 struct value *val;
968 if (check_typedef (type)->code () == TYPE_CODE_VOID)
969 error (_("Attempt to dereference a generic pointer."));
971 val = value_from_contents_and_address (type, NULL, addr);
973 if (!lazy)
974 value_fetch_lazy (val);
976 return val;
979 /* Return a value with type TYPE located at ADDR.
981 Call value_at only if the data needs to be fetched immediately;
982 if we can be 'lazy' and defer the fetch, perhaps indefinitely, call
983 value_at_lazy instead. value_at_lazy simply records the address of
984 the data and sets the lazy-evaluation-required flag. The lazy flag
985 is tested in the value_contents macro, which is used if and when
986 the contents are actually required. The type of the created value
987 may differ from the passed type TYPE. Make sure to retrieve the
988 returned values's new type after this call e.g. in case the type
989 is a variable length array.
991 Note: value_at does *NOT* handle embedded offsets; perform such
992 adjustments before or after calling it. */
994 struct value *
995 value_at (struct type *type, CORE_ADDR addr)
997 return get_value_at (type, addr, 0);
1000 /* Return a lazy value with type TYPE located at ADDR (cf. value_at).
1001 The type of the created value may differ from the passed type TYPE.
1002 Make sure to retrieve the returned values's new type after this call
1003 e.g. in case the type is a variable length array. */
1005 struct value *
1006 value_at_lazy (struct type *type, CORE_ADDR addr)
1008 return get_value_at (type, addr, 1);
1011 void
1012 read_value_memory (struct value *val, LONGEST bit_offset,
1013 int stack, CORE_ADDR memaddr,
1014 gdb_byte *buffer, size_t length)
1016 ULONGEST xfered_total = 0;
1017 struct gdbarch *arch = get_value_arch (val);
1018 int unit_size = gdbarch_addressable_memory_unit_size (arch);
1019 enum target_object object;
1021 object = stack ? TARGET_OBJECT_STACK_MEMORY : TARGET_OBJECT_MEMORY;
1023 while (xfered_total < length)
1025 enum target_xfer_status status;
1026 ULONGEST xfered_partial;
1028 status = target_xfer_partial (current_top_target (),
1029 object, NULL,
1030 buffer + xfered_total * unit_size, NULL,
1031 memaddr + xfered_total,
1032 length - xfered_total,
1033 &xfered_partial);
1035 if (status == TARGET_XFER_OK)
1036 /* nothing */;
1037 else if (status == TARGET_XFER_UNAVAILABLE)
1038 mark_value_bits_unavailable (val, (xfered_total * HOST_CHAR_BIT
1039 + bit_offset),
1040 xfered_partial * HOST_CHAR_BIT);
1041 else if (status == TARGET_XFER_EOF)
1042 memory_error (TARGET_XFER_E_IO, memaddr + xfered_total);
1043 else
1044 memory_error (status, memaddr + xfered_total);
1046 xfered_total += xfered_partial;
1047 QUIT;
1051 /* Store the contents of FROMVAL into the location of TOVAL.
1052 Return a new value with the location of TOVAL and contents of FROMVAL. */
1054 struct value *
1055 value_assign (struct value *toval, struct value *fromval)
1057 struct type *type;
1058 struct value *val;
1059 struct frame_id old_frame;
1061 if (!deprecated_value_modifiable (toval))
1062 error (_("Left operand of assignment is not a modifiable lvalue."));
1064 toval = coerce_ref (toval);
1066 type = value_type (toval);
1067 if (VALUE_LVAL (toval) != lval_internalvar)
1068 fromval = value_cast (type, fromval);
1069 else
1071 /* Coerce arrays and functions to pointers, except for arrays
1072 which only live in GDB's storage. */
1073 if (!value_must_coerce_to_target (fromval))
1074 fromval = coerce_array (fromval);
1077 type = check_typedef (type);
1079 /* Since modifying a register can trash the frame chain, and
1080 modifying memory can trash the frame cache, we save the old frame
1081 and then restore the new frame afterwards. */
1082 old_frame = get_frame_id (deprecated_safe_get_selected_frame ());
1084 switch (VALUE_LVAL (toval))
1086 case lval_internalvar:
1087 set_internalvar (VALUE_INTERNALVAR (toval), fromval);
1088 return value_of_internalvar (get_type_arch (type),
1089 VALUE_INTERNALVAR (toval));
1091 case lval_internalvar_component:
1093 LONGEST offset = value_offset (toval);
1095 /* Are we dealing with a bitfield?
1097 It is important to mention that `value_parent (toval)' is
1098 non-NULL iff `value_bitsize (toval)' is non-zero. */
1099 if (value_bitsize (toval))
1101 /* VALUE_INTERNALVAR below refers to the parent value, while
1102 the offset is relative to this parent value. */
1103 gdb_assert (value_parent (value_parent (toval)) == NULL);
1104 offset += value_offset (value_parent (toval));
1107 set_internalvar_component (VALUE_INTERNALVAR (toval),
1108 offset,
1109 value_bitpos (toval),
1110 value_bitsize (toval),
1111 fromval);
1113 break;
1115 case lval_memory:
1117 const gdb_byte *dest_buffer;
1118 CORE_ADDR changed_addr;
1119 int changed_len;
1120 gdb_byte buffer[sizeof (LONGEST)];
1122 if (value_bitsize (toval))
1124 struct value *parent = value_parent (toval);
1126 changed_addr = value_address (parent) + value_offset (toval);
1127 changed_len = (value_bitpos (toval)
1128 + value_bitsize (toval)
1129 + HOST_CHAR_BIT - 1)
1130 / HOST_CHAR_BIT;
1132 /* If we can read-modify-write exactly the size of the
1133 containing type (e.g. short or int) then do so. This
1134 is safer for volatile bitfields mapped to hardware
1135 registers. */
1136 if (changed_len < TYPE_LENGTH (type)
1137 && TYPE_LENGTH (type) <= (int) sizeof (LONGEST)
1138 && ((LONGEST) changed_addr % TYPE_LENGTH (type)) == 0)
1139 changed_len = TYPE_LENGTH (type);
1141 if (changed_len > (int) sizeof (LONGEST))
1142 error (_("Can't handle bitfields which "
1143 "don't fit in a %d bit word."),
1144 (int) sizeof (LONGEST) * HOST_CHAR_BIT);
1146 read_memory (changed_addr, buffer, changed_len);
1147 modify_field (type, buffer, value_as_long (fromval),
1148 value_bitpos (toval), value_bitsize (toval));
1149 dest_buffer = buffer;
1151 else
1153 changed_addr = value_address (toval);
1154 changed_len = type_length_units (type);
1155 dest_buffer = value_contents (fromval);
1158 write_memory_with_notification (changed_addr, dest_buffer, changed_len);
1160 break;
1162 case lval_register:
1164 struct frame_info *frame;
1165 struct gdbarch *gdbarch;
1166 int value_reg;
1168 /* Figure out which frame this is in currently.
1170 We use VALUE_FRAME_ID for obtaining the value's frame id instead of
1171 VALUE_NEXT_FRAME_ID due to requiring a frame which may be passed to
1172 put_frame_register_bytes() below. That function will (eventually)
1173 perform the necessary unwind operation by first obtaining the next
1174 frame. */
1175 frame = frame_find_by_id (VALUE_FRAME_ID (toval));
1177 value_reg = VALUE_REGNUM (toval);
1179 if (!frame)
1180 error (_("Value being assigned to is no longer active."));
1182 gdbarch = get_frame_arch (frame);
1184 if (value_bitsize (toval))
1186 struct value *parent = value_parent (toval);
1187 LONGEST offset = value_offset (parent) + value_offset (toval);
1188 int changed_len;
1189 gdb_byte buffer[sizeof (LONGEST)];
1190 int optim, unavail;
1192 changed_len = (value_bitpos (toval)
1193 + value_bitsize (toval)
1194 + HOST_CHAR_BIT - 1)
1195 / HOST_CHAR_BIT;
1197 if (changed_len > (int) sizeof (LONGEST))
1198 error (_("Can't handle bitfields which "
1199 "don't fit in a %d bit word."),
1200 (int) sizeof (LONGEST) * HOST_CHAR_BIT);
1202 if (!get_frame_register_bytes (frame, value_reg, offset,
1203 changed_len, buffer,
1204 &optim, &unavail))
1206 if (optim)
1207 throw_error (OPTIMIZED_OUT_ERROR,
1208 _("value has been optimized out"));
1209 if (unavail)
1210 throw_error (NOT_AVAILABLE_ERROR,
1211 _("value is not available"));
1214 modify_field (type, buffer, value_as_long (fromval),
1215 value_bitpos (toval), value_bitsize (toval));
1217 put_frame_register_bytes (frame, value_reg, offset,
1218 changed_len, buffer);
1220 else
1222 if (gdbarch_convert_register_p (gdbarch, VALUE_REGNUM (toval),
1223 type))
1225 /* If TOVAL is a special machine register requiring
1226 conversion of program values to a special raw
1227 format. */
1228 gdbarch_value_to_register (gdbarch, frame,
1229 VALUE_REGNUM (toval), type,
1230 value_contents (fromval));
1232 else
1234 put_frame_register_bytes (frame, value_reg,
1235 value_offset (toval),
1236 TYPE_LENGTH (type),
1237 value_contents (fromval));
1241 gdb::observers::register_changed.notify (frame, value_reg);
1242 break;
1245 case lval_computed:
1247 const struct lval_funcs *funcs = value_computed_funcs (toval);
1249 if (funcs->write != NULL)
1251 funcs->write (toval, fromval);
1252 break;
1255 /* Fall through. */
1257 default:
1258 error (_("Left operand of assignment is not an lvalue."));
1261 /* Assigning to the stack pointer, frame pointer, and other
1262 (architecture and calling convention specific) registers may
1263 cause the frame cache and regcache to be out of date. Assigning to memory
1264 also can. We just do this on all assignments to registers or
1265 memory, for simplicity's sake; I doubt the slowdown matters. */
1266 switch (VALUE_LVAL (toval))
1268 case lval_memory:
1269 case lval_register:
1270 case lval_computed:
1272 gdb::observers::target_changed.notify (current_top_target ());
1274 /* Having destroyed the frame cache, restore the selected
1275 frame. */
1277 /* FIXME: cagney/2002-11-02: There has to be a better way of
1278 doing this. Instead of constantly saving/restoring the
1279 frame. Why not create a get_selected_frame() function that,
1280 having saved the selected frame's ID can automatically
1281 re-find the previously selected frame automatically. */
1284 struct frame_info *fi = frame_find_by_id (old_frame);
1286 if (fi != NULL)
1287 select_frame (fi);
1290 break;
1291 default:
1292 break;
1295 /* If the field does not entirely fill a LONGEST, then zero the sign
1296 bits. If the field is signed, and is negative, then sign
1297 extend. */
1298 if ((value_bitsize (toval) > 0)
1299 && (value_bitsize (toval) < 8 * (int) sizeof (LONGEST)))
1301 LONGEST fieldval = value_as_long (fromval);
1302 LONGEST valmask = (((ULONGEST) 1) << value_bitsize (toval)) - 1;
1304 fieldval &= valmask;
1305 if (!type->is_unsigned ()
1306 && (fieldval & (valmask ^ (valmask >> 1))))
1307 fieldval |= ~valmask;
1309 fromval = value_from_longest (type, fieldval);
1312 /* The return value is a copy of TOVAL so it shares its location
1313 information, but its contents are updated from FROMVAL. This
1314 implies the returned value is not lazy, even if TOVAL was. */
1315 val = value_copy (toval);
1316 set_value_lazy (val, 0);
1317 memcpy (value_contents_raw (val), value_contents (fromval),
1318 TYPE_LENGTH (type));
1320 /* We copy over the enclosing type and pointed-to offset from FROMVAL
1321 in the case of pointer types. For object types, the enclosing type
1322 and embedded offset must *not* be copied: the target object refered
1323 to by TOVAL retains its original dynamic type after assignment. */
1324 if (type->code () == TYPE_CODE_PTR)
1326 set_value_enclosing_type (val, value_enclosing_type (fromval));
1327 set_value_pointed_to_offset (val, value_pointed_to_offset (fromval));
1330 return val;
1333 /* Extend a value ARG1 to COUNT repetitions of its type. */
1335 struct value *
1336 value_repeat (struct value *arg1, int count)
1338 struct value *val;
1340 if (VALUE_LVAL (arg1) != lval_memory)
1341 error (_("Only values in memory can be extended with '@'."));
1342 if (count < 1)
1343 error (_("Invalid number %d of repetitions."), count);
1345 val = allocate_repeat_value (value_enclosing_type (arg1), count);
1347 VALUE_LVAL (val) = lval_memory;
1348 set_value_address (val, value_address (arg1));
1350 read_value_memory (val, 0, value_stack (val), value_address (val),
1351 value_contents_all_raw (val),
1352 type_length_units (value_enclosing_type (val)));
1354 return val;
1357 struct value *
1358 value_of_variable (struct symbol *var, const struct block *b)
1360 struct frame_info *frame = NULL;
1362 if (symbol_read_needs_frame (var))
1363 frame = get_selected_frame (_("No frame selected."));
1365 return read_var_value (var, b, frame);
1368 struct value *
1369 address_of_variable (struct symbol *var, const struct block *b)
1371 struct type *type = SYMBOL_TYPE (var);
1372 struct value *val;
1374 /* Evaluate it first; if the result is a memory address, we're fine.
1375 Lazy evaluation pays off here. */
1377 val = value_of_variable (var, b);
1378 type = value_type (val);
1380 if ((VALUE_LVAL (val) == lval_memory && value_lazy (val))
1381 || type->code () == TYPE_CODE_FUNC)
1383 CORE_ADDR addr = value_address (val);
1385 return value_from_pointer (lookup_pointer_type (type), addr);
1388 /* Not a memory address; check what the problem was. */
1389 switch (VALUE_LVAL (val))
1391 case lval_register:
1393 struct frame_info *frame;
1394 const char *regname;
1396 frame = frame_find_by_id (VALUE_NEXT_FRAME_ID (val));
1397 gdb_assert (frame);
1399 regname = gdbarch_register_name (get_frame_arch (frame),
1400 VALUE_REGNUM (val));
1401 gdb_assert (regname && *regname);
1403 error (_("Address requested for identifier "
1404 "\"%s\" which is in register $%s"),
1405 var->print_name (), regname);
1406 break;
1409 default:
1410 error (_("Can't take address of \"%s\" which isn't an lvalue."),
1411 var->print_name ());
1412 break;
1415 return val;
1418 /* See value.h. */
1420 bool
1421 value_must_coerce_to_target (struct value *val)
1423 struct type *valtype;
1425 /* The only lval kinds which do not live in target memory. */
1426 if (VALUE_LVAL (val) != not_lval
1427 && VALUE_LVAL (val) != lval_internalvar
1428 && VALUE_LVAL (val) != lval_xcallable)
1429 return false;
1431 valtype = check_typedef (value_type (val));
1433 switch (valtype->code ())
1435 case TYPE_CODE_ARRAY:
1436 return valtype->is_vector () ? 0 : 1;
1437 case TYPE_CODE_STRING:
1438 return true;
1439 default:
1440 return false;
1444 /* Make sure that VAL lives in target memory if it's supposed to. For
1445 instance, strings are constructed as character arrays in GDB's
1446 storage, and this function copies them to the target. */
1448 struct value *
1449 value_coerce_to_target (struct value *val)
1451 LONGEST length;
1452 CORE_ADDR addr;
1454 if (!value_must_coerce_to_target (val))
1455 return val;
1457 length = TYPE_LENGTH (check_typedef (value_type (val)));
1458 addr = allocate_space_in_inferior (length);
1459 write_memory (addr, value_contents (val), length);
1460 return value_at_lazy (value_type (val), addr);
1463 /* Given a value which is an array, return a value which is a pointer
1464 to its first element, regardless of whether or not the array has a
1465 nonzero lower bound.
1467 FIXME: A previous comment here indicated that this routine should
1468 be substracting the array's lower bound. It's not clear to me that
1469 this is correct. Given an array subscripting operation, it would
1470 certainly work to do the adjustment here, essentially computing:
1472 (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
1474 However I believe a more appropriate and logical place to account
1475 for the lower bound is to do so in value_subscript, essentially
1476 computing:
1478 (&array[0] + ((index - lowerbound) * sizeof array[0]))
1480 As further evidence consider what would happen with operations
1481 other than array subscripting, where the caller would get back a
1482 value that had an address somewhere before the actual first element
1483 of the array, and the information about the lower bound would be
1484 lost because of the coercion to pointer type. */
1486 struct value *
1487 value_coerce_array (struct value *arg1)
1489 struct type *type = check_typedef (value_type (arg1));
1491 /* If the user tries to do something requiring a pointer with an
1492 array that has not yet been pushed to the target, then this would
1493 be a good time to do so. */
1494 arg1 = value_coerce_to_target (arg1);
1496 if (VALUE_LVAL (arg1) != lval_memory)
1497 error (_("Attempt to take address of value not located in memory."));
1499 return value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
1500 value_address (arg1));
1503 /* Given a value which is a function, return a value which is a pointer
1504 to it. */
1506 struct value *
1507 value_coerce_function (struct value *arg1)
1509 struct value *retval;
1511 if (VALUE_LVAL (arg1) != lval_memory)
1512 error (_("Attempt to take address of value not located in memory."));
1514 retval = value_from_pointer (lookup_pointer_type (value_type (arg1)),
1515 value_address (arg1));
1516 return retval;
1519 /* Return a pointer value for the object for which ARG1 is the
1520 contents. */
1522 struct value *
1523 value_addr (struct value *arg1)
1525 struct value *arg2;
1526 struct type *type = check_typedef (value_type (arg1));
1528 if (TYPE_IS_REFERENCE (type))
1530 if (value_bits_synthetic_pointer (arg1, value_embedded_offset (arg1),
1531 TARGET_CHAR_BIT * TYPE_LENGTH (type)))
1532 arg1 = coerce_ref (arg1);
1533 else
1535 /* Copy the value, but change the type from (T&) to (T*). We
1536 keep the same location information, which is efficient, and
1537 allows &(&X) to get the location containing the reference.
1538 Do the same to its enclosing type for consistency. */
1539 struct type *type_ptr
1540 = lookup_pointer_type (TYPE_TARGET_TYPE (type));
1541 struct type *enclosing_type
1542 = check_typedef (value_enclosing_type (arg1));
1543 struct type *enclosing_type_ptr
1544 = lookup_pointer_type (TYPE_TARGET_TYPE (enclosing_type));
1546 arg2 = value_copy (arg1);
1547 deprecated_set_value_type (arg2, type_ptr);
1548 set_value_enclosing_type (arg2, enclosing_type_ptr);
1550 return arg2;
1553 if (type->code () == TYPE_CODE_FUNC)
1554 return value_coerce_function (arg1);
1556 /* If this is an array that has not yet been pushed to the target,
1557 then this would be a good time to force it to memory. */
1558 arg1 = value_coerce_to_target (arg1);
1560 if (VALUE_LVAL (arg1) != lval_memory)
1561 error (_("Attempt to take address of value not located in memory."));
1563 /* Get target memory address. */
1564 arg2 = value_from_pointer (lookup_pointer_type (value_type (arg1)),
1565 (value_address (arg1)
1566 + value_embedded_offset (arg1)));
1568 /* This may be a pointer to a base subobject; so remember the
1569 full derived object's type ... */
1570 set_value_enclosing_type (arg2,
1571 lookup_pointer_type (value_enclosing_type (arg1)));
1572 /* ... and also the relative position of the subobject in the full
1573 object. */
1574 set_value_pointed_to_offset (arg2, value_embedded_offset (arg1));
1575 return arg2;
1578 /* Return a reference value for the object for which ARG1 is the
1579 contents. */
1581 struct value *
1582 value_ref (struct value *arg1, enum type_code refcode)
1584 struct value *arg2;
1585 struct type *type = check_typedef (value_type (arg1));
1587 gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
1589 if ((type->code () == TYPE_CODE_REF
1590 || type->code () == TYPE_CODE_RVALUE_REF)
1591 && type->code () == refcode)
1592 return arg1;
1594 arg2 = value_addr (arg1);
1595 deprecated_set_value_type (arg2, lookup_reference_type (type, refcode));
1596 return arg2;
1599 /* Given a value of a pointer type, apply the C unary * operator to
1600 it. */
1602 struct value *
1603 value_ind (struct value *arg1)
1605 struct type *base_type;
1606 struct value *arg2;
1608 arg1 = coerce_array (arg1);
1610 base_type = check_typedef (value_type (arg1));
1612 if (VALUE_LVAL (arg1) == lval_computed)
1614 const struct lval_funcs *funcs = value_computed_funcs (arg1);
1616 if (funcs->indirect)
1618 struct value *result = funcs->indirect (arg1);
1620 if (result)
1621 return result;
1625 if (base_type->code () == TYPE_CODE_PTR)
1627 struct type *enc_type;
1629 /* We may be pointing to something embedded in a larger object.
1630 Get the real type of the enclosing object. */
1631 enc_type = check_typedef (value_enclosing_type (arg1));
1632 enc_type = TYPE_TARGET_TYPE (enc_type);
1634 CORE_ADDR base_addr;
1635 if (check_typedef (enc_type)->code () == TYPE_CODE_FUNC
1636 || check_typedef (enc_type)->code () == TYPE_CODE_METHOD)
1638 /* For functions, go through find_function_addr, which knows
1639 how to handle function descriptors. */
1640 base_addr = find_function_addr (arg1, NULL);
1642 else
1644 /* Retrieve the enclosing object pointed to. */
1645 base_addr = (value_as_address (arg1)
1646 - value_pointed_to_offset (arg1));
1648 arg2 = value_at_lazy (enc_type, base_addr);
1649 enc_type = value_type (arg2);
1650 return readjust_indirect_value_type (arg2, enc_type, base_type,
1651 arg1, base_addr);
1654 error (_("Attempt to take contents of a non-pointer value."));
1657 /* Create a value for an array by allocating space in GDB, copying the
1658 data into that space, and then setting up an array value.
1660 The array bounds are set from LOWBOUND and HIGHBOUND, and the array
1661 is populated from the values passed in ELEMVEC.
1663 The element type of the array is inherited from the type of the
1664 first element, and all elements must have the same size (though we
1665 don't currently enforce any restriction on their types). */
1667 struct value *
1668 value_array (int lowbound, int highbound, struct value **elemvec)
1670 int nelem;
1671 int idx;
1672 ULONGEST typelength;
1673 struct value *val;
1674 struct type *arraytype;
1676 /* Validate that the bounds are reasonable and that each of the
1677 elements have the same size. */
1679 nelem = highbound - lowbound + 1;
1680 if (nelem <= 0)
1682 error (_("bad array bounds (%d, %d)"), lowbound, highbound);
1684 typelength = type_length_units (value_enclosing_type (elemvec[0]));
1685 for (idx = 1; idx < nelem; idx++)
1687 if (type_length_units (value_enclosing_type (elemvec[idx]))
1688 != typelength)
1690 error (_("array elements must all be the same size"));
1694 arraytype = lookup_array_range_type (value_enclosing_type (elemvec[0]),
1695 lowbound, highbound);
1697 if (!current_language->c_style_arrays_p ())
1699 val = allocate_value (arraytype);
1700 for (idx = 0; idx < nelem; idx++)
1701 value_contents_copy (val, idx * typelength, elemvec[idx], 0,
1702 typelength);
1703 return val;
1706 /* Allocate space to store the array, and then initialize it by
1707 copying in each element. */
1709 val = allocate_value (arraytype);
1710 for (idx = 0; idx < nelem; idx++)
1711 value_contents_copy (val, idx * typelength, elemvec[idx], 0, typelength);
1712 return val;
1715 struct value *
1716 value_cstring (const char *ptr, ssize_t len, struct type *char_type)
1718 struct value *val;
1719 int lowbound = current_language->string_lower_bound ();
1720 ssize_t highbound = len / TYPE_LENGTH (char_type);
1721 struct type *stringtype
1722 = lookup_array_range_type (char_type, lowbound, highbound + lowbound - 1);
1724 val = allocate_value (stringtype);
1725 memcpy (value_contents_raw (val), ptr, len);
1726 return val;
1729 /* Create a value for a string constant by allocating space in the
1730 inferior, copying the data into that space, and returning the
1731 address with type TYPE_CODE_STRING. PTR points to the string
1732 constant data; LEN is number of characters.
1734 Note that string types are like array of char types with a lower
1735 bound of zero and an upper bound of LEN - 1. Also note that the
1736 string may contain embedded null bytes. */
1738 struct value *
1739 value_string (const char *ptr, ssize_t len, struct type *char_type)
1741 struct value *val;
1742 int lowbound = current_language->string_lower_bound ();
1743 ssize_t highbound = len / TYPE_LENGTH (char_type);
1744 struct type *stringtype
1745 = lookup_string_range_type (char_type, lowbound, highbound + lowbound - 1);
1747 val = allocate_value (stringtype);
1748 memcpy (value_contents_raw (val), ptr, len);
1749 return val;
1753 /* See if we can pass arguments in T2 to a function which takes
1754 arguments of types T1. T1 is a list of NARGS arguments, and T2 is
1755 a NULL-terminated vector. If some arguments need coercion of some
1756 sort, then the coerced values are written into T2. Return value is
1757 0 if the arguments could be matched, or the position at which they
1758 differ if not.
1760 STATICP is nonzero if the T1 argument list came from a static
1761 member function. T2 will still include the ``this'' pointer, but
1762 it will be skipped.
1764 For non-static member functions, we ignore the first argument,
1765 which is the type of the instance variable. This is because we
1766 want to handle calls with objects from derived classes. This is
1767 not entirely correct: we should actually check to make sure that a
1768 requested operation is type secure, shouldn't we? FIXME. */
1770 static int
1771 typecmp (int staticp, int varargs, int nargs,
1772 struct field t1[], struct value *t2[])
1774 int i;
1776 if (t2 == 0)
1777 internal_error (__FILE__, __LINE__,
1778 _("typecmp: no argument list"));
1780 /* Skip ``this'' argument if applicable. T2 will always include
1781 THIS. */
1782 if (staticp)
1783 t2 ++;
1785 for (i = 0;
1786 (i < nargs) && t1[i].type ()->code () != TYPE_CODE_VOID;
1787 i++)
1789 struct type *tt1, *tt2;
1791 if (!t2[i])
1792 return i + 1;
1794 tt1 = check_typedef (t1[i].type ());
1795 tt2 = check_typedef (value_type (t2[i]));
1797 if (TYPE_IS_REFERENCE (tt1)
1798 /* We should be doing hairy argument matching, as below. */
1799 && (check_typedef (TYPE_TARGET_TYPE (tt1))->code ()
1800 == tt2->code ()))
1802 if (tt2->code () == TYPE_CODE_ARRAY)
1803 t2[i] = value_coerce_array (t2[i]);
1804 else
1805 t2[i] = value_ref (t2[i], tt1->code ());
1806 continue;
1809 /* djb - 20000715 - Until the new type structure is in the
1810 place, and we can attempt things like implicit conversions,
1811 we need to do this so you can take something like a map<const
1812 char *>, and properly access map["hello"], because the
1813 argument to [] will be a reference to a pointer to a char,
1814 and the argument will be a pointer to a char. */
1815 while (TYPE_IS_REFERENCE (tt1) || tt1->code () == TYPE_CODE_PTR)
1817 tt1 = check_typedef ( TYPE_TARGET_TYPE (tt1) );
1819 while (tt2->code () == TYPE_CODE_ARRAY
1820 || tt2->code () == TYPE_CODE_PTR
1821 || TYPE_IS_REFERENCE (tt2))
1823 tt2 = check_typedef (TYPE_TARGET_TYPE (tt2));
1825 if (tt1->code () == tt2->code ())
1826 continue;
1827 /* Array to pointer is a `trivial conversion' according to the
1828 ARM. */
1830 /* We should be doing much hairier argument matching (see
1831 section 13.2 of the ARM), but as a quick kludge, just check
1832 for the same type code. */
1833 if (t1[i].type ()->code () != value_type (t2[i])->code ())
1834 return i + 1;
1836 if (varargs || t2[i] == NULL)
1837 return 0;
1838 return i + 1;
1841 /* Helper class for search_struct_field that keeps track of found
1842 results and possibly throws an exception if the search yields
1843 ambiguous results. See search_struct_field for description of
1844 LOOKING_FOR_BASECLASS. */
1846 struct struct_field_searcher
1848 /* A found field. */
1849 struct found_field
1851 /* Path to the structure where the field was found. */
1852 std::vector<struct type *> path;
1854 /* The field found. */
1855 struct value *field_value;
1858 /* See corresponding fields for description of parameters. */
1859 struct_field_searcher (const char *name,
1860 struct type *outermost_type,
1861 bool looking_for_baseclass)
1862 : m_name (name),
1863 m_looking_for_baseclass (looking_for_baseclass),
1864 m_outermost_type (outermost_type)
1868 /* The search entry point. If LOOKING_FOR_BASECLASS is true and the
1869 base class search yields ambiguous results, this throws an
1870 exception. If LOOKING_FOR_BASECLASS is false, the found fields
1871 are accumulated and the caller (search_struct_field) takes care
1872 of throwing an error if the field search yields ambiguous
1873 results. The latter is done that way so that the error message
1874 can include a list of all the found candidates. */
1875 void search (struct value *arg, LONGEST offset, struct type *type);
1877 const std::vector<found_field> &fields ()
1879 return m_fields;
1882 struct value *baseclass ()
1884 return m_baseclass;
1887 private:
1888 /* Update results to include V, a found field/baseclass. */
1889 void update_result (struct value *v, LONGEST boffset);
1891 /* The name of the field/baseclass we're searching for. */
1892 const char *m_name;
1894 /* Whether we're looking for a baseclass, or a field. */
1895 const bool m_looking_for_baseclass;
1897 /* The offset of the baseclass containing the field/baseclass we
1898 last recorded. */
1899 LONGEST m_last_boffset = 0;
1901 /* If looking for a baseclass, then the result is stored here. */
1902 struct value *m_baseclass = nullptr;
1904 /* When looking for fields, the found candidates are stored
1905 here. */
1906 std::vector<found_field> m_fields;
1908 /* The type of the initial type passed to search_struct_field; this
1909 is used for error reporting when the lookup is ambiguous. */
1910 struct type *m_outermost_type;
1912 /* The full path to the struct being inspected. E.g. for field 'x'
1913 defined in class B inherited by class A, we have A and B pushed
1914 on the path. */
1915 std::vector <struct type *> m_struct_path;
1918 void
1919 struct_field_searcher::update_result (struct value *v, LONGEST boffset)
1921 if (v != NULL)
1923 if (m_looking_for_baseclass)
1925 if (m_baseclass != nullptr
1926 /* The result is not ambiguous if all the classes that are
1927 found occupy the same space. */
1928 && m_last_boffset != boffset)
1929 error (_("base class '%s' is ambiguous in type '%s'"),
1930 m_name, TYPE_SAFE_NAME (m_outermost_type));
1932 m_baseclass = v;
1933 m_last_boffset = boffset;
1935 else
1937 /* The field is not ambiguous if it occupies the same
1938 space. */
1939 if (m_fields.empty () || m_last_boffset != boffset)
1940 m_fields.push_back ({m_struct_path, v});
1945 /* A helper for search_struct_field. This does all the work; most
1946 arguments are as passed to search_struct_field. */
1948 void
1949 struct_field_searcher::search (struct value *arg1, LONGEST offset,
1950 struct type *type)
1952 int i;
1953 int nbases;
1955 m_struct_path.push_back (type);
1956 SCOPE_EXIT { m_struct_path.pop_back (); };
1958 type = check_typedef (type);
1959 nbases = TYPE_N_BASECLASSES (type);
1961 if (!m_looking_for_baseclass)
1962 for (i = type->num_fields () - 1; i >= nbases; i--)
1964 const char *t_field_name = TYPE_FIELD_NAME (type, i);
1966 if (t_field_name && (strcmp_iw (t_field_name, m_name) == 0))
1968 struct value *v;
1970 if (field_is_static (&type->field (i)))
1971 v = value_static_field (type, i);
1972 else
1973 v = value_primitive_field (arg1, offset, i, type);
1975 update_result (v, offset);
1976 return;
1979 if (t_field_name
1980 && t_field_name[0] == '\0')
1982 struct type *field_type = type->field (i).type ();
1984 if (field_type->code () == TYPE_CODE_UNION
1985 || field_type->code () == TYPE_CODE_STRUCT)
1987 /* Look for a match through the fields of an anonymous
1988 union, or anonymous struct. C++ provides anonymous
1989 unions.
1991 In the GNU Chill (now deleted from GDB)
1992 implementation of variant record types, each
1993 <alternative field> has an (anonymous) union type,
1994 each member of the union represents a <variant
1995 alternative>. Each <variant alternative> is
1996 represented as a struct, with a member for each
1997 <variant field>. */
1999 LONGEST new_offset = offset;
2001 /* This is pretty gross. In G++, the offset in an
2002 anonymous union is relative to the beginning of the
2003 enclosing struct. In the GNU Chill (now deleted
2004 from GDB) implementation of variant records, the
2005 bitpos is zero in an anonymous union field, so we
2006 have to add the offset of the union here. */
2007 if (field_type->code () == TYPE_CODE_STRUCT
2008 || (field_type->num_fields () > 0
2009 && TYPE_FIELD_BITPOS (field_type, 0) == 0))
2010 new_offset += TYPE_FIELD_BITPOS (type, i) / 8;
2012 search (arg1, new_offset, field_type);
2017 for (i = 0; i < nbases; i++)
2019 struct value *v = NULL;
2020 struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
2021 /* If we are looking for baseclasses, this is what we get when
2022 we hit them. But it could happen that the base part's member
2023 name is not yet filled in. */
2024 int found_baseclass = (m_looking_for_baseclass
2025 && TYPE_BASECLASS_NAME (type, i) != NULL
2026 && (strcmp_iw (m_name,
2027 TYPE_BASECLASS_NAME (type,
2028 i)) == 0));
2029 LONGEST boffset = value_embedded_offset (arg1) + offset;
2031 if (BASETYPE_VIA_VIRTUAL (type, i))
2033 struct value *v2;
2035 boffset = baseclass_offset (type, i,
2036 value_contents_for_printing (arg1),
2037 value_embedded_offset (arg1) + offset,
2038 value_address (arg1),
2039 arg1);
2041 /* The virtual base class pointer might have been clobbered
2042 by the user program. Make sure that it still points to a
2043 valid memory location. */
2045 boffset += value_embedded_offset (arg1) + offset;
2046 if (boffset < 0
2047 || boffset >= TYPE_LENGTH (value_enclosing_type (arg1)))
2049 CORE_ADDR base_addr;
2051 base_addr = value_address (arg1) + boffset;
2052 v2 = value_at_lazy (basetype, base_addr);
2053 if (target_read_memory (base_addr,
2054 value_contents_raw (v2),
2055 TYPE_LENGTH (value_type (v2))) != 0)
2056 error (_("virtual baseclass botch"));
2058 else
2060 v2 = value_copy (arg1);
2061 deprecated_set_value_type (v2, basetype);
2062 set_value_embedded_offset (v2, boffset);
2065 if (found_baseclass)
2066 v = v2;
2067 else
2068 search (v2, 0, TYPE_BASECLASS (type, i));
2070 else if (found_baseclass)
2071 v = value_primitive_field (arg1, offset, i, type);
2072 else
2074 search (arg1, offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
2075 basetype);
2078 update_result (v, boffset);
2082 /* Helper function used by value_struct_elt to recurse through
2083 baseclasses. Look for a field NAME in ARG1. Search in it assuming
2084 it has (class) type TYPE. If found, return value, else return NULL.
2086 If LOOKING_FOR_BASECLASS, then instead of looking for struct
2087 fields, look for a baseclass named NAME. */
2089 static struct value *
2090 search_struct_field (const char *name, struct value *arg1,
2091 struct type *type, int looking_for_baseclass)
2093 struct_field_searcher searcher (name, type, looking_for_baseclass);
2095 searcher.search (arg1, 0, type);
2097 if (!looking_for_baseclass)
2099 const auto &fields = searcher.fields ();
2101 if (fields.empty ())
2102 return nullptr;
2103 else if (fields.size () == 1)
2104 return fields[0].field_value;
2105 else
2107 std::string candidates;
2109 for (auto &&candidate : fields)
2111 gdb_assert (!candidate.path.empty ());
2113 struct type *field_type = value_type (candidate.field_value);
2114 struct type *struct_type = candidate.path.back ();
2116 std::string path;
2117 bool first = true;
2118 for (struct type *t : candidate.path)
2120 if (first)
2121 first = false;
2122 else
2123 path += " -> ";
2124 path += t->name ();
2127 candidates += string_printf ("\n '%s %s::%s' (%s)",
2128 TYPE_SAFE_NAME (field_type),
2129 TYPE_SAFE_NAME (struct_type),
2130 name,
2131 path.c_str ());
2134 error (_("Request for member '%s' is ambiguous in type '%s'."
2135 " Candidates are:%s"),
2136 name, TYPE_SAFE_NAME (type),
2137 candidates.c_str ());
2140 else
2141 return searcher.baseclass ();
2144 /* Helper function used by value_struct_elt to recurse through
2145 baseclasses. Look for a field NAME in ARG1. Adjust the address of
2146 ARG1 by OFFSET bytes, and search in it assuming it has (class) type
2147 TYPE.
2149 If found, return value, else if name matched and args not return
2150 (value) -1, else return NULL. */
2152 static struct value *
2153 search_struct_method (const char *name, struct value **arg1p,
2154 struct value **args, LONGEST offset,
2155 int *static_memfuncp, struct type *type)
2157 int i;
2158 struct value *v;
2159 int name_matched = 0;
2161 type = check_typedef (type);
2162 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2164 const char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2166 if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2168 int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
2169 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
2171 name_matched = 1;
2172 check_stub_method_group (type, i);
2173 if (j > 0 && args == 0)
2174 error (_("cannot resolve overloaded method "
2175 "`%s': no arguments supplied"), name);
2176 else if (j == 0 && args == 0)
2178 v = value_fn_field (arg1p, f, j, type, offset);
2179 if (v != NULL)
2180 return v;
2182 else
2183 while (j >= 0)
2185 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
2186 TYPE_FN_FIELD_TYPE (f, j)->has_varargs (),
2187 TYPE_FN_FIELD_TYPE (f, j)->num_fields (),
2188 TYPE_FN_FIELD_ARGS (f, j), args))
2190 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
2191 return value_virtual_fn_field (arg1p, f, j,
2192 type, offset);
2193 if (TYPE_FN_FIELD_STATIC_P (f, j)
2194 && static_memfuncp)
2195 *static_memfuncp = 1;
2196 v = value_fn_field (arg1p, f, j, type, offset);
2197 if (v != NULL)
2198 return v;
2200 j--;
2205 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2207 LONGEST base_offset;
2208 LONGEST this_offset;
2210 if (BASETYPE_VIA_VIRTUAL (type, i))
2212 struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
2213 struct value *base_val;
2214 const gdb_byte *base_valaddr;
2216 /* The virtual base class pointer might have been
2217 clobbered by the user program. Make sure that it
2218 still points to a valid memory location. */
2220 if (offset < 0 || offset >= TYPE_LENGTH (type))
2222 CORE_ADDR address;
2224 gdb::byte_vector tmp (TYPE_LENGTH (baseclass));
2225 address = value_address (*arg1p);
2227 if (target_read_memory (address + offset,
2228 tmp.data (), TYPE_LENGTH (baseclass)) != 0)
2229 error (_("virtual baseclass botch"));
2231 base_val = value_from_contents_and_address (baseclass,
2232 tmp.data (),
2233 address + offset);
2234 base_valaddr = value_contents_for_printing (base_val);
2235 this_offset = 0;
2237 else
2239 base_val = *arg1p;
2240 base_valaddr = value_contents_for_printing (*arg1p);
2241 this_offset = offset;
2244 base_offset = baseclass_offset (type, i, base_valaddr,
2245 this_offset, value_address (base_val),
2246 base_val);
2248 else
2250 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2252 v = search_struct_method (name, arg1p, args, base_offset + offset,
2253 static_memfuncp, TYPE_BASECLASS (type, i));
2254 if (v == (struct value *) - 1)
2256 name_matched = 1;
2258 else if (v)
2260 /* FIXME-bothner: Why is this commented out? Why is it here? */
2261 /* *arg1p = arg1_tmp; */
2262 return v;
2265 if (name_matched)
2266 return (struct value *) - 1;
2267 else
2268 return NULL;
2271 /* Given *ARGP, a value of type (pointer to a)* structure/union,
2272 extract the component named NAME from the ultimate target
2273 structure/union and return it as a value with its appropriate type.
2274 ERR is used in the error message if *ARGP's type is wrong.
2276 C++: ARGS is a list of argument types to aid in the selection of
2277 an appropriate method. Also, handle derived types.
2279 STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
2280 where the truthvalue of whether the function that was resolved was
2281 a static member function or not is stored.
2283 ERR is an error message to be printed in case the field is not
2284 found. */
2286 struct value *
2287 value_struct_elt (struct value **argp, struct value **args,
2288 const char *name, int *static_memfuncp, const char *err)
2290 struct type *t;
2291 struct value *v;
2293 *argp = coerce_array (*argp);
2295 t = check_typedef (value_type (*argp));
2297 /* Follow pointers until we get to a non-pointer. */
2299 while (t->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
2301 *argp = value_ind (*argp);
2302 /* Don't coerce fn pointer to fn and then back again! */
2303 if (check_typedef (value_type (*argp))->code () != TYPE_CODE_FUNC)
2304 *argp = coerce_array (*argp);
2305 t = check_typedef (value_type (*argp));
2308 if (t->code () != TYPE_CODE_STRUCT
2309 && t->code () != TYPE_CODE_UNION)
2310 error (_("Attempt to extract a component of a value that is not a %s."),
2311 err);
2313 /* Assume it's not, unless we see that it is. */
2314 if (static_memfuncp)
2315 *static_memfuncp = 0;
2317 if (!args)
2319 /* if there are no arguments ...do this... */
2321 /* Try as a field first, because if we succeed, there is less
2322 work to be done. */
2323 v = search_struct_field (name, *argp, t, 0);
2324 if (v)
2325 return v;
2327 /* C++: If it was not found as a data field, then try to
2328 return it as a pointer to a method. */
2329 v = search_struct_method (name, argp, args, 0,
2330 static_memfuncp, t);
2332 if (v == (struct value *) - 1)
2333 error (_("Cannot take address of method %s."), name);
2334 else if (v == 0)
2336 if (TYPE_NFN_FIELDS (t))
2337 error (_("There is no member or method named %s."), name);
2338 else
2339 error (_("There is no member named %s."), name);
2341 return v;
2344 v = search_struct_method (name, argp, args, 0,
2345 static_memfuncp, t);
2347 if (v == (struct value *) - 1)
2349 error (_("One of the arguments you tried to pass to %s could not "
2350 "be converted to what the function wants."), name);
2352 else if (v == 0)
2354 /* See if user tried to invoke data as function. If so, hand it
2355 back. If it's not callable (i.e., a pointer to function),
2356 gdb should give an error. */
2357 v = search_struct_field (name, *argp, t, 0);
2358 /* If we found an ordinary field, then it is not a method call.
2359 So, treat it as if it were a static member function. */
2360 if (v && static_memfuncp)
2361 *static_memfuncp = 1;
2364 if (!v)
2365 throw_error (NOT_FOUND_ERROR,
2366 _("Structure has no component named %s."), name);
2367 return v;
2370 /* Given *ARGP, a value of type structure or union, or a pointer/reference
2371 to a structure or union, extract and return its component (field) of
2372 type FTYPE at the specified BITPOS.
2373 Throw an exception on error. */
2375 struct value *
2376 value_struct_elt_bitpos (struct value **argp, int bitpos, struct type *ftype,
2377 const char *err)
2379 struct type *t;
2380 int i;
2382 *argp = coerce_array (*argp);
2384 t = check_typedef (value_type (*argp));
2386 while (t->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
2388 *argp = value_ind (*argp);
2389 if (check_typedef (value_type (*argp))->code () != TYPE_CODE_FUNC)
2390 *argp = coerce_array (*argp);
2391 t = check_typedef (value_type (*argp));
2394 if (t->code () != TYPE_CODE_STRUCT
2395 && t->code () != TYPE_CODE_UNION)
2396 error (_("Attempt to extract a component of a value that is not a %s."),
2397 err);
2399 for (i = TYPE_N_BASECLASSES (t); i < t->num_fields (); i++)
2401 if (!field_is_static (&t->field (i))
2402 && bitpos == TYPE_FIELD_BITPOS (t, i)
2403 && types_equal (ftype, t->field (i).type ()))
2404 return value_primitive_field (*argp, 0, i, t);
2407 error (_("No field with matching bitpos and type."));
2409 /* Never hit. */
2410 return NULL;
2413 /* Search through the methods of an object (and its bases) to find a
2414 specified method. Return a reference to the fn_field list METHODS of
2415 overloaded instances defined in the source language. If available
2416 and matching, a vector of matching xmethods defined in extension
2417 languages are also returned in XMETHODS.
2419 Helper function for value_find_oload_list.
2420 ARGP is a pointer to a pointer to a value (the object).
2421 METHOD is a string containing the method name.
2422 OFFSET is the offset within the value.
2423 TYPE is the assumed type of the object.
2424 METHODS is a pointer to the matching overloaded instances defined
2425 in the source language. Since this is a recursive function,
2426 *METHODS should be set to NULL when calling this function.
2427 NUM_FNS is the number of overloaded instances. *NUM_FNS should be set to
2428 0 when calling this function.
2429 XMETHODS is the vector of matching xmethod workers. *XMETHODS
2430 should also be set to NULL when calling this function.
2431 BASETYPE is set to the actual type of the subobject where the
2432 method is found.
2433 BOFFSET is the offset of the base subobject where the method is found. */
2435 static void
2436 find_method_list (struct value **argp, const char *method,
2437 LONGEST offset, struct type *type,
2438 gdb::array_view<fn_field> *methods,
2439 std::vector<xmethod_worker_up> *xmethods,
2440 struct type **basetype, LONGEST *boffset)
2442 int i;
2443 struct fn_field *f = NULL;
2445 gdb_assert (methods != NULL && xmethods != NULL);
2446 type = check_typedef (type);
2448 /* First check in object itself.
2449 This function is called recursively to search through base classes.
2450 If there is a source method match found at some stage, then we need not
2451 look for source methods in consequent recursive calls. */
2452 if (methods->empty ())
2454 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2456 /* pai: FIXME What about operators and type conversions? */
2457 const char *fn_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2459 if (fn_field_name && (strcmp_iw (fn_field_name, method) == 0))
2461 int len = TYPE_FN_FIELDLIST_LENGTH (type, i);
2462 f = TYPE_FN_FIELDLIST1 (type, i);
2463 *methods = gdb::make_array_view (f, len);
2465 *basetype = type;
2466 *boffset = offset;
2468 /* Resolve any stub methods. */
2469 check_stub_method_group (type, i);
2471 break;
2476 /* Unlike source methods, xmethods can be accumulated over successive
2477 recursive calls. In other words, an xmethod named 'm' in a class
2478 will not hide an xmethod named 'm' in its base class(es). We want
2479 it to be this way because xmethods are after all convenience functions
2480 and hence there is no point restricting them with something like method
2481 hiding. Moreover, if hiding is done for xmethods as well, then we will
2482 have to provide a mechanism to un-hide (like the 'using' construct). */
2483 get_matching_xmethod_workers (type, method, xmethods);
2485 /* If source methods are not found in current class, look for them in the
2486 base classes. We also have to go through the base classes to gather
2487 extension methods. */
2488 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2490 LONGEST base_offset;
2492 if (BASETYPE_VIA_VIRTUAL (type, i))
2494 base_offset = baseclass_offset (type, i,
2495 value_contents_for_printing (*argp),
2496 value_offset (*argp) + offset,
2497 value_address (*argp), *argp);
2499 else /* Non-virtual base, simply use bit position from debug
2500 info. */
2502 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2505 find_method_list (argp, method, base_offset + offset,
2506 TYPE_BASECLASS (type, i), methods,
2507 xmethods, basetype, boffset);
2511 /* Return the list of overloaded methods of a specified name. The methods
2512 could be those GDB finds in the binary, or xmethod. Methods found in
2513 the binary are returned in METHODS, and xmethods are returned in
2514 XMETHODS.
2516 ARGP is a pointer to a pointer to a value (the object).
2517 METHOD is the method name.
2518 OFFSET is the offset within the value contents.
2519 METHODS is the list of matching overloaded instances defined in
2520 the source language.
2521 XMETHODS is the vector of matching xmethod workers defined in
2522 extension languages.
2523 BASETYPE is set to the type of the base subobject that defines the
2524 method.
2525 BOFFSET is the offset of the base subobject which defines the method. */
2527 static void
2528 value_find_oload_method_list (struct value **argp, const char *method,
2529 LONGEST offset,
2530 gdb::array_view<fn_field> *methods,
2531 std::vector<xmethod_worker_up> *xmethods,
2532 struct type **basetype, LONGEST *boffset)
2534 struct type *t;
2536 t = check_typedef (value_type (*argp));
2538 /* Code snarfed from value_struct_elt. */
2539 while (t->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
2541 *argp = value_ind (*argp);
2542 /* Don't coerce fn pointer to fn and then back again! */
2543 if (check_typedef (value_type (*argp))->code () != TYPE_CODE_FUNC)
2544 *argp = coerce_array (*argp);
2545 t = check_typedef (value_type (*argp));
2548 if (t->code () != TYPE_CODE_STRUCT
2549 && t->code () != TYPE_CODE_UNION)
2550 error (_("Attempt to extract a component of a "
2551 "value that is not a struct or union"));
2553 gdb_assert (methods != NULL && xmethods != NULL);
2555 /* Clear the lists. */
2556 *methods = {};
2557 xmethods->clear ();
2559 find_method_list (argp, method, 0, t, methods, xmethods,
2560 basetype, boffset);
2563 /* Given an array of arguments (ARGS) (which includes an entry for
2564 "this" in the case of C++ methods), the NAME of a function, and
2565 whether it's a method or not (METHOD), find the best function that
2566 matches on the argument types according to the overload resolution
2567 rules.
2569 METHOD can be one of three values:
2570 NON_METHOD for non-member functions.
2571 METHOD: for member functions.
2572 BOTH: used for overload resolution of operators where the
2573 candidates are expected to be either member or non member
2574 functions. In this case the first argument ARGTYPES
2575 (representing 'this') is expected to be a reference to the
2576 target object, and will be dereferenced when attempting the
2577 non-member search.
2579 In the case of class methods, the parameter OBJ is an object value
2580 in which to search for overloaded methods.
2582 In the case of non-method functions, the parameter FSYM is a symbol
2583 corresponding to one of the overloaded functions.
2585 Return value is an integer: 0 -> good match, 10 -> debugger applied
2586 non-standard coercions, 100 -> incompatible.
2588 If a method is being searched for, VALP will hold the value.
2589 If a non-method is being searched for, SYMP will hold the symbol
2590 for it.
2592 If a method is being searched for, and it is a static method,
2593 then STATICP will point to a non-zero value.
2595 If NO_ADL argument dependent lookup is disabled. This is used to prevent
2596 ADL overload candidates when performing overload resolution for a fully
2597 qualified name.
2599 If NOSIDE is EVAL_AVOID_SIDE_EFFECTS, then OBJP's memory cannot be
2600 read while picking the best overload match (it may be all zeroes and thus
2601 not have a vtable pointer), in which case skip virtual function lookup.
2602 This is ok as typically EVAL_AVOID_SIDE_EFFECTS is only used to determine
2603 the result type.
2605 Note: This function does *not* check the value of
2606 overload_resolution. Caller must check it to see whether overload
2607 resolution is permitted. */
2610 find_overload_match (gdb::array_view<value *> args,
2611 const char *name, enum oload_search_type method,
2612 struct value **objp, struct symbol *fsym,
2613 struct value **valp, struct symbol **symp,
2614 int *staticp, const int no_adl,
2615 const enum noside noside)
2617 struct value *obj = (objp ? *objp : NULL);
2618 struct type *obj_type = obj ? value_type (obj) : NULL;
2619 /* Index of best overloaded function. */
2620 int func_oload_champ = -1;
2621 int method_oload_champ = -1;
2622 int src_method_oload_champ = -1;
2623 int ext_method_oload_champ = -1;
2625 /* The measure for the current best match. */
2626 badness_vector method_badness;
2627 badness_vector func_badness;
2628 badness_vector ext_method_badness;
2629 badness_vector src_method_badness;
2631 struct value *temp = obj;
2632 /* For methods, the list of overloaded methods. */
2633 gdb::array_view<fn_field> methods;
2634 /* For non-methods, the list of overloaded function symbols. */
2635 std::vector<symbol *> functions;
2636 /* For xmethods, the vector of xmethod workers. */
2637 std::vector<xmethod_worker_up> xmethods;
2638 struct type *basetype = NULL;
2639 LONGEST boffset;
2641 const char *obj_type_name = NULL;
2642 const char *func_name = NULL;
2643 gdb::unique_xmalloc_ptr<char> temp_func;
2644 enum oload_classification match_quality;
2645 enum oload_classification method_match_quality = INCOMPATIBLE;
2646 enum oload_classification src_method_match_quality = INCOMPATIBLE;
2647 enum oload_classification ext_method_match_quality = INCOMPATIBLE;
2648 enum oload_classification func_match_quality = INCOMPATIBLE;
2650 /* Get the list of overloaded methods or functions. */
2651 if (method == METHOD || method == BOTH)
2653 gdb_assert (obj);
2655 /* OBJ may be a pointer value rather than the object itself. */
2656 obj = coerce_ref (obj);
2657 while (check_typedef (value_type (obj))->code () == TYPE_CODE_PTR)
2658 obj = coerce_ref (value_ind (obj));
2659 obj_type_name = value_type (obj)->name ();
2661 /* First check whether this is a data member, e.g. a pointer to
2662 a function. */
2663 if (check_typedef (value_type (obj))->code () == TYPE_CODE_STRUCT)
2665 *valp = search_struct_field (name, obj,
2666 check_typedef (value_type (obj)), 0);
2667 if (*valp)
2669 *staticp = 1;
2670 return 0;
2674 /* Retrieve the list of methods with the name NAME. */
2675 value_find_oload_method_list (&temp, name, 0, &methods,
2676 &xmethods, &basetype, &boffset);
2677 /* If this is a method only search, and no methods were found
2678 the search has failed. */
2679 if (method == METHOD && methods.empty () && xmethods.empty ())
2680 error (_("Couldn't find method %s%s%s"),
2681 obj_type_name,
2682 (obj_type_name && *obj_type_name) ? "::" : "",
2683 name);
2684 /* If we are dealing with stub method types, they should have
2685 been resolved by find_method_list via
2686 value_find_oload_method_list above. */
2687 if (!methods.empty ())
2689 gdb_assert (TYPE_SELF_TYPE (methods[0].type) != NULL);
2691 src_method_oload_champ
2692 = find_oload_champ (args,
2693 methods.size (),
2694 methods.data (), NULL, NULL,
2695 &src_method_badness);
2697 src_method_match_quality = classify_oload_match
2698 (src_method_badness, args.size (),
2699 oload_method_static_p (methods.data (), src_method_oload_champ));
2702 if (!xmethods.empty ())
2704 ext_method_oload_champ
2705 = find_oload_champ (args,
2706 xmethods.size (),
2707 NULL, xmethods.data (), NULL,
2708 &ext_method_badness);
2709 ext_method_match_quality = classify_oload_match (ext_method_badness,
2710 args.size (), 0);
2713 if (src_method_oload_champ >= 0 && ext_method_oload_champ >= 0)
2715 switch (compare_badness (ext_method_badness, src_method_badness))
2717 case 0: /* Src method and xmethod are equally good. */
2718 /* If src method and xmethod are equally good, then
2719 xmethod should be the winner. Hence, fall through to the
2720 case where a xmethod is better than the source
2721 method, except when the xmethod match quality is
2722 non-standard. */
2723 /* FALLTHROUGH */
2724 case 1: /* Src method and ext method are incompatible. */
2725 /* If ext method match is not standard, then let source method
2726 win. Otherwise, fallthrough to let xmethod win. */
2727 if (ext_method_match_quality != STANDARD)
2729 method_oload_champ = src_method_oload_champ;
2730 method_badness = src_method_badness;
2731 ext_method_oload_champ = -1;
2732 method_match_quality = src_method_match_quality;
2733 break;
2735 /* FALLTHROUGH */
2736 case 2: /* Ext method is champion. */
2737 method_oload_champ = ext_method_oload_champ;
2738 method_badness = ext_method_badness;
2739 src_method_oload_champ = -1;
2740 method_match_quality = ext_method_match_quality;
2741 break;
2742 case 3: /* Src method is champion. */
2743 method_oload_champ = src_method_oload_champ;
2744 method_badness = src_method_badness;
2745 ext_method_oload_champ = -1;
2746 method_match_quality = src_method_match_quality;
2747 break;
2748 default:
2749 gdb_assert_not_reached ("Unexpected overload comparison "
2750 "result");
2751 break;
2754 else if (src_method_oload_champ >= 0)
2756 method_oload_champ = src_method_oload_champ;
2757 method_badness = src_method_badness;
2758 method_match_quality = src_method_match_quality;
2760 else if (ext_method_oload_champ >= 0)
2762 method_oload_champ = ext_method_oload_champ;
2763 method_badness = ext_method_badness;
2764 method_match_quality = ext_method_match_quality;
2768 if (method == NON_METHOD || method == BOTH)
2770 const char *qualified_name = NULL;
2772 /* If the overload match is being search for both as a method
2773 and non member function, the first argument must now be
2774 dereferenced. */
2775 if (method == BOTH)
2776 args[0] = value_ind (args[0]);
2778 if (fsym)
2780 qualified_name = fsym->natural_name ();
2782 /* If we have a function with a C++ name, try to extract just
2783 the function part. Do not try this for non-functions (e.g.
2784 function pointers). */
2785 if (qualified_name
2786 && (check_typedef (SYMBOL_TYPE (fsym))->code ()
2787 == TYPE_CODE_FUNC))
2789 temp_func = cp_func_name (qualified_name);
2791 /* If cp_func_name did not remove anything, the name of the
2792 symbol did not include scope or argument types - it was
2793 probably a C-style function. */
2794 if (temp_func != nullptr)
2796 if (strcmp (temp_func.get (), qualified_name) == 0)
2797 func_name = NULL;
2798 else
2799 func_name = temp_func.get ();
2803 else
2805 func_name = name;
2806 qualified_name = name;
2809 /* If there was no C++ name, this must be a C-style function or
2810 not a function at all. Just return the same symbol. Do the
2811 same if cp_func_name fails for some reason. */
2812 if (func_name == NULL)
2814 *symp = fsym;
2815 return 0;
2818 func_oload_champ = find_oload_champ_namespace (args,
2819 func_name,
2820 qualified_name,
2821 &functions,
2822 &func_badness,
2823 no_adl);
2825 if (func_oload_champ >= 0)
2826 func_match_quality = classify_oload_match (func_badness,
2827 args.size (), 0);
2830 /* Did we find a match ? */
2831 if (method_oload_champ == -1 && func_oload_champ == -1)
2832 throw_error (NOT_FOUND_ERROR,
2833 _("No symbol \"%s\" in current context."),
2834 name);
2836 /* If we have found both a method match and a function
2837 match, find out which one is better, and calculate match
2838 quality. */
2839 if (method_oload_champ >= 0 && func_oload_champ >= 0)
2841 switch (compare_badness (func_badness, method_badness))
2843 case 0: /* Top two contenders are equally good. */
2844 /* FIXME: GDB does not support the general ambiguous case.
2845 All candidates should be collected and presented the
2846 user. */
2847 error (_("Ambiguous overload resolution"));
2848 break;
2849 case 1: /* Incomparable top contenders. */
2850 /* This is an error incompatible candidates
2851 should not have been proposed. */
2852 error (_("Internal error: incompatible "
2853 "overload candidates proposed"));
2854 break;
2855 case 2: /* Function champion. */
2856 method_oload_champ = -1;
2857 match_quality = func_match_quality;
2858 break;
2859 case 3: /* Method champion. */
2860 func_oload_champ = -1;
2861 match_quality = method_match_quality;
2862 break;
2863 default:
2864 error (_("Internal error: unexpected overload comparison result"));
2865 break;
2868 else
2870 /* We have either a method match or a function match. */
2871 if (method_oload_champ >= 0)
2872 match_quality = method_match_quality;
2873 else
2874 match_quality = func_match_quality;
2877 if (match_quality == INCOMPATIBLE)
2879 if (method == METHOD)
2880 error (_("Cannot resolve method %s%s%s to any overloaded instance"),
2881 obj_type_name,
2882 (obj_type_name && *obj_type_name) ? "::" : "",
2883 name);
2884 else
2885 error (_("Cannot resolve function %s to any overloaded instance"),
2886 func_name);
2888 else if (match_quality == NON_STANDARD)
2890 if (method == METHOD)
2891 warning (_("Using non-standard conversion to match "
2892 "method %s%s%s to supplied arguments"),
2893 obj_type_name,
2894 (obj_type_name && *obj_type_name) ? "::" : "",
2895 name);
2896 else
2897 warning (_("Using non-standard conversion to match "
2898 "function %s to supplied arguments"),
2899 func_name);
2902 if (staticp != NULL)
2903 *staticp = oload_method_static_p (methods.data (), method_oload_champ);
2905 if (method_oload_champ >= 0)
2907 if (src_method_oload_champ >= 0)
2909 if (TYPE_FN_FIELD_VIRTUAL_P (methods, method_oload_champ)
2910 && noside != EVAL_AVOID_SIDE_EFFECTS)
2912 *valp = value_virtual_fn_field (&temp, methods.data (),
2913 method_oload_champ, basetype,
2914 boffset);
2916 else
2917 *valp = value_fn_field (&temp, methods.data (),
2918 method_oload_champ, basetype, boffset);
2920 else
2921 *valp = value_from_xmethod
2922 (std::move (xmethods[ext_method_oload_champ]));
2924 else
2925 *symp = functions[func_oload_champ];
2927 if (objp)
2929 struct type *temp_type = check_typedef (value_type (temp));
2930 struct type *objtype = check_typedef (obj_type);
2932 if (temp_type->code () != TYPE_CODE_PTR
2933 && (objtype->code () == TYPE_CODE_PTR
2934 || TYPE_IS_REFERENCE (objtype)))
2936 temp = value_addr (temp);
2938 *objp = temp;
2941 switch (match_quality)
2943 case INCOMPATIBLE:
2944 return 100;
2945 case NON_STANDARD:
2946 return 10;
2947 default: /* STANDARD */
2948 return 0;
2952 /* Find the best overload match, searching for FUNC_NAME in namespaces
2953 contained in QUALIFIED_NAME until it either finds a good match or
2954 runs out of namespaces. It stores the overloaded functions in
2955 *OLOAD_SYMS, and the badness vector in *OLOAD_CHAMP_BV. If NO_ADL,
2956 argument dependent lookup is not performed. */
2958 static int
2959 find_oload_champ_namespace (gdb::array_view<value *> args,
2960 const char *func_name,
2961 const char *qualified_name,
2962 std::vector<symbol *> *oload_syms,
2963 badness_vector *oload_champ_bv,
2964 const int no_adl)
2966 int oload_champ;
2968 find_oload_champ_namespace_loop (args,
2969 func_name,
2970 qualified_name, 0,
2971 oload_syms, oload_champ_bv,
2972 &oload_champ,
2973 no_adl);
2975 return oload_champ;
2978 /* Helper function for find_oload_champ_namespace; NAMESPACE_LEN is
2979 how deep we've looked for namespaces, and the champ is stored in
2980 OLOAD_CHAMP. The return value is 1 if the champ is a good one, 0
2981 if it isn't. Other arguments are the same as in
2982 find_oload_champ_namespace. */
2984 static int
2985 find_oload_champ_namespace_loop (gdb::array_view<value *> args,
2986 const char *func_name,
2987 const char *qualified_name,
2988 int namespace_len,
2989 std::vector<symbol *> *oload_syms,
2990 badness_vector *oload_champ_bv,
2991 int *oload_champ,
2992 const int no_adl)
2994 int next_namespace_len = namespace_len;
2995 int searched_deeper = 0;
2996 int new_oload_champ;
2997 char *new_namespace;
2999 if (next_namespace_len != 0)
3001 gdb_assert (qualified_name[next_namespace_len] == ':');
3002 next_namespace_len += 2;
3004 next_namespace_len +=
3005 cp_find_first_component (qualified_name + next_namespace_len);
3007 /* First, see if we have a deeper namespace we can search in.
3008 If we get a good match there, use it. */
3010 if (qualified_name[next_namespace_len] == ':')
3012 searched_deeper = 1;
3014 if (find_oload_champ_namespace_loop (args,
3015 func_name, qualified_name,
3016 next_namespace_len,
3017 oload_syms, oload_champ_bv,
3018 oload_champ, no_adl))
3020 return 1;
3024 /* If we reach here, either we're in the deepest namespace or we
3025 didn't find a good match in a deeper namespace. But, in the
3026 latter case, we still have a bad match in a deeper namespace;
3027 note that we might not find any match at all in the current
3028 namespace. (There's always a match in the deepest namespace,
3029 because this overload mechanism only gets called if there's a
3030 function symbol to start off with.) */
3032 new_namespace = (char *) alloca (namespace_len + 1);
3033 strncpy (new_namespace, qualified_name, namespace_len);
3034 new_namespace[namespace_len] = '\0';
3036 std::vector<symbol *> new_oload_syms
3037 = make_symbol_overload_list (func_name, new_namespace);
3039 /* If we have reached the deepest level perform argument
3040 determined lookup. */
3041 if (!searched_deeper && !no_adl)
3043 int ix;
3044 struct type **arg_types;
3046 /* Prepare list of argument types for overload resolution. */
3047 arg_types = (struct type **)
3048 alloca (args.size () * (sizeof (struct type *)));
3049 for (ix = 0; ix < args.size (); ix++)
3050 arg_types[ix] = value_type (args[ix]);
3051 add_symbol_overload_list_adl ({arg_types, args.size ()}, func_name,
3052 &new_oload_syms);
3055 badness_vector new_oload_champ_bv;
3056 new_oload_champ = find_oload_champ (args,
3057 new_oload_syms.size (),
3058 NULL, NULL, new_oload_syms.data (),
3059 &new_oload_champ_bv);
3061 /* Case 1: We found a good match. Free earlier matches (if any),
3062 and return it. Case 2: We didn't find a good match, but we're
3063 not the deepest function. Then go with the bad match that the
3064 deeper function found. Case 3: We found a bad match, and we're
3065 the deepest function. Then return what we found, even though
3066 it's a bad match. */
3068 if (new_oload_champ != -1
3069 && classify_oload_match (new_oload_champ_bv, args.size (), 0) == STANDARD)
3071 *oload_syms = std::move (new_oload_syms);
3072 *oload_champ = new_oload_champ;
3073 *oload_champ_bv = std::move (new_oload_champ_bv);
3074 return 1;
3076 else if (searched_deeper)
3078 return 0;
3080 else
3082 *oload_syms = std::move (new_oload_syms);
3083 *oload_champ = new_oload_champ;
3084 *oload_champ_bv = std::move (new_oload_champ_bv);
3085 return 0;
3089 /* Look for a function to take ARGS. Find the best match from among
3090 the overloaded methods or functions given by METHODS or FUNCTIONS
3091 or XMETHODS, respectively. One, and only one of METHODS, FUNCTIONS
3092 and XMETHODS can be non-NULL.
3094 NUM_FNS is the length of the array pointed at by METHODS, FUNCTIONS
3095 or XMETHODS, whichever is non-NULL.
3097 Return the index of the best match; store an indication of the
3098 quality of the match in OLOAD_CHAMP_BV. */
3100 static int
3101 find_oload_champ (gdb::array_view<value *> args,
3102 size_t num_fns,
3103 fn_field *methods,
3104 xmethod_worker_up *xmethods,
3105 symbol **functions,
3106 badness_vector *oload_champ_bv)
3108 /* A measure of how good an overloaded instance is. */
3109 badness_vector bv;
3110 /* Index of best overloaded function. */
3111 int oload_champ = -1;
3112 /* Current ambiguity state for overload resolution. */
3113 int oload_ambiguous = 0;
3114 /* 0 => no ambiguity, 1 => two good funcs, 2 => incomparable funcs. */
3116 /* A champion can be found among methods alone, or among functions
3117 alone, or in xmethods alone, but not in more than one of these
3118 groups. */
3119 gdb_assert ((methods != NULL) + (functions != NULL) + (xmethods != NULL)
3120 == 1);
3122 /* Consider each candidate in turn. */
3123 for (size_t ix = 0; ix < num_fns; ix++)
3125 int jj;
3126 int static_offset = 0;
3127 std::vector<type *> parm_types;
3129 if (xmethods != NULL)
3130 parm_types = xmethods[ix]->get_arg_types ();
3131 else
3133 size_t nparms;
3135 if (methods != NULL)
3137 nparms = TYPE_FN_FIELD_TYPE (methods, ix)->num_fields ();
3138 static_offset = oload_method_static_p (methods, ix);
3140 else
3141 nparms = SYMBOL_TYPE (functions[ix])->num_fields ();
3143 parm_types.reserve (nparms);
3144 for (jj = 0; jj < nparms; jj++)
3146 type *t = (methods != NULL
3147 ? (TYPE_FN_FIELD_ARGS (methods, ix)[jj].type ())
3148 : SYMBOL_TYPE (functions[ix])->field (jj).type ());
3149 parm_types.push_back (t);
3153 /* Compare parameter types to supplied argument types. Skip
3154 THIS for static methods. */
3155 bv = rank_function (parm_types,
3156 args.slice (static_offset));
3158 if (overload_debug)
3160 if (methods != NULL)
3161 fprintf_filtered (gdb_stderr,
3162 "Overloaded method instance %s, # of parms %d\n",
3163 methods[ix].physname, (int) parm_types.size ());
3164 else if (xmethods != NULL)
3165 fprintf_filtered (gdb_stderr,
3166 "Xmethod worker, # of parms %d\n",
3167 (int) parm_types.size ());
3168 else
3169 fprintf_filtered (gdb_stderr,
3170 "Overloaded function instance "
3171 "%s # of parms %d\n",
3172 functions[ix]->demangled_name (),
3173 (int) parm_types.size ());
3175 fprintf_filtered (gdb_stderr,
3176 "...Badness of length : {%d, %d}\n",
3177 bv[0].rank, bv[0].subrank);
3179 for (jj = 1; jj < bv.size (); jj++)
3180 fprintf_filtered (gdb_stderr,
3181 "...Badness of arg %d : {%d, %d}\n",
3182 jj, bv[jj].rank, bv[jj].subrank);
3185 if (oload_champ_bv->empty ())
3187 *oload_champ_bv = std::move (bv);
3188 oload_champ = 0;
3190 else /* See whether current candidate is better or worse than
3191 previous best. */
3192 switch (compare_badness (bv, *oload_champ_bv))
3194 case 0: /* Top two contenders are equally good. */
3195 oload_ambiguous = 1;
3196 break;
3197 case 1: /* Incomparable top contenders. */
3198 oload_ambiguous = 2;
3199 break;
3200 case 2: /* New champion, record details. */
3201 *oload_champ_bv = std::move (bv);
3202 oload_ambiguous = 0;
3203 oload_champ = ix;
3204 break;
3205 case 3:
3206 default:
3207 break;
3209 if (overload_debug)
3210 fprintf_filtered (gdb_stderr, "Overload resolution "
3211 "champion is %d, ambiguous? %d\n",
3212 oload_champ, oload_ambiguous);
3215 return oload_champ;
3218 /* Return 1 if we're looking at a static method, 0 if we're looking at
3219 a non-static method or a function that isn't a method. */
3221 static int
3222 oload_method_static_p (struct fn_field *fns_ptr, int index)
3224 if (fns_ptr && index >= 0 && TYPE_FN_FIELD_STATIC_P (fns_ptr, index))
3225 return 1;
3226 else
3227 return 0;
3230 /* Check how good an overload match OLOAD_CHAMP_BV represents. */
3232 static enum oload_classification
3233 classify_oload_match (const badness_vector &oload_champ_bv,
3234 int nargs,
3235 int static_offset)
3237 int ix;
3238 enum oload_classification worst = STANDARD;
3240 for (ix = 1; ix <= nargs - static_offset; ix++)
3242 /* If this conversion is as bad as INCOMPATIBLE_TYPE_BADNESS
3243 or worse return INCOMPATIBLE. */
3244 if (compare_ranks (oload_champ_bv[ix],
3245 INCOMPATIBLE_TYPE_BADNESS) <= 0)
3246 return INCOMPATIBLE; /* Truly mismatched types. */
3247 /* Otherwise If this conversion is as bad as
3248 NS_POINTER_CONVERSION_BADNESS or worse return NON_STANDARD. */
3249 else if (compare_ranks (oload_champ_bv[ix],
3250 NS_POINTER_CONVERSION_BADNESS) <= 0)
3251 worst = NON_STANDARD; /* Non-standard type conversions
3252 needed. */
3255 /* If no INCOMPATIBLE classification was found, return the worst one
3256 that was found (if any). */
3257 return worst;
3260 /* C++: return 1 is NAME is a legitimate name for the destructor of
3261 type TYPE. If TYPE does not have a destructor, or if NAME is
3262 inappropriate for TYPE, an error is signaled. Parameter TYPE should not yet
3263 have CHECK_TYPEDEF applied, this function will apply it itself. */
3266 destructor_name_p (const char *name, struct type *type)
3268 if (name[0] == '~')
3270 const char *dname = type_name_or_error (type);
3271 const char *cp = strchr (dname, '<');
3272 unsigned int len;
3274 /* Do not compare the template part for template classes. */
3275 if (cp == NULL)
3276 len = strlen (dname);
3277 else
3278 len = cp - dname;
3279 if (strlen (name + 1) != len || strncmp (dname, name + 1, len) != 0)
3280 error (_("name of destructor must equal name of class"));
3281 else
3282 return 1;
3284 return 0;
3287 /* Find an enum constant named NAME in TYPE. TYPE must be an "enum
3288 class". If the name is found, return a value representing it;
3289 otherwise throw an exception. */
3291 static struct value *
3292 enum_constant_from_type (struct type *type, const char *name)
3294 int i;
3295 int name_len = strlen (name);
3297 gdb_assert (type->code () == TYPE_CODE_ENUM
3298 && TYPE_DECLARED_CLASS (type));
3300 for (i = TYPE_N_BASECLASSES (type); i < type->num_fields (); ++i)
3302 const char *fname = TYPE_FIELD_NAME (type, i);
3303 int len;
3305 if (TYPE_FIELD_LOC_KIND (type, i) != FIELD_LOC_KIND_ENUMVAL
3306 || fname == NULL)
3307 continue;
3309 /* Look for the trailing "::NAME", since enum class constant
3310 names are qualified here. */
3311 len = strlen (fname);
3312 if (len + 2 >= name_len
3313 && fname[len - name_len - 2] == ':'
3314 && fname[len - name_len - 1] == ':'
3315 && strcmp (&fname[len - name_len], name) == 0)
3316 return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, i));
3319 error (_("no constant named \"%s\" in enum \"%s\""),
3320 name, type->name ());
3323 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
3324 return the appropriate member (or the address of the member, if
3325 WANT_ADDRESS). This function is used to resolve user expressions
3326 of the form "DOMAIN::NAME". For more details on what happens, see
3327 the comment before value_struct_elt_for_reference. */
3329 struct value *
3330 value_aggregate_elt (struct type *curtype, const char *name,
3331 struct type *expect_type, int want_address,
3332 enum noside noside)
3334 switch (curtype->code ())
3336 case TYPE_CODE_STRUCT:
3337 case TYPE_CODE_UNION:
3338 return value_struct_elt_for_reference (curtype, 0, curtype,
3339 name, expect_type,
3340 want_address, noside);
3341 case TYPE_CODE_NAMESPACE:
3342 return value_namespace_elt (curtype, name,
3343 want_address, noside);
3345 case TYPE_CODE_ENUM:
3346 return enum_constant_from_type (curtype, name);
3348 default:
3349 internal_error (__FILE__, __LINE__,
3350 _("non-aggregate type in value_aggregate_elt"));
3354 /* Compares the two method/function types T1 and T2 for "equality"
3355 with respect to the methods' parameters. If the types of the
3356 two parameter lists are the same, returns 1; 0 otherwise. This
3357 comparison may ignore any artificial parameters in T1 if
3358 SKIP_ARTIFICIAL is non-zero. This function will ALWAYS skip
3359 the first artificial parameter in T1, assumed to be a 'this' pointer.
3361 The type T2 is expected to have come from make_params (in eval.c). */
3363 static int
3364 compare_parameters (struct type *t1, struct type *t2, int skip_artificial)
3366 int start = 0;
3368 if (t1->num_fields () > 0 && TYPE_FIELD_ARTIFICIAL (t1, 0))
3369 ++start;
3371 /* If skipping artificial fields, find the first real field
3372 in T1. */
3373 if (skip_artificial)
3375 while (start < t1->num_fields ()
3376 && TYPE_FIELD_ARTIFICIAL (t1, start))
3377 ++start;
3380 /* Now compare parameters. */
3382 /* Special case: a method taking void. T1 will contain no
3383 non-artificial fields, and T2 will contain TYPE_CODE_VOID. */
3384 if ((t1->num_fields () - start) == 0 && t2->num_fields () == 1
3385 && t2->field (0).type ()->code () == TYPE_CODE_VOID)
3386 return 1;
3388 if ((t1->num_fields () - start) == t2->num_fields ())
3390 int i;
3392 for (i = 0; i < t2->num_fields (); ++i)
3394 if (compare_ranks (rank_one_type (t1->field (start + i).type (),
3395 t2->field (i).type (), NULL),
3396 EXACT_MATCH_BADNESS) != 0)
3397 return 0;
3400 return 1;
3403 return 0;
3406 /* C++: Given an aggregate type VT, and a class type CLS, search
3407 recursively for CLS using value V; If found, store the offset
3408 which is either fetched from the virtual base pointer if CLS
3409 is virtual or accumulated offset of its parent classes if
3410 CLS is non-virtual in *BOFFS, set ISVIRT to indicate if CLS
3411 is virtual, and return true. If not found, return false. */
3413 static bool
3414 get_baseclass_offset (struct type *vt, struct type *cls,
3415 struct value *v, int *boffs, bool *isvirt)
3417 for (int i = 0; i < TYPE_N_BASECLASSES (vt); i++)
3419 struct type *t = vt->field (i).type ();
3420 if (types_equal (t, cls))
3422 if (BASETYPE_VIA_VIRTUAL (vt, i))
3424 const gdb_byte *adr = value_contents_for_printing (v);
3425 *boffs = baseclass_offset (vt, i, adr, value_offset (v),
3426 value_as_long (v), v);
3427 *isvirt = true;
3429 else
3430 *isvirt = false;
3431 return true;
3434 if (get_baseclass_offset (check_typedef (t), cls, v, boffs, isvirt))
3436 if (*isvirt == false) /* Add non-virtual base offset. */
3438 const gdb_byte *adr = value_contents_for_printing (v);
3439 *boffs += baseclass_offset (vt, i, adr, value_offset (v),
3440 value_as_long (v), v);
3442 return true;
3446 return false;
3449 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
3450 return the address of this member as a "pointer to member" type.
3451 If INTYPE is non-null, then it will be the type of the member we
3452 are looking for. This will help us resolve "pointers to member
3453 functions". This function is used to resolve user expressions of
3454 the form "DOMAIN::NAME". */
3456 static struct value *
3457 value_struct_elt_for_reference (struct type *domain, int offset,
3458 struct type *curtype, const char *name,
3459 struct type *intype,
3460 int want_address,
3461 enum noside noside)
3463 struct type *t = check_typedef (curtype);
3464 int i;
3465 struct value *result;
3467 if (t->code () != TYPE_CODE_STRUCT
3468 && t->code () != TYPE_CODE_UNION)
3469 error (_("Internal error: non-aggregate type "
3470 "to value_struct_elt_for_reference"));
3472 for (i = t->num_fields () - 1; i >= TYPE_N_BASECLASSES (t); i--)
3474 const char *t_field_name = TYPE_FIELD_NAME (t, i);
3476 if (t_field_name && strcmp (t_field_name, name) == 0)
3478 if (field_is_static (&t->field (i)))
3480 struct value *v = value_static_field (t, i);
3481 if (want_address)
3482 v = value_addr (v);
3483 return v;
3485 if (TYPE_FIELD_PACKED (t, i))
3486 error (_("pointers to bitfield members not allowed"));
3488 if (want_address)
3489 return value_from_longest
3490 (lookup_memberptr_type (t->field (i).type (), domain),
3491 offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
3492 else if (noside != EVAL_NORMAL)
3493 return allocate_value (t->field (i).type ());
3494 else
3496 /* Try to evaluate NAME as a qualified name with implicit
3497 this pointer. In this case, attempt to return the
3498 equivalent to `this->*(&TYPE::NAME)'. */
3499 struct value *v = value_of_this_silent (current_language);
3500 if (v != NULL)
3502 struct value *ptr, *this_v = v;
3503 long mem_offset;
3504 struct type *type, *tmp;
3506 ptr = value_aggregate_elt (domain, name, NULL, 1, noside);
3507 type = check_typedef (value_type (ptr));
3508 gdb_assert (type != NULL
3509 && type->code () == TYPE_CODE_MEMBERPTR);
3510 tmp = lookup_pointer_type (TYPE_SELF_TYPE (type));
3511 v = value_cast_pointers (tmp, v, 1);
3512 mem_offset = value_as_long (ptr);
3513 if (domain != curtype)
3515 /* Find class offset of type CURTYPE from either its
3516 parent type DOMAIN or the type of implied this. */
3517 int boff = 0;
3518 bool isvirt = false;
3519 if (get_baseclass_offset (domain, curtype, v, &boff,
3520 &isvirt))
3521 mem_offset += boff;
3522 else
3524 struct type *p = check_typedef (value_type (this_v));
3525 p = check_typedef (TYPE_TARGET_TYPE (p));
3526 if (get_baseclass_offset (p, curtype, this_v,
3527 &boff, &isvirt))
3528 mem_offset += boff;
3531 tmp = lookup_pointer_type (TYPE_TARGET_TYPE (type));
3532 result = value_from_pointer (tmp,
3533 value_as_long (v) + mem_offset);
3534 return value_ind (result);
3537 error (_("Cannot reference non-static field \"%s\""), name);
3542 /* C++: If it was not found as a data field, then try to return it
3543 as a pointer to a method. */
3545 /* Perform all necessary dereferencing. */
3546 while (intype && intype->code () == TYPE_CODE_PTR)
3547 intype = TYPE_TARGET_TYPE (intype);
3549 for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
3551 const char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
3553 if (t_field_name && strcmp (t_field_name, name) == 0)
3555 int j;
3556 int len = TYPE_FN_FIELDLIST_LENGTH (t, i);
3557 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
3559 check_stub_method_group (t, i);
3561 if (intype)
3563 for (j = 0; j < len; ++j)
3565 if (TYPE_CONST (intype) != TYPE_FN_FIELD_CONST (f, j))
3566 continue;
3567 if (TYPE_VOLATILE (intype) != TYPE_FN_FIELD_VOLATILE (f, j))
3568 continue;
3570 if (compare_parameters (TYPE_FN_FIELD_TYPE (f, j), intype, 0)
3571 || compare_parameters (TYPE_FN_FIELD_TYPE (f, j),
3572 intype, 1))
3573 break;
3576 if (j == len)
3577 error (_("no member function matches "
3578 "that type instantiation"));
3580 else
3582 int ii;
3584 j = -1;
3585 for (ii = 0; ii < len; ++ii)
3587 /* Skip artificial methods. This is necessary if,
3588 for example, the user wants to "print
3589 subclass::subclass" with only one user-defined
3590 constructor. There is no ambiguity in this case.
3591 We are careful here to allow artificial methods
3592 if they are the unique result. */
3593 if (TYPE_FN_FIELD_ARTIFICIAL (f, ii))
3595 if (j == -1)
3596 j = ii;
3597 continue;
3600 /* Desired method is ambiguous if more than one
3601 method is defined. */
3602 if (j != -1 && !TYPE_FN_FIELD_ARTIFICIAL (f, j))
3603 error (_("non-unique member `%s' requires "
3604 "type instantiation"), name);
3606 j = ii;
3609 if (j == -1)
3610 error (_("no matching member function"));
3613 if (TYPE_FN_FIELD_STATIC_P (f, j))
3615 struct symbol *s =
3616 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
3617 0, VAR_DOMAIN, 0).symbol;
3619 if (s == NULL)
3620 return NULL;
3622 if (want_address)
3623 return value_addr (read_var_value (s, 0, 0));
3624 else
3625 return read_var_value (s, 0, 0);
3628 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
3630 if (want_address)
3632 result = allocate_value
3633 (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
3634 cplus_make_method_ptr (value_type (result),
3635 value_contents_writeable (result),
3636 TYPE_FN_FIELD_VOFFSET (f, j), 1);
3638 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
3639 return allocate_value (TYPE_FN_FIELD_TYPE (f, j));
3640 else
3641 error (_("Cannot reference virtual member function \"%s\""),
3642 name);
3644 else
3646 struct symbol *s =
3647 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
3648 0, VAR_DOMAIN, 0).symbol;
3650 if (s == NULL)
3651 return NULL;
3653 struct value *v = read_var_value (s, 0, 0);
3654 if (!want_address)
3655 result = v;
3656 else
3658 result = allocate_value (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
3659 cplus_make_method_ptr (value_type (result),
3660 value_contents_writeable (result),
3661 value_address (v), 0);
3664 return result;
3667 for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
3669 struct value *v;
3670 int base_offset;
3672 if (BASETYPE_VIA_VIRTUAL (t, i))
3673 base_offset = 0;
3674 else
3675 base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
3676 v = value_struct_elt_for_reference (domain,
3677 offset + base_offset,
3678 TYPE_BASECLASS (t, i),
3679 name, intype,
3680 want_address, noside);
3681 if (v)
3682 return v;
3685 /* As a last chance, pretend that CURTYPE is a namespace, and look
3686 it up that way; this (frequently) works for types nested inside
3687 classes. */
3689 return value_maybe_namespace_elt (curtype, name,
3690 want_address, noside);
3693 /* C++: Return the member NAME of the namespace given by the type
3694 CURTYPE. */
3696 static struct value *
3697 value_namespace_elt (const struct type *curtype,
3698 const char *name, int want_address,
3699 enum noside noside)
3701 struct value *retval = value_maybe_namespace_elt (curtype, name,
3702 want_address,
3703 noside);
3705 if (retval == NULL)
3706 error (_("No symbol \"%s\" in namespace \"%s\"."),
3707 name, curtype->name ());
3709 return retval;
3712 /* A helper function used by value_namespace_elt and
3713 value_struct_elt_for_reference. It looks up NAME inside the
3714 context CURTYPE; this works if CURTYPE is a namespace or if CURTYPE
3715 is a class and NAME refers to a type in CURTYPE itself (as opposed
3716 to, say, some base class of CURTYPE). */
3718 static struct value *
3719 value_maybe_namespace_elt (const struct type *curtype,
3720 const char *name, int want_address,
3721 enum noside noside)
3723 const char *namespace_name = curtype->name ();
3724 struct block_symbol sym;
3725 struct value *result;
3727 sym = cp_lookup_symbol_namespace (namespace_name, name,
3728 get_selected_block (0), VAR_DOMAIN);
3730 if (sym.symbol == NULL)
3731 return NULL;
3732 else if ((noside == EVAL_AVOID_SIDE_EFFECTS)
3733 && (SYMBOL_CLASS (sym.symbol) == LOC_TYPEDEF))
3734 result = allocate_value (SYMBOL_TYPE (sym.symbol));
3735 else
3736 result = value_of_variable (sym.symbol, sym.block);
3738 if (want_address)
3739 result = value_addr (result);
3741 return result;
3744 /* Given a pointer or a reference value V, find its real (RTTI) type.
3746 Other parameters FULL, TOP, USING_ENC as with value_rtti_type()
3747 and refer to the values computed for the object pointed to. */
3749 struct type *
3750 value_rtti_indirect_type (struct value *v, int *full,
3751 LONGEST *top, int *using_enc)
3753 struct value *target = NULL;
3754 struct type *type, *real_type, *target_type;
3756 type = value_type (v);
3757 type = check_typedef (type);
3758 if (TYPE_IS_REFERENCE (type))
3759 target = coerce_ref (v);
3760 else if (type->code () == TYPE_CODE_PTR)
3765 target = value_ind (v);
3767 catch (const gdb_exception_error &except)
3769 if (except.error == MEMORY_ERROR)
3771 /* value_ind threw a memory error. The pointer is NULL or
3772 contains an uninitialized value: we can't determine any
3773 type. */
3774 return NULL;
3776 throw;
3779 else
3780 return NULL;
3782 real_type = value_rtti_type (target, full, top, using_enc);
3784 if (real_type)
3786 /* Copy qualifiers to the referenced object. */
3787 target_type = value_type (target);
3788 real_type = make_cv_type (TYPE_CONST (target_type),
3789 TYPE_VOLATILE (target_type), real_type, NULL);
3790 if (TYPE_IS_REFERENCE (type))
3791 real_type = lookup_reference_type (real_type, type->code ());
3792 else if (type->code () == TYPE_CODE_PTR)
3793 real_type = lookup_pointer_type (real_type);
3794 else
3795 internal_error (__FILE__, __LINE__, _("Unexpected value type."));
3797 /* Copy qualifiers to the pointer/reference. */
3798 real_type = make_cv_type (TYPE_CONST (type), TYPE_VOLATILE (type),
3799 real_type, NULL);
3802 return real_type;
3805 /* Given a value pointed to by ARGP, check its real run-time type, and
3806 if that is different from the enclosing type, create a new value
3807 using the real run-time type as the enclosing type (and of the same
3808 type as ARGP) and return it, with the embedded offset adjusted to
3809 be the correct offset to the enclosed object. RTYPE is the type,
3810 and XFULL, XTOP, and XUSING_ENC are the other parameters, computed
3811 by value_rtti_type(). If these are available, they can be supplied
3812 and a second call to value_rtti_type() is avoided. (Pass RTYPE ==
3813 NULL if they're not available. */
3815 struct value *
3816 value_full_object (struct value *argp,
3817 struct type *rtype,
3818 int xfull, int xtop,
3819 int xusing_enc)
3821 struct type *real_type;
3822 int full = 0;
3823 LONGEST top = -1;
3824 int using_enc = 0;
3825 struct value *new_val;
3827 if (rtype)
3829 real_type = rtype;
3830 full = xfull;
3831 top = xtop;
3832 using_enc = xusing_enc;
3834 else
3835 real_type = value_rtti_type (argp, &full, &top, &using_enc);
3837 /* If no RTTI data, or if object is already complete, do nothing. */
3838 if (!real_type || real_type == value_enclosing_type (argp))
3839 return argp;
3841 /* In a destructor we might see a real type that is a superclass of
3842 the object's type. In this case it is better to leave the object
3843 as-is. */
3844 if (full
3845 && TYPE_LENGTH (real_type) < TYPE_LENGTH (value_enclosing_type (argp)))
3846 return argp;
3848 /* If we have the full object, but for some reason the enclosing
3849 type is wrong, set it. */
3850 /* pai: FIXME -- sounds iffy */
3851 if (full)
3853 argp = value_copy (argp);
3854 set_value_enclosing_type (argp, real_type);
3855 return argp;
3858 /* Check if object is in memory. */
3859 if (VALUE_LVAL (argp) != lval_memory)
3861 warning (_("Couldn't retrieve complete object of RTTI "
3862 "type %s; object may be in register(s)."),
3863 real_type->name ());
3865 return argp;
3868 /* All other cases -- retrieve the complete object. */
3869 /* Go back by the computed top_offset from the beginning of the
3870 object, adjusting for the embedded offset of argp if that's what
3871 value_rtti_type used for its computation. */
3872 new_val = value_at_lazy (real_type, value_address (argp) - top +
3873 (using_enc ? 0 : value_embedded_offset (argp)));
3874 deprecated_set_value_type (new_val, value_type (argp));
3875 set_value_embedded_offset (new_val, (using_enc
3876 ? top + value_embedded_offset (argp)
3877 : top));
3878 return new_val;
3882 /* Return the value of the local variable, if one exists. Throw error
3883 otherwise, such as if the request is made in an inappropriate context. */
3885 struct value *
3886 value_of_this (const struct language_defn *lang)
3888 struct block_symbol sym;
3889 const struct block *b;
3890 struct frame_info *frame;
3892 if (lang->name_of_this () == NULL)
3893 error (_("no `this' in current language"));
3895 frame = get_selected_frame (_("no frame selected"));
3897 b = get_frame_block (frame, NULL);
3899 sym = lookup_language_this (lang, b);
3900 if (sym.symbol == NULL)
3901 error (_("current stack frame does not contain a variable named `%s'"),
3902 lang->name_of_this ());
3904 return read_var_value (sym.symbol, sym.block, frame);
3907 /* Return the value of the local variable, if one exists. Return NULL
3908 otherwise. Never throw error. */
3910 struct value *
3911 value_of_this_silent (const struct language_defn *lang)
3913 struct value *ret = NULL;
3917 ret = value_of_this (lang);
3919 catch (const gdb_exception_error &except)
3923 return ret;
3926 /* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH
3927 elements long, starting at LOWBOUND. The result has the same lower
3928 bound as the original ARRAY. */
3930 struct value *
3931 value_slice (struct value *array, int lowbound, int length)
3933 struct type *slice_range_type, *slice_type, *range_type;
3934 LONGEST lowerbound, upperbound;
3935 struct value *slice;
3936 struct type *array_type;
3938 array_type = check_typedef (value_type (array));
3939 if (array_type->code () != TYPE_CODE_ARRAY
3940 && array_type->code () != TYPE_CODE_STRING)
3941 error (_("cannot take slice of non-array"));
3943 if (type_not_allocated (array_type))
3944 error (_("array not allocated"));
3945 if (type_not_associated (array_type))
3946 error (_("array not associated"));
3948 range_type = array_type->index_type ();
3949 if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
3950 error (_("slice from bad array or bitstring"));
3952 if (lowbound < lowerbound || length < 0
3953 || lowbound + length - 1 > upperbound)
3954 error (_("slice out of range"));
3956 /* FIXME-type-allocation: need a way to free this type when we are
3957 done with it. */
3958 slice_range_type = create_static_range_type (NULL,
3959 TYPE_TARGET_TYPE (range_type),
3960 lowbound,
3961 lowbound + length - 1);
3964 struct type *element_type = TYPE_TARGET_TYPE (array_type);
3965 LONGEST offset
3966 = (lowbound - lowerbound) * TYPE_LENGTH (check_typedef (element_type));
3968 slice_type = create_array_type (NULL,
3969 element_type,
3970 slice_range_type);
3971 slice_type->set_code (array_type->code ());
3973 if (VALUE_LVAL (array) == lval_memory && value_lazy (array))
3974 slice = allocate_value_lazy (slice_type);
3975 else
3977 slice = allocate_value (slice_type);
3978 value_contents_copy (slice, 0, array, offset,
3979 type_length_units (slice_type));
3982 set_value_component_location (slice, array);
3983 set_value_offset (slice, value_offset (array) + offset);
3986 return slice;
3989 /* See value.h. */
3991 struct value *
3992 value_literal_complex (struct value *arg1,
3993 struct value *arg2,
3994 struct type *type)
3996 struct value *val;
3997 struct type *real_type = TYPE_TARGET_TYPE (type);
3999 val = allocate_value (type);
4000 arg1 = value_cast (real_type, arg1);
4001 arg2 = value_cast (real_type, arg2);
4003 memcpy (value_contents_raw (val),
4004 value_contents (arg1), TYPE_LENGTH (real_type));
4005 memcpy (value_contents_raw (val) + TYPE_LENGTH (real_type),
4006 value_contents (arg2), TYPE_LENGTH (real_type));
4007 return val;
4010 /* See value.h. */
4012 struct value *
4013 value_real_part (struct value *value)
4015 struct type *type = check_typedef (value_type (value));
4016 struct type *ttype = TYPE_TARGET_TYPE (type);
4018 gdb_assert (type->code () == TYPE_CODE_COMPLEX);
4019 return value_from_component (value, ttype, 0);
4022 /* See value.h. */
4024 struct value *
4025 value_imaginary_part (struct value *value)
4027 struct type *type = check_typedef (value_type (value));
4028 struct type *ttype = TYPE_TARGET_TYPE (type);
4030 gdb_assert (type->code () == TYPE_CODE_COMPLEX);
4031 return value_from_component (value, ttype,
4032 TYPE_LENGTH (check_typedef (ttype)));
4035 /* Cast a value into the appropriate complex data type. */
4037 static struct value *
4038 cast_into_complex (struct type *type, struct value *val)
4040 struct type *real_type = TYPE_TARGET_TYPE (type);
4042 if (value_type (val)->code () == TYPE_CODE_COMPLEX)
4044 struct type *val_real_type = TYPE_TARGET_TYPE (value_type (val));
4045 struct value *re_val = allocate_value (val_real_type);
4046 struct value *im_val = allocate_value (val_real_type);
4048 memcpy (value_contents_raw (re_val),
4049 value_contents (val), TYPE_LENGTH (val_real_type));
4050 memcpy (value_contents_raw (im_val),
4051 value_contents (val) + TYPE_LENGTH (val_real_type),
4052 TYPE_LENGTH (val_real_type));
4054 return value_literal_complex (re_val, im_val, type);
4056 else if (value_type (val)->code () == TYPE_CODE_FLT
4057 || value_type (val)->code () == TYPE_CODE_INT)
4058 return value_literal_complex (val,
4059 value_zero (real_type, not_lval),
4060 type);
4061 else
4062 error (_("cannot cast non-number to complex"));
4065 void _initialize_valops ();
4066 void
4067 _initialize_valops ()
4069 add_setshow_boolean_cmd ("overload-resolution", class_support,
4070 &overload_resolution, _("\
4071 Set overload resolution in evaluating C++ functions."), _("\
4072 Show overload resolution in evaluating C++ functions."),
4073 NULL, NULL,
4074 show_overload_resolution,
4075 &setlist, &showlist);
4076 overload_resolution = 1;