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