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