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