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