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