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