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