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