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