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