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