Fix find_oload_champ_namespace_loop memory leak.
[platform/upstream/binutils.git] / gdb / valops.c
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     fromval = value_cast (type, fromval);
1083   else
1084     {
1085       /* Coerce arrays and functions to pointers, except for arrays
1086          which only live in GDB's storage.  */
1087       if (!value_must_coerce_to_target (fromval))
1088         fromval = coerce_array (fromval);
1089     }
1090
1091   CHECK_TYPEDEF (type);
1092
1093   /* Since modifying a register can trash the frame chain, and
1094      modifying memory can trash the frame cache, we save the old frame
1095      and then restore the new frame afterwards.  */
1096   old_frame = get_frame_id (deprecated_safe_get_selected_frame ());
1097
1098   switch (VALUE_LVAL (toval))
1099     {
1100     case lval_internalvar:
1101       set_internalvar (VALUE_INTERNALVAR (toval), fromval);
1102       val = value_copy (fromval);
1103       val = value_change_enclosing_type (val, 
1104                                          value_enclosing_type (fromval));
1105       set_value_embedded_offset (val, value_embedded_offset (fromval));
1106       set_value_pointed_to_offset (val, 
1107                                    value_pointed_to_offset (fromval));
1108       return val;
1109
1110     case lval_internalvar_component:
1111       set_internalvar_component (VALUE_INTERNALVAR (toval),
1112                                  value_offset (toval),
1113                                  value_bitpos (toval),
1114                                  value_bitsize (toval),
1115                                  fromval);
1116       break;
1117
1118     case lval_memory:
1119       {
1120         const gdb_byte *dest_buffer;
1121         CORE_ADDR changed_addr;
1122         int changed_len;
1123         gdb_byte buffer[sizeof (LONGEST)];
1124
1125         if (value_bitsize (toval))
1126           {
1127             struct value *parent = value_parent (toval);
1128
1129             changed_addr = value_address (parent) + value_offset (toval);
1130             changed_len = (value_bitpos (toval)
1131                            + value_bitsize (toval)
1132                            + HOST_CHAR_BIT - 1)
1133               / HOST_CHAR_BIT;
1134
1135             /* If we can read-modify-write exactly the size of the
1136                containing type (e.g. short or int) then do so.  This
1137                is safer for volatile bitfields mapped to hardware
1138                registers.  */
1139             if (changed_len < TYPE_LENGTH (type)
1140                 && TYPE_LENGTH (type) <= (int) sizeof (LONGEST)
1141                 && ((LONGEST) changed_addr % TYPE_LENGTH (type)) == 0)
1142               changed_len = TYPE_LENGTH (type);
1143
1144             if (changed_len > (int) sizeof (LONGEST))
1145               error (_("Can't handle bitfields which don't fit in a %d bit word."),
1146                      (int) sizeof (LONGEST) * HOST_CHAR_BIT);
1147
1148             read_memory (changed_addr, buffer, changed_len);
1149             modify_field (type, buffer, value_as_long (fromval),
1150                           value_bitpos (toval), value_bitsize (toval));
1151             dest_buffer = buffer;
1152           }
1153         else
1154           {
1155             changed_addr = value_address (toval);
1156             changed_len = TYPE_LENGTH (type);
1157             dest_buffer = value_contents (fromval);
1158           }
1159
1160         write_memory (changed_addr, dest_buffer, changed_len);
1161         observer_notify_memory_changed (changed_addr, changed_len,
1162                                         dest_buffer);
1163       }
1164       break;
1165
1166     case lval_register:
1167       {
1168         struct frame_info *frame;
1169         struct gdbarch *gdbarch;
1170         int value_reg;
1171
1172         /* Figure out which frame this is in currently.  */
1173         frame = frame_find_by_id (VALUE_FRAME_ID (toval));
1174         value_reg = VALUE_REGNUM (toval);
1175
1176         if (!frame)
1177           error (_("Value being assigned to is no longer active."));
1178
1179         gdbarch = get_frame_arch (frame);
1180         if (gdbarch_convert_register_p (gdbarch, VALUE_REGNUM (toval), type))
1181           {
1182             /* If TOVAL is a special machine register requiring
1183                conversion of program values to a special raw
1184                format.  */
1185             gdbarch_value_to_register (gdbarch, frame,
1186                                        VALUE_REGNUM (toval), type,
1187                                        value_contents (fromval));
1188           }
1189         else
1190           {
1191             if (value_bitsize (toval))
1192               {
1193                 struct value *parent = value_parent (toval);
1194                 int offset = value_offset (parent) + value_offset (toval);
1195                 int changed_len;
1196                 gdb_byte buffer[sizeof (LONGEST)];
1197
1198                 changed_len = (value_bitpos (toval)
1199                                + value_bitsize (toval)
1200                                + HOST_CHAR_BIT - 1)
1201                   / HOST_CHAR_BIT;
1202
1203                 if (changed_len > (int) sizeof (LONGEST))
1204                   error (_("Can't handle bitfields which don't fit in a %d bit word."),
1205                          (int) sizeof (LONGEST) * HOST_CHAR_BIT);
1206
1207                 get_frame_register_bytes (frame, value_reg, offset,
1208                                           changed_len, buffer);
1209
1210                 modify_field (type, buffer, value_as_long (fromval),
1211                               value_bitpos (toval), value_bitsize (toval));
1212
1213                 put_frame_register_bytes (frame, value_reg, offset,
1214                                           changed_len, buffer);
1215               }
1216             else
1217               {
1218                 put_frame_register_bytes (frame, value_reg,
1219                                           value_offset (toval),
1220                                           TYPE_LENGTH (type),
1221                                           value_contents (fromval));
1222               }
1223           }
1224
1225         if (deprecated_register_changed_hook)
1226           deprecated_register_changed_hook (-1);
1227         observer_notify_target_changed (&current_target);
1228         break;
1229       }
1230
1231     case lval_computed:
1232       {
1233         struct lval_funcs *funcs = value_computed_funcs (toval);
1234
1235         funcs->write (toval, fromval);
1236       }
1237       break;
1238
1239     default:
1240       error (_("Left operand of assignment is not an lvalue."));
1241     }
1242
1243   /* Assigning to the stack pointer, frame pointer, and other
1244      (architecture and calling convention specific) registers may
1245      cause the frame cache to be out of date.  Assigning to memory
1246      also can.  We just do this on all assignments to registers or
1247      memory, for simplicity's sake; I doubt the slowdown matters.  */
1248   switch (VALUE_LVAL (toval))
1249     {
1250     case lval_memory:
1251     case lval_register:
1252     case lval_computed:
1253
1254       reinit_frame_cache ();
1255
1256       /* Having destroyed the frame cache, restore the selected
1257          frame.  */
1258
1259       /* FIXME: cagney/2002-11-02: There has to be a better way of
1260          doing this.  Instead of constantly saving/restoring the
1261          frame.  Why not create a get_selected_frame() function that,
1262          having saved the selected frame's ID can automatically
1263          re-find the previously selected frame automatically.  */
1264
1265       {
1266         struct frame_info *fi = frame_find_by_id (old_frame);
1267
1268         if (fi != NULL)
1269           select_frame (fi);
1270       }
1271
1272       break;
1273     default:
1274       break;
1275     }
1276   
1277   /* If the field does not entirely fill a LONGEST, then zero the sign
1278      bits.  If the field is signed, and is negative, then sign
1279      extend.  */
1280   if ((value_bitsize (toval) > 0)
1281       && (value_bitsize (toval) < 8 * (int) sizeof (LONGEST)))
1282     {
1283       LONGEST fieldval = value_as_long (fromval);
1284       LONGEST valmask = (((ULONGEST) 1) << value_bitsize (toval)) - 1;
1285
1286       fieldval &= valmask;
1287       if (!TYPE_UNSIGNED (type) 
1288           && (fieldval & (valmask ^ (valmask >> 1))))
1289         fieldval |= ~valmask;
1290
1291       fromval = value_from_longest (type, fieldval);
1292     }
1293
1294   val = value_copy (toval);
1295   memcpy (value_contents_raw (val), value_contents (fromval),
1296           TYPE_LENGTH (type));
1297   deprecated_set_value_type (val, type);
1298   val = value_change_enclosing_type (val, 
1299                                      value_enclosing_type (fromval));
1300   set_value_embedded_offset (val, value_embedded_offset (fromval));
1301   set_value_pointed_to_offset (val, value_pointed_to_offset (fromval));
1302
1303   return val;
1304 }
1305
1306 /* Extend a value VAL to COUNT repetitions of its type.  */
1307
1308 struct value *
1309 value_repeat (struct value *arg1, int count)
1310 {
1311   struct value *val;
1312
1313   if (VALUE_LVAL (arg1) != lval_memory)
1314     error (_("Only values in memory can be extended with '@'."));
1315   if (count < 1)
1316     error (_("Invalid number %d of repetitions."), count);
1317
1318   val = allocate_repeat_value (value_enclosing_type (arg1), count);
1319
1320   read_memory (value_address (arg1),
1321                value_contents_all_raw (val),
1322                TYPE_LENGTH (value_enclosing_type (val)));
1323   VALUE_LVAL (val) = lval_memory;
1324   set_value_address (val, value_address (arg1));
1325
1326   return val;
1327 }
1328
1329 struct value *
1330 value_of_variable (struct symbol *var, struct block *b)
1331 {
1332   struct value *val;
1333   struct frame_info *frame;
1334
1335   if (!symbol_read_needs_frame (var))
1336     frame = NULL;
1337   else if (!b)
1338     frame = get_selected_frame (_("No frame selected."));
1339   else
1340     {
1341       frame = block_innermost_frame (b);
1342       if (!frame)
1343         {
1344           if (BLOCK_FUNCTION (b) && !block_inlined_p (b)
1345               && SYMBOL_PRINT_NAME (BLOCK_FUNCTION (b)))
1346             error (_("No frame is currently executing in block %s."),
1347                    SYMBOL_PRINT_NAME (BLOCK_FUNCTION (b)));
1348           else
1349             error (_("No frame is currently executing in specified block"));
1350         }
1351     }
1352
1353   val = read_var_value (var, frame);
1354   if (!val)
1355     error (_("Address of symbol \"%s\" is unknown."), SYMBOL_PRINT_NAME (var));
1356
1357   return val;
1358 }
1359
1360 struct value *
1361 address_of_variable (struct symbol *var, struct block *b)
1362 {
1363   struct type *type = SYMBOL_TYPE (var);
1364   struct value *val;
1365
1366   /* Evaluate it first; if the result is a memory address, we're fine.
1367      Lazy evaluation pays off here. */
1368
1369   val = value_of_variable (var, b);
1370
1371   if ((VALUE_LVAL (val) == lval_memory && value_lazy (val))
1372       || TYPE_CODE (type) == TYPE_CODE_FUNC)
1373     {
1374       CORE_ADDR addr = value_address (val);
1375
1376       return value_from_pointer (lookup_pointer_type (type), addr);
1377     }
1378
1379   /* Not a memory address; check what the problem was.  */
1380   switch (VALUE_LVAL (val))
1381     {
1382     case lval_register:
1383       {
1384         struct frame_info *frame;
1385         const char *regname;
1386
1387         frame = frame_find_by_id (VALUE_FRAME_ID (val));
1388         gdb_assert (frame);
1389
1390         regname = gdbarch_register_name (get_frame_arch (frame),
1391                                          VALUE_REGNUM (val));
1392         gdb_assert (regname && *regname);
1393
1394         error (_("Address requested for identifier "
1395                  "\"%s\" which is in register $%s"),
1396                SYMBOL_PRINT_NAME (var), regname);
1397         break;
1398       }
1399
1400     default:
1401       error (_("Can't take address of \"%s\" which isn't an lvalue."),
1402              SYMBOL_PRINT_NAME (var));
1403       break;
1404     }
1405
1406   return val;
1407 }
1408
1409 /* Return one if VAL does not live in target memory, but should in order
1410    to operate on it.  Otherwise return zero.  */
1411
1412 int
1413 value_must_coerce_to_target (struct value *val)
1414 {
1415   struct type *valtype;
1416
1417   /* The only lval kinds which do not live in target memory.  */
1418   if (VALUE_LVAL (val) != not_lval
1419       && VALUE_LVAL (val) != lval_internalvar)
1420     return 0;
1421
1422   valtype = check_typedef (value_type (val));
1423
1424   switch (TYPE_CODE (valtype))
1425     {
1426     case TYPE_CODE_ARRAY:
1427       return TYPE_VECTOR (valtype) ? 0 : 1;
1428     case TYPE_CODE_STRING:
1429       return 1;
1430     default:
1431       return 0;
1432     }
1433 }
1434
1435 /* Make sure that VAL lives in target memory if it's supposed to.  For instance,
1436    strings are constructed as character arrays in GDB's storage, and this
1437    function copies them to the target.  */
1438
1439 struct value *
1440 value_coerce_to_target (struct value *val)
1441 {
1442   LONGEST length;
1443   CORE_ADDR addr;
1444
1445   if (!value_must_coerce_to_target (val))
1446     return val;
1447
1448   length = TYPE_LENGTH (check_typedef (value_type (val)));
1449   addr = allocate_space_in_inferior (length);
1450   write_memory (addr, value_contents (val), length);
1451   return value_at_lazy (value_type (val), addr);
1452 }
1453
1454 /* Given a value which is an array, return a value which is a pointer
1455    to its first element, regardless of whether or not the array has a
1456    nonzero lower bound.
1457
1458    FIXME: A previous comment here indicated that this routine should
1459    be substracting the array's lower bound.  It's not clear to me that
1460    this is correct.  Given an array subscripting operation, it would
1461    certainly work to do the adjustment here, essentially computing:
1462
1463    (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
1464
1465    However I believe a more appropriate and logical place to account
1466    for the lower bound is to do so in value_subscript, essentially
1467    computing:
1468
1469    (&array[0] + ((index - lowerbound) * sizeof array[0]))
1470
1471    As further evidence consider what would happen with operations
1472    other than array subscripting, where the caller would get back a
1473    value that had an address somewhere before the actual first element
1474    of the array, and the information about the lower bound would be
1475    lost because of the coercion to pointer type.
1476  */
1477
1478 struct value *
1479 value_coerce_array (struct value *arg1)
1480 {
1481   struct type *type = check_typedef (value_type (arg1));
1482
1483   /* If the user tries to do something requiring a pointer with an
1484      array that has not yet been pushed to the target, then this would
1485      be a good time to do so.  */
1486   arg1 = value_coerce_to_target (arg1);
1487
1488   if (VALUE_LVAL (arg1) != lval_memory)
1489     error (_("Attempt to take address of value not located in memory."));
1490
1491   return value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
1492                              value_address (arg1));
1493 }
1494
1495 /* Given a value which is a function, return a value which is a pointer
1496    to it.  */
1497
1498 struct value *
1499 value_coerce_function (struct value *arg1)
1500 {
1501   struct value *retval;
1502
1503   if (VALUE_LVAL (arg1) != lval_memory)
1504     error (_("Attempt to take address of value not located in memory."));
1505
1506   retval = value_from_pointer (lookup_pointer_type (value_type (arg1)),
1507                                value_address (arg1));
1508   return retval;
1509 }
1510
1511 /* Return a pointer value for the object for which ARG1 is the
1512    contents.  */
1513
1514 struct value *
1515 value_addr (struct value *arg1)
1516 {
1517   struct value *arg2;
1518   struct type *type = check_typedef (value_type (arg1));
1519
1520   if (TYPE_CODE (type) == TYPE_CODE_REF)
1521     {
1522       /* Copy the value, but change the type from (T&) to (T*).  We
1523          keep the same location information, which is efficient, and
1524          allows &(&X) to get the location containing the reference.  */
1525       arg2 = value_copy (arg1);
1526       deprecated_set_value_type (arg2, 
1527                                  lookup_pointer_type (TYPE_TARGET_TYPE (type)));
1528       return arg2;
1529     }
1530   if (TYPE_CODE (type) == TYPE_CODE_FUNC)
1531     return value_coerce_function (arg1);
1532
1533   /* If this is an array that has not yet been pushed to the target,
1534      then this would be a good time to force it to memory.  */
1535   arg1 = value_coerce_to_target (arg1);
1536
1537   if (VALUE_LVAL (arg1) != lval_memory)
1538     error (_("Attempt to take address of value not located in memory."));
1539
1540   /* Get target memory address */
1541   arg2 = value_from_pointer (lookup_pointer_type (value_type (arg1)),
1542                              (value_address (arg1)
1543                               + value_embedded_offset (arg1)));
1544
1545   /* This may be a pointer to a base subobject; so remember the
1546      full derived object's type ...  */
1547   arg2 = value_change_enclosing_type (arg2, lookup_pointer_type (value_enclosing_type (arg1)));
1548   /* ... and also the relative position of the subobject in the full
1549      object.  */
1550   set_value_pointed_to_offset (arg2, value_embedded_offset (arg1));
1551   return arg2;
1552 }
1553
1554 /* Return a reference value for the object for which ARG1 is the
1555    contents.  */
1556
1557 struct value *
1558 value_ref (struct value *arg1)
1559 {
1560   struct value *arg2;
1561   struct type *type = check_typedef (value_type (arg1));
1562
1563   if (TYPE_CODE (type) == TYPE_CODE_REF)
1564     return arg1;
1565
1566   arg2 = value_addr (arg1);
1567   deprecated_set_value_type (arg2, lookup_reference_type (type));
1568   return arg2;
1569 }
1570
1571 /* Given a value of a pointer type, apply the C unary * operator to
1572    it.  */
1573
1574 struct value *
1575 value_ind (struct value *arg1)
1576 {
1577   struct type *base_type;
1578   struct value *arg2;
1579
1580   arg1 = coerce_array (arg1);
1581
1582   base_type = check_typedef (value_type (arg1));
1583
1584   if (TYPE_CODE (base_type) == TYPE_CODE_PTR)
1585     {
1586       struct type *enc_type;
1587
1588       /* We may be pointing to something embedded in a larger object.
1589          Get the real type of the enclosing object.  */
1590       enc_type = check_typedef (value_enclosing_type (arg1));
1591       enc_type = TYPE_TARGET_TYPE (enc_type);
1592
1593       if (TYPE_CODE (check_typedef (enc_type)) == TYPE_CODE_FUNC
1594           || TYPE_CODE (check_typedef (enc_type)) == TYPE_CODE_METHOD)
1595         /* For functions, go through find_function_addr, which knows
1596            how to handle function descriptors.  */
1597         arg2 = value_at_lazy (enc_type, 
1598                               find_function_addr (arg1, NULL));
1599       else
1600         /* Retrieve the enclosing object pointed to */
1601         arg2 = value_at_lazy (enc_type, 
1602                               (value_as_address (arg1)
1603                                - value_pointed_to_offset (arg1)));
1604
1605       /* Re-adjust type.  */
1606       deprecated_set_value_type (arg2, TYPE_TARGET_TYPE (base_type));
1607       /* Add embedding info.  */
1608       arg2 = value_change_enclosing_type (arg2, enc_type);
1609       set_value_embedded_offset (arg2, value_pointed_to_offset (arg1));
1610
1611       /* We may be pointing to an object of some derived type.  */
1612       arg2 = value_full_object (arg2, NULL, 0, 0, 0);
1613       return arg2;
1614     }
1615
1616   error (_("Attempt to take contents of a non-pointer value."));
1617   return 0;                     /* For lint -- never reached.  */
1618 }
1619 \f
1620 /* Create a value for an array by allocating space in GDB, copying
1621    copying the data into that space, and then setting up an array
1622    value.
1623
1624    The array bounds are set from LOWBOUND and HIGHBOUND, and the array
1625    is populated from the values passed in ELEMVEC.
1626
1627    The element type of the array is inherited from the type of the
1628    first element, and all elements must have the same size (though we
1629    don't currently enforce any restriction on their types).  */
1630
1631 struct value *
1632 value_array (int lowbound, int highbound, struct value **elemvec)
1633 {
1634   int nelem;
1635   int idx;
1636   unsigned int typelength;
1637   struct value *val;
1638   struct type *arraytype;
1639
1640   /* Validate that the bounds are reasonable and that each of the
1641      elements have the same size.  */
1642
1643   nelem = highbound - lowbound + 1;
1644   if (nelem <= 0)
1645     {
1646       error (_("bad array bounds (%d, %d)"), lowbound, highbound);
1647     }
1648   typelength = TYPE_LENGTH (value_enclosing_type (elemvec[0]));
1649   for (idx = 1; idx < nelem; idx++)
1650     {
1651       if (TYPE_LENGTH (value_enclosing_type (elemvec[idx])) != typelength)
1652         {
1653           error (_("array elements must all be the same size"));
1654         }
1655     }
1656
1657   arraytype = lookup_array_range_type (value_enclosing_type (elemvec[0]),
1658                                        lowbound, highbound);
1659
1660   if (!current_language->c_style_arrays)
1661     {
1662       val = allocate_value (arraytype);
1663       for (idx = 0; idx < nelem; idx++)
1664         {
1665           memcpy (value_contents_all_raw (val) + (idx * typelength),
1666                   value_contents_all (elemvec[idx]),
1667                   typelength);
1668         }
1669       return val;
1670     }
1671
1672   /* Allocate space to store the array, and then initialize it by
1673      copying in each element.  */
1674
1675   val = allocate_value (arraytype);
1676   for (idx = 0; idx < nelem; idx++)
1677     memcpy (value_contents_writeable (val) + (idx * typelength),
1678             value_contents_all (elemvec[idx]),
1679             typelength);
1680   return val;
1681 }
1682
1683 struct value *
1684 value_cstring (char *ptr, int len, struct type *char_type)
1685 {
1686   struct value *val;
1687   int lowbound = current_language->string_lower_bound;
1688   int highbound = len / TYPE_LENGTH (char_type);
1689   struct type *stringtype
1690     = lookup_array_range_type (char_type, lowbound, highbound + lowbound - 1);
1691
1692   val = allocate_value (stringtype);
1693   memcpy (value_contents_raw (val), ptr, len);
1694   return val;
1695 }
1696
1697 /* Create a value for a string constant by allocating space in the
1698    inferior, copying the data into that space, and returning the
1699    address with type TYPE_CODE_STRING.  PTR points to the string
1700    constant data; LEN is number of characters.
1701
1702    Note that string types are like array of char types with a lower
1703    bound of zero and an upper bound of LEN - 1.  Also note that the
1704    string may contain embedded null bytes.  */
1705
1706 struct value *
1707 value_string (char *ptr, int len, struct type *char_type)
1708 {
1709   struct value *val;
1710   int lowbound = current_language->string_lower_bound;
1711   int highbound = len / TYPE_LENGTH (char_type);
1712   struct type *stringtype
1713     = lookup_string_range_type (char_type, lowbound, highbound + lowbound - 1);
1714
1715   val = allocate_value (stringtype);
1716   memcpy (value_contents_raw (val), ptr, len);
1717   return val;
1718 }
1719
1720 struct value *
1721 value_bitstring (char *ptr, int len, struct type *index_type)
1722 {
1723   struct value *val;
1724   struct type *domain_type
1725     = create_range_type (NULL, index_type, 0, len - 1);
1726   struct type *type = create_set_type (NULL, domain_type);
1727
1728   TYPE_CODE (type) = TYPE_CODE_BITSTRING;
1729   val = allocate_value (type);
1730   memcpy (value_contents_raw (val), ptr, TYPE_LENGTH (type));
1731   return val;
1732 }
1733 \f
1734 /* See if we can pass arguments in T2 to a function which takes
1735    arguments of types T1.  T1 is a list of NARGS arguments, and T2 is
1736    a NULL-terminated vector.  If some arguments need coercion of some
1737    sort, then the coerced values are written into T2.  Return value is
1738    0 if the arguments could be matched, or the position at which they
1739    differ if not.
1740
1741    STATICP is nonzero if the T1 argument list came from a static
1742    member function.  T2 will still include the ``this'' pointer, but
1743    it will be skipped.
1744
1745    For non-static member functions, we ignore the first argument,
1746    which is the type of the instance variable.  This is because we
1747    want to handle calls with objects from derived classes.  This is
1748    not entirely correct: we should actually check to make sure that a
1749    requested operation is type secure, shouldn't we?  FIXME.  */
1750
1751 static int
1752 typecmp (int staticp, int varargs, int nargs,
1753          struct field t1[], struct value *t2[])
1754 {
1755   int i;
1756
1757   if (t2 == 0)
1758     internal_error (__FILE__, __LINE__, 
1759                     _("typecmp: no argument list"));
1760
1761   /* Skip ``this'' argument if applicable.  T2 will always include
1762      THIS.  */
1763   if (staticp)
1764     t2 ++;
1765
1766   for (i = 0;
1767        (i < nargs) && TYPE_CODE (t1[i].type) != TYPE_CODE_VOID;
1768        i++)
1769     {
1770       struct type *tt1, *tt2;
1771
1772       if (!t2[i])
1773         return i + 1;
1774
1775       tt1 = check_typedef (t1[i].type);
1776       tt2 = check_typedef (value_type (t2[i]));
1777
1778       if (TYPE_CODE (tt1) == TYPE_CODE_REF
1779       /* We should be doing hairy argument matching, as below.  */
1780           && (TYPE_CODE (check_typedef (TYPE_TARGET_TYPE (tt1))) == TYPE_CODE (tt2)))
1781         {
1782           if (TYPE_CODE (tt2) == TYPE_CODE_ARRAY)
1783             t2[i] = value_coerce_array (t2[i]);
1784           else
1785             t2[i] = value_ref (t2[i]);
1786           continue;
1787         }
1788
1789       /* djb - 20000715 - Until the new type structure is in the
1790          place, and we can attempt things like implicit conversions,
1791          we need to do this so you can take something like a map<const
1792          char *>, and properly access map["hello"], because the
1793          argument to [] will be a reference to a pointer to a char,
1794          and the argument will be a pointer to a char.  */
1795       while (TYPE_CODE(tt1) == TYPE_CODE_REF
1796              || TYPE_CODE (tt1) == TYPE_CODE_PTR)
1797         {
1798           tt1 = check_typedef( TYPE_TARGET_TYPE(tt1) );
1799         }
1800       while (TYPE_CODE(tt2) == TYPE_CODE_ARRAY
1801              || TYPE_CODE(tt2) == TYPE_CODE_PTR
1802              || TYPE_CODE(tt2) == TYPE_CODE_REF)
1803         {
1804           tt2 = check_typedef (TYPE_TARGET_TYPE(tt2));
1805         }
1806       if (TYPE_CODE (tt1) == TYPE_CODE (tt2))
1807         continue;
1808       /* Array to pointer is a `trivial conversion' according to the
1809          ARM.  */
1810
1811       /* We should be doing much hairier argument matching (see
1812          section 13.2 of the ARM), but as a quick kludge, just check
1813          for the same type code.  */
1814       if (TYPE_CODE (t1[i].type) != TYPE_CODE (value_type (t2[i])))
1815         return i + 1;
1816     }
1817   if (varargs || t2[i] == NULL)
1818     return 0;
1819   return i + 1;
1820 }
1821
1822 /* Helper function used by value_struct_elt to recurse through
1823    baseclasses.  Look for a field NAME in ARG1. Adjust the address of
1824    ARG1 by OFFSET bytes, and search in it assuming it has (class) type
1825    TYPE.  If found, return value, else return NULL.
1826
1827    If LOOKING_FOR_BASECLASS, then instead of looking for struct
1828    fields, look for a baseclass named NAME.  */
1829
1830 static struct value *
1831 search_struct_field (const char *name, struct value *arg1, int offset,
1832                      struct type *type, int looking_for_baseclass)
1833 {
1834   int i;
1835   int nbases;
1836
1837   CHECK_TYPEDEF (type);
1838   nbases = TYPE_N_BASECLASSES (type);
1839
1840   if (!looking_for_baseclass)
1841     for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
1842       {
1843         char *t_field_name = TYPE_FIELD_NAME (type, i);
1844
1845         if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
1846           {
1847             struct value *v;
1848
1849             if (field_is_static (&TYPE_FIELD (type, i)))
1850               {
1851                 v = value_static_field (type, i);
1852                 if (v == 0)
1853                   error (_("field %s is nonexistent or has been optimized out"),
1854                          name);
1855               }
1856             else
1857               {
1858                 v = value_primitive_field (arg1, offset, i, type);
1859                 if (v == 0)
1860                   error (_("there is no field named %s"), name);
1861               }
1862             return v;
1863           }
1864
1865         if (t_field_name
1866             && (t_field_name[0] == '\0'
1867                 || (TYPE_CODE (type) == TYPE_CODE_UNION
1868                     && (strcmp_iw (t_field_name, "else") == 0))))
1869           {
1870             struct type *field_type = TYPE_FIELD_TYPE (type, i);
1871
1872             if (TYPE_CODE (field_type) == TYPE_CODE_UNION
1873                 || TYPE_CODE (field_type) == TYPE_CODE_STRUCT)
1874               {
1875                 /* Look for a match through the fields of an anonymous
1876                    union, or anonymous struct.  C++ provides anonymous
1877                    unions.
1878
1879                    In the GNU Chill (now deleted from GDB)
1880                    implementation of variant record types, each
1881                    <alternative field> has an (anonymous) union type,
1882                    each member of the union represents a <variant
1883                    alternative>.  Each <variant alternative> is
1884                    represented as a struct, with a member for each
1885                    <variant field>.  */
1886
1887                 struct value *v;
1888                 int new_offset = offset;
1889
1890                 /* This is pretty gross.  In G++, the offset in an
1891                    anonymous union is relative to the beginning of the
1892                    enclosing struct.  In the GNU Chill (now deleted
1893                    from GDB) implementation of variant records, the
1894                    bitpos is zero in an anonymous union field, so we
1895                    have to add the offset of the union here.  */
1896                 if (TYPE_CODE (field_type) == TYPE_CODE_STRUCT
1897                     || (TYPE_NFIELDS (field_type) > 0
1898                         && TYPE_FIELD_BITPOS (field_type, 0) == 0))
1899                   new_offset += TYPE_FIELD_BITPOS (type, i) / 8;
1900
1901                 v = search_struct_field (name, arg1, new_offset, 
1902                                          field_type,
1903                                          looking_for_baseclass);
1904                 if (v)
1905                   return v;
1906               }
1907           }
1908       }
1909
1910   for (i = 0; i < nbases; i++)
1911     {
1912       struct value *v;
1913       struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
1914       /* If we are looking for baseclasses, this is what we get when
1915          we hit them.  But it could happen that the base part's member
1916          name is not yet filled in.  */
1917       int found_baseclass = (looking_for_baseclass
1918                              && TYPE_BASECLASS_NAME (type, i) != NULL
1919                              && (strcmp_iw (name, 
1920                                             TYPE_BASECLASS_NAME (type, 
1921                                                                  i)) == 0));
1922
1923       if (BASETYPE_VIA_VIRTUAL (type, i))
1924         {
1925           int boffset;
1926           struct value *v2;
1927
1928           boffset = baseclass_offset (type, i,
1929                                       value_contents (arg1) + offset,
1930                                       value_address (arg1)
1931                                       + value_embedded_offset (arg1)
1932                                       + offset);
1933           if (boffset == -1)
1934             error (_("virtual baseclass botch"));
1935
1936           /* The virtual base class pointer might have been clobbered
1937              by the user program. Make sure that it still points to a
1938              valid memory location.  */
1939
1940           boffset += value_embedded_offset (arg1) + offset;
1941           if (boffset < 0
1942               || boffset >= TYPE_LENGTH (value_enclosing_type (arg1)))
1943             {
1944               CORE_ADDR base_addr;
1945
1946               v2  = allocate_value (basetype);
1947               base_addr = value_address (arg1) + boffset;
1948               if (target_read_memory (base_addr, 
1949                                       value_contents_raw (v2),
1950                                       TYPE_LENGTH (basetype)) != 0)
1951                 error (_("virtual baseclass botch"));
1952               VALUE_LVAL (v2) = lval_memory;
1953               set_value_address (v2, base_addr);
1954             }
1955           else
1956             {
1957               v2 = value_copy (arg1);
1958               deprecated_set_value_type (v2, basetype);
1959               set_value_embedded_offset (v2, boffset);
1960             }
1961
1962           if (found_baseclass)
1963             return v2;
1964           v = search_struct_field (name, v2, 0,
1965                                    TYPE_BASECLASS (type, i),
1966                                    looking_for_baseclass);
1967         }
1968       else if (found_baseclass)
1969         v = value_primitive_field (arg1, offset, i, type);
1970       else
1971         v = search_struct_field (name, arg1,
1972                                  offset + TYPE_BASECLASS_BITPOS (type, 
1973                                                                  i) / 8,
1974                                  basetype, looking_for_baseclass);
1975       if (v)
1976         return v;
1977     }
1978   return NULL;
1979 }
1980
1981 /* Helper function used by value_struct_elt to recurse through
1982    baseclasses.  Look for a field NAME in ARG1. Adjust the address of
1983    ARG1 by OFFSET bytes, and search in it assuming it has (class) type
1984    TYPE.
1985
1986    If found, return value, else if name matched and args not return
1987    (value) -1, else return NULL.  */
1988
1989 static struct value *
1990 search_struct_method (const char *name, struct value **arg1p,
1991                       struct value **args, int offset,
1992                       int *static_memfuncp, struct type *type)
1993 {
1994   int i;
1995   struct value *v;
1996   int name_matched = 0;
1997   char dem_opname[64];
1998
1999   CHECK_TYPEDEF (type);
2000   for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2001     {
2002       char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2003
2004       /* FIXME!  May need to check for ARM demangling here */
2005       if (strncmp (t_field_name, "__", 2) == 0 ||
2006           strncmp (t_field_name, "op", 2) == 0 ||
2007           strncmp (t_field_name, "type", 4) == 0)
2008         {
2009           if (cplus_demangle_opname (t_field_name, dem_opname, DMGL_ANSI))
2010             t_field_name = dem_opname;
2011           else if (cplus_demangle_opname (t_field_name, dem_opname, 0))
2012             t_field_name = dem_opname;
2013         }
2014       if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2015         {
2016           int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
2017           struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
2018
2019           name_matched = 1;
2020           check_stub_method_group (type, i);
2021           if (j > 0 && args == 0)
2022             error (_("cannot resolve overloaded method `%s': no arguments supplied"), name);
2023           else if (j == 0 && args == 0)
2024             {
2025               v = value_fn_field (arg1p, f, j, type, offset);
2026               if (v != NULL)
2027                 return v;
2028             }
2029           else
2030             while (j >= 0)
2031               {
2032                 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
2033                               TYPE_VARARGS (TYPE_FN_FIELD_TYPE (f, j)),
2034                               TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (f, j)),
2035                               TYPE_FN_FIELD_ARGS (f, j), args))
2036                   {
2037                     if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
2038                       return value_virtual_fn_field (arg1p, f, j, 
2039                                                      type, offset);
2040                     if (TYPE_FN_FIELD_STATIC_P (f, j) 
2041                         && static_memfuncp)
2042                       *static_memfuncp = 1;
2043                     v = value_fn_field (arg1p, f, j, type, offset);
2044                     if (v != NULL)
2045                       return v;       
2046                   }
2047                 j--;
2048               }
2049         }
2050     }
2051
2052   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2053     {
2054       int base_offset;
2055
2056       if (BASETYPE_VIA_VIRTUAL (type, i))
2057         {
2058           struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
2059           const gdb_byte *base_valaddr;
2060
2061           /* The virtual base class pointer might have been
2062              clobbered by the user program. Make sure that it
2063             still points to a valid memory location.  */
2064
2065           if (offset < 0 || offset >= TYPE_LENGTH (type))
2066             {
2067               gdb_byte *tmp = alloca (TYPE_LENGTH (baseclass));
2068
2069               if (target_read_memory (value_address (*arg1p) + offset,
2070                                       tmp, TYPE_LENGTH (baseclass)) != 0)
2071                 error (_("virtual baseclass botch"));
2072               base_valaddr = tmp;
2073             }
2074           else
2075             base_valaddr = value_contents (*arg1p) + offset;
2076
2077           base_offset = baseclass_offset (type, i, base_valaddr,
2078                                           value_address (*arg1p) + offset);
2079           if (base_offset == -1)
2080             error (_("virtual baseclass botch"));
2081         }
2082       else
2083         {
2084           base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2085         }
2086       v = search_struct_method (name, arg1p, args, base_offset + offset,
2087                                 static_memfuncp, TYPE_BASECLASS (type, i));
2088       if (v == (struct value *) - 1)
2089         {
2090           name_matched = 1;
2091         }
2092       else if (v)
2093         {
2094           /* FIXME-bothner:  Why is this commented out?  Why is it here?  */
2095           /* *arg1p = arg1_tmp; */
2096           return v;
2097         }
2098     }
2099   if (name_matched)
2100     return (struct value *) - 1;
2101   else
2102     return NULL;
2103 }
2104
2105 /* Given *ARGP, a value of type (pointer to a)* structure/union,
2106    extract the component named NAME from the ultimate target
2107    structure/union and return it as a value with its appropriate type.
2108    ERR is used in the error message if *ARGP's type is wrong.
2109
2110    C++: ARGS is a list of argument types to aid in the selection of
2111    an appropriate method. Also, handle derived types.
2112
2113    STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
2114    where the truthvalue of whether the function that was resolved was
2115    a static member function or not is stored.
2116
2117    ERR is an error message to be printed in case the field is not
2118    found.  */
2119
2120 struct value *
2121 value_struct_elt (struct value **argp, struct value **args,
2122                   const char *name, int *static_memfuncp, const char *err)
2123 {
2124   struct type *t;
2125   struct value *v;
2126
2127   *argp = coerce_array (*argp);
2128
2129   t = check_typedef (value_type (*argp));
2130
2131   /* Follow pointers until we get to a non-pointer.  */
2132
2133   while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
2134     {
2135       *argp = value_ind (*argp);
2136       /* Don't coerce fn pointer to fn and then back again!  */
2137       if (TYPE_CODE (value_type (*argp)) != TYPE_CODE_FUNC)
2138         *argp = coerce_array (*argp);
2139       t = check_typedef (value_type (*argp));
2140     }
2141
2142   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2143       && TYPE_CODE (t) != TYPE_CODE_UNION)
2144     error (_("Attempt to extract a component of a value that is not a %s."), err);
2145
2146   /* Assume it's not, unless we see that it is.  */
2147   if (static_memfuncp)
2148     *static_memfuncp = 0;
2149
2150   if (!args)
2151     {
2152       /* if there are no arguments ...do this...  */
2153
2154       /* Try as a field first, because if we succeed, there is less
2155          work to be done.  */
2156       v = search_struct_field (name, *argp, 0, t, 0);
2157       if (v)
2158         return v;
2159
2160       /* C++: If it was not found as a data field, then try to
2161          return it as a pointer to a method.  */
2162       v = search_struct_method (name, argp, args, 0, 
2163                                 static_memfuncp, t);
2164
2165       if (v == (struct value *) - 1)
2166         error (_("Cannot take address of method %s."), name);
2167       else if (v == 0)
2168         {
2169           if (TYPE_NFN_FIELDS (t))
2170             error (_("There is no member or method named %s."), name);
2171           else
2172             error (_("There is no member named %s."), name);
2173         }
2174       return v;
2175     }
2176
2177     v = search_struct_method (name, argp, args, 0, 
2178                               static_memfuncp, t);
2179   
2180   if (v == (struct value *) - 1)
2181     {
2182       error (_("One of the arguments you tried to pass to %s could not be converted to what the function wants."), name);
2183     }
2184   else if (v == 0)
2185     {
2186       /* See if user tried to invoke data as function.  If so, hand it
2187          back.  If it's not callable (i.e., a pointer to function),
2188          gdb should give an error.  */
2189       v = search_struct_field (name, *argp, 0, t, 0);
2190       /* If we found an ordinary field, then it is not a method call.
2191          So, treat it as if it were a static member function.  */
2192       if (v && static_memfuncp)
2193         *static_memfuncp = 1;
2194     }
2195
2196   if (!v)
2197     error (_("Structure has no component named %s."), name);
2198   return v;
2199 }
2200
2201 /* Search through the methods of an object (and its bases) to find a
2202    specified method.  Return the pointer to the fn_field list of
2203    overloaded instances.
2204
2205    Helper function for value_find_oload_list.
2206    ARGP is a pointer to a pointer to a value (the object).
2207    METHOD is a string containing the method name.
2208    OFFSET is the offset within the value.
2209    TYPE is the assumed type of the object.
2210    NUM_FNS is the number of overloaded instances.
2211    BASETYPE is set to the actual type of the subobject where the
2212       method is found.
2213    BOFFSET is the offset of the base subobject where the method is found.
2214 */
2215
2216 static struct fn_field *
2217 find_method_list (struct value **argp, const char *method,
2218                   int offset, struct type *type, int *num_fns,
2219                   struct type **basetype, int *boffset)
2220 {
2221   int i;
2222   struct fn_field *f;
2223   CHECK_TYPEDEF (type);
2224
2225   *num_fns = 0;
2226
2227   /* First check in object itself.  */
2228   for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2229     {
2230       /* pai: FIXME What about operators and type conversions?  */
2231       char *fn_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2232
2233       if (fn_field_name && (strcmp_iw (fn_field_name, method) == 0))
2234         {
2235           int len = TYPE_FN_FIELDLIST_LENGTH (type, i);
2236           struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
2237
2238           *num_fns = len;
2239           *basetype = type;
2240           *boffset = offset;
2241
2242           /* Resolve any stub methods.  */
2243           check_stub_method_group (type, i);
2244
2245           return f;
2246         }
2247     }
2248
2249   /* Not found in object, check in base subobjects.  */
2250   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2251     {
2252       int base_offset;
2253
2254       if (BASETYPE_VIA_VIRTUAL (type, i))
2255         {
2256           base_offset = value_offset (*argp) + offset;
2257           base_offset = baseclass_offset (type, i,
2258                                           value_contents (*argp) + base_offset,
2259                                           value_address (*argp) + base_offset);
2260           if (base_offset == -1)
2261             error (_("virtual baseclass botch"));
2262         }
2263       else /* Non-virtual base, simply use bit position from debug
2264               info.  */
2265         {
2266           base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2267         }
2268       f = find_method_list (argp, method, base_offset + offset,
2269                             TYPE_BASECLASS (type, i), num_fns, 
2270                             basetype, boffset);
2271       if (f)
2272         return f;
2273     }
2274   return NULL;
2275 }
2276
2277 /* Return the list of overloaded methods of a specified name.
2278
2279    ARGP is a pointer to a pointer to a value (the object).
2280    METHOD is the method name.
2281    OFFSET is the offset within the value contents.
2282    NUM_FNS is the number of overloaded instances.
2283    BASETYPE is set to the type of the base subobject that defines the
2284       method.
2285    BOFFSET is the offset of the base subobject which defines the method. 
2286 */
2287
2288 struct fn_field *
2289 value_find_oload_method_list (struct value **argp, const char *method,
2290                               int offset, int *num_fns, 
2291                               struct type **basetype, int *boffset)
2292 {
2293   struct type *t;
2294
2295   t = check_typedef (value_type (*argp));
2296
2297   /* Code snarfed from value_struct_elt.  */
2298   while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
2299     {
2300       *argp = value_ind (*argp);
2301       /* Don't coerce fn pointer to fn and then back again!  */
2302       if (TYPE_CODE (value_type (*argp)) != TYPE_CODE_FUNC)
2303         *argp = coerce_array (*argp);
2304       t = check_typedef (value_type (*argp));
2305     }
2306
2307   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2308       && TYPE_CODE (t) != TYPE_CODE_UNION)
2309     error (_("Attempt to extract a component of a value that is not a struct or union"));
2310
2311   return find_method_list (argp, method, 0, t, num_fns, 
2312                            basetype, boffset);
2313 }
2314
2315 /* Given an array of argument types (ARGTYPES) (which includes an
2316    entry for "this" in the case of C++ methods), the number of
2317    arguments NARGS, the NAME of a function whether it's a method or
2318    not (METHOD), and the degree of laxness (LAX) in conforming to
2319    overload resolution rules in ANSI C++, find the best function that
2320    matches on the argument types according to the overload resolution
2321    rules.
2322
2323    METHOD can be one of three values:
2324      NON_METHOD for non-member functions.
2325      METHOD: for member functions.
2326      BOTH: used for overload resolution of operators where the
2327        candidates are expected to be either member or non member
2328        functions. In this case the first argument ARGTYPES
2329        (representing 'this') is expected to be a reference to the
2330        target object, and will be dereferenced when attempting the
2331        non-member search.
2332
2333    In the case of class methods, the parameter OBJ is an object value
2334    in which to search for overloaded methods.
2335
2336    In the case of non-method functions, the parameter FSYM is a symbol
2337    corresponding to one of the overloaded functions.
2338
2339    Return value is an integer: 0 -> good match, 10 -> debugger applied
2340    non-standard coercions, 100 -> incompatible.
2341
2342    If a method is being searched for, VALP will hold the value.
2343    If a non-method is being searched for, SYMP will hold the symbol 
2344    for it.
2345
2346    If a method is being searched for, and it is a static method,
2347    then STATICP will point to a non-zero value.
2348
2349    If NO_ADL argument dependent lookup is disabled.  This is used to prevent
2350    ADL overload candidates when performing overload resolution for a fully
2351    qualified name.
2352
2353    Note: This function does *not* check the value of
2354    overload_resolution.  Caller must check it to see whether overload
2355    resolution is permitted.
2356 */
2357
2358 int
2359 find_overload_match (struct type **arg_types, int nargs, 
2360                      const char *name, enum oload_search_type method,
2361                      int lax, struct value **objp, struct symbol *fsym,
2362                      struct value **valp, struct symbol **symp, 
2363                      int *staticp, const int no_adl)
2364 {
2365   struct value *obj = (objp ? *objp : NULL);
2366   /* Index of best overloaded function.  */
2367   int func_oload_champ = -1;
2368   int method_oload_champ = -1;
2369
2370   /* The measure for the current best match.  */
2371   struct badness_vector *method_badness = NULL;
2372   struct badness_vector *func_badness = NULL;
2373
2374   struct value *temp = obj;
2375   /* For methods, the list of overloaded methods.  */
2376   struct fn_field *fns_ptr = NULL;
2377   /* For non-methods, the list of overloaded function symbols.  */
2378   struct symbol **oload_syms = NULL;
2379   /* Number of overloaded instances being considered.  */
2380   int num_fns = 0;
2381   struct type *basetype = NULL;
2382   int boffset;
2383
2384   struct cleanup *all_cleanups = make_cleanup (null_cleanup, NULL);
2385
2386   const char *obj_type_name = NULL;
2387   const char *func_name = NULL;
2388   enum oload_classification match_quality;
2389   enum oload_classification method_match_quality = INCOMPATIBLE;
2390   enum oload_classification func_match_quality = INCOMPATIBLE;
2391
2392   /* Get the list of overloaded methods or functions.  */
2393   if (method == METHOD || method == BOTH)
2394     {
2395       gdb_assert (obj);
2396
2397       /* OBJ may be a pointer value rather than the object itself.  */
2398       obj = coerce_ref (obj);
2399       while (TYPE_CODE (check_typedef (value_type (obj))) == TYPE_CODE_PTR)
2400         obj = coerce_ref (value_ind (obj));
2401       obj_type_name = TYPE_NAME (value_type (obj));
2402
2403       /* First check whether this is a data member, e.g. a pointer to
2404          a function.  */
2405       if (TYPE_CODE (check_typedef (value_type (obj))) == TYPE_CODE_STRUCT)
2406         {
2407           *valp = search_struct_field (name, obj, 0,
2408                                        check_typedef (value_type (obj)), 0);
2409           if (*valp)
2410             {
2411               *staticp = 1;
2412               return 0;
2413             }
2414         }
2415
2416       /* Retrieve the list of methods with the name NAME.  */
2417       fns_ptr = value_find_oload_method_list (&temp, name, 
2418                                               0, &num_fns, 
2419                                               &basetype, &boffset);
2420       /* If this is a method only search, and no methods were found
2421          the search has faild.  */
2422       if (method == METHOD && (!fns_ptr || !num_fns))
2423         error (_("Couldn't find method %s%s%s"),
2424                obj_type_name,
2425                (obj_type_name && *obj_type_name) ? "::" : "",
2426                name);
2427       /* If we are dealing with stub method types, they should have
2428          been resolved by find_method_list via
2429          value_find_oload_method_list above.  */
2430       if (fns_ptr)
2431         {
2432           gdb_assert (TYPE_DOMAIN_TYPE (fns_ptr[0].type) != NULL);
2433           method_oload_champ = find_oload_champ (arg_types, nargs, method,
2434                                                  num_fns, fns_ptr,
2435                                                  oload_syms, &method_badness);
2436
2437           method_match_quality =
2438               classify_oload_match (method_badness, nargs,
2439                                     oload_method_static (method, fns_ptr,
2440                                                          method_oload_champ));
2441
2442           make_cleanup (xfree, method_badness);
2443         }
2444
2445     }
2446
2447   if (method == NON_METHOD || method == BOTH)
2448     {
2449       const char *qualified_name = NULL;
2450
2451       /* If the the overload match is being search for both
2452          as a method and non member function, the first argument
2453          must now be dereferenced.  */
2454       if (method == BOTH)
2455         arg_types[0] = TYPE_TARGET_TYPE (arg_types[0]);
2456
2457       if (fsym)
2458         {
2459           qualified_name = SYMBOL_NATURAL_NAME (fsym);
2460
2461           /* If we have a function with a C++ name, try to extract just
2462              the function part.  Do not try this for non-functions (e.g.
2463              function pointers).  */
2464           if (qualified_name
2465               && TYPE_CODE (check_typedef (SYMBOL_TYPE (fsym))) == TYPE_CODE_FUNC)
2466             {
2467               char *temp;
2468
2469               temp = cp_func_name (qualified_name);
2470
2471               /* If cp_func_name did not remove anything, the name of the
2472                  symbol did not include scope or argument types - it was
2473                  probably a C-style function.  */
2474               if (temp)
2475                 {
2476                   make_cleanup (xfree, temp);
2477                   if (strcmp (temp, qualified_name) == 0)
2478                     func_name = NULL;
2479                   else
2480                     func_name = temp;
2481                 }
2482             }
2483         }
2484       else
2485         {
2486           func_name = name;
2487           qualified_name = name;
2488         }
2489
2490       /* If there was no C++ name, this must be a C-style function or
2491          not a function at all.  Just return the same symbol.  Do the
2492          same if cp_func_name fails for some reason.  */
2493       if (func_name == NULL)
2494         {
2495           *symp = fsym;
2496           return 0;
2497         }
2498
2499       func_oload_champ = find_oload_champ_namespace (arg_types, nargs,
2500                                                      func_name,
2501                                                      qualified_name,
2502                                                      &oload_syms,
2503                                                      &func_badness,
2504                                                      no_adl);
2505
2506       if (func_oload_champ >= 0)
2507         func_match_quality = classify_oload_match (func_badness, nargs, 0);
2508
2509       make_cleanup (xfree, oload_syms);
2510       make_cleanup (xfree, func_badness);
2511     }
2512
2513   /* Did we find a match ?  */
2514   if (method_oload_champ == -1 && func_oload_champ == -1)
2515     error (_("No symbol \"%s\" in current context."), name);
2516
2517   /* If we have found both a method match and a function
2518      match, find out which one is better, and calculate match
2519      quality.  */
2520   if (method_oload_champ >= 0 && func_oload_champ >= 0)
2521     {
2522       switch (compare_badness (func_badness, method_badness))
2523         {
2524           case 0: /* Top two contenders are equally good.  */
2525             /* FIXME: GDB does not support the general ambiguous
2526              case.  All candidates should be collected and presented
2527              the the user.  */
2528             error (_("Ambiguous overload resolution"));
2529             break;
2530           case 1: /* Incomparable top contenders.  */
2531             /* This is an error incompatible candidates
2532                should not have been proposed.  */
2533             error (_("Internal error: incompatible overload candidates proposed"));
2534             break;
2535           case 2: /* Function champion.  */
2536             method_oload_champ = -1;
2537             match_quality = func_match_quality;
2538             break;
2539           case 3: /* Method champion.  */
2540             func_oload_champ = -1;
2541             match_quality = method_match_quality;
2542             break;
2543           default:
2544             error (_("Internal error: unexpected overload comparison result"));
2545             break;
2546         }
2547     }
2548   else
2549     {
2550       /* We have either a method match or a function match.  */
2551       if (method_oload_champ >= 0)
2552         match_quality = method_match_quality;
2553       else
2554         match_quality = func_match_quality;
2555     }
2556
2557   if (match_quality == INCOMPATIBLE)
2558     {
2559       if (method == METHOD)
2560         error (_("Cannot resolve method %s%s%s to any overloaded instance"),
2561                obj_type_name,
2562                (obj_type_name && *obj_type_name) ? "::" : "",
2563                name);
2564       else
2565         error (_("Cannot resolve function %s to any overloaded instance"),
2566                func_name);
2567     }
2568   else if (match_quality == NON_STANDARD)
2569     {
2570       if (method == METHOD)
2571         warning (_("Using non-standard conversion to match method %s%s%s to supplied arguments"),
2572                  obj_type_name,
2573                  (obj_type_name && *obj_type_name) ? "::" : "",
2574                  name);
2575       else
2576         warning (_("Using non-standard conversion to match function %s to supplied arguments"),
2577                  func_name);
2578     }
2579
2580   if (staticp != NULL)
2581     *staticp = oload_method_static (method, fns_ptr, method_oload_champ);
2582
2583   if (method_oload_champ >= 0)
2584     {
2585       if (TYPE_FN_FIELD_VIRTUAL_P (fns_ptr, method_oload_champ))
2586         *valp = value_virtual_fn_field (&temp, fns_ptr, method_oload_champ,
2587                                         basetype, boffset);
2588       else
2589         *valp = value_fn_field (&temp, fns_ptr, method_oload_champ,
2590                                 basetype, boffset);
2591     }
2592   else
2593     *symp = oload_syms[func_oload_champ];
2594
2595   if (objp)
2596     {
2597       struct type *temp_type = check_typedef (value_type (temp));
2598       struct type *obj_type = check_typedef (value_type (*objp));
2599
2600       if (TYPE_CODE (temp_type) != TYPE_CODE_PTR
2601           && (TYPE_CODE (obj_type) == TYPE_CODE_PTR
2602               || TYPE_CODE (obj_type) == TYPE_CODE_REF))
2603         {
2604           temp = value_addr (temp);
2605         }
2606       *objp = temp;
2607     }
2608
2609   do_cleanups (all_cleanups);
2610
2611   switch (match_quality)
2612     {
2613     case INCOMPATIBLE:
2614       return 100;
2615     case NON_STANDARD:
2616       return 10;
2617     default:                            /* STANDARD */
2618       return 0;
2619     }
2620 }
2621
2622 /* Find the best overload match, searching for FUNC_NAME in namespaces
2623    contained in QUALIFIED_NAME until it either finds a good match or
2624    runs out of namespaces.  It stores the overloaded functions in
2625    *OLOAD_SYMS, and the badness vector in *OLOAD_CHAMP_BV.  The
2626    calling function is responsible for freeing *OLOAD_SYMS and
2627    *OLOAD_CHAMP_BV.  If NO_ADL, argument dependent lookup is not 
2628    performned.  */
2629
2630 static int
2631 find_oload_champ_namespace (struct type **arg_types, int nargs,
2632                             const char *func_name,
2633                             const char *qualified_name,
2634                             struct symbol ***oload_syms,
2635                             struct badness_vector **oload_champ_bv,
2636                             const int no_adl)
2637 {
2638   int oload_champ;
2639
2640   find_oload_champ_namespace_loop (arg_types, nargs,
2641                                    func_name,
2642                                    qualified_name, 0,
2643                                    oload_syms, oload_champ_bv,
2644                                    &oload_champ,
2645                                    no_adl);
2646
2647   return oload_champ;
2648 }
2649
2650 /* Helper function for find_oload_champ_namespace; NAMESPACE_LEN is
2651    how deep we've looked for namespaces, and the champ is stored in
2652    OLOAD_CHAMP.  The return value is 1 if the champ is a good one, 0
2653    if it isn't.  Other arguments are the same as in
2654    find_oload_champ_namespace
2655
2656    It is the caller's responsibility to free *OLOAD_SYMS and
2657    *OLOAD_CHAMP_BV.  */
2658
2659 static int
2660 find_oload_champ_namespace_loop (struct type **arg_types, int nargs,
2661                                  const char *func_name,
2662                                  const char *qualified_name,
2663                                  int namespace_len,
2664                                  struct symbol ***oload_syms,
2665                                  struct badness_vector **oload_champ_bv,
2666                                  int *oload_champ,
2667                                  const int no_adl)
2668 {
2669   int next_namespace_len = namespace_len;
2670   int searched_deeper = 0;
2671   int num_fns = 0;
2672   struct cleanup *old_cleanups;
2673   int new_oload_champ;
2674   struct symbol **new_oload_syms;
2675   struct badness_vector *new_oload_champ_bv;
2676   char *new_namespace;
2677
2678   if (next_namespace_len != 0)
2679     {
2680       gdb_assert (qualified_name[next_namespace_len] == ':');
2681       next_namespace_len +=  2;
2682     }
2683   next_namespace_len +=
2684     cp_find_first_component (qualified_name + next_namespace_len);
2685
2686   /* Initialize these to values that can safely be xfree'd.  */
2687   *oload_syms = NULL;
2688   *oload_champ_bv = NULL;
2689
2690   /* First, see if we have a deeper namespace we can search in.  
2691      If we get a good match there, use it.  */
2692
2693   if (qualified_name[next_namespace_len] == ':')
2694     {
2695       searched_deeper = 1;
2696
2697       if (find_oload_champ_namespace_loop (arg_types, nargs,
2698                                            func_name, qualified_name,
2699                                            next_namespace_len,
2700                                            oload_syms, oload_champ_bv,
2701                                            oload_champ, no_adl))
2702         {
2703           return 1;
2704         }
2705     };
2706
2707   /* If we reach here, either we're in the deepest namespace or we
2708      didn't find a good match in a deeper namespace.  But, in the
2709      latter case, we still have a bad match in a deeper namespace;
2710      note that we might not find any match at all in the current
2711      namespace.  (There's always a match in the deepest namespace,
2712      because this overload mechanism only gets called if there's a
2713      function symbol to start off with.)  */
2714
2715   old_cleanups = make_cleanup (xfree, *oload_syms);
2716   make_cleanup (xfree, *oload_champ_bv);
2717   new_namespace = alloca (namespace_len + 1);
2718   strncpy (new_namespace, qualified_name, namespace_len);
2719   new_namespace[namespace_len] = '\0';
2720   new_oload_syms = make_symbol_overload_list (func_name,
2721                                               new_namespace);
2722
2723   /* If we have reached the deepest level perform argument
2724      determined lookup.  */
2725   if (!searched_deeper && !no_adl)
2726     make_symbol_overload_list_adl (arg_types, nargs, func_name);
2727
2728   while (new_oload_syms[num_fns])
2729     ++num_fns;
2730
2731   new_oload_champ = find_oload_champ (arg_types, nargs, 0, num_fns,
2732                                       NULL, new_oload_syms,
2733                                       &new_oload_champ_bv);
2734
2735   /* Case 1: We found a good match.  Free earlier matches (if any),
2736      and return it.  Case 2: We didn't find a good match, but we're
2737      not the deepest function.  Then go with the bad match that the
2738      deeper function found.  Case 3: We found a bad match, and we're
2739      the deepest function.  Then return what we found, even though
2740      it's a bad match.  */
2741
2742   if (new_oload_champ != -1
2743       && classify_oload_match (new_oload_champ_bv, nargs, 0) == STANDARD)
2744     {
2745       *oload_syms = new_oload_syms;
2746       *oload_champ = new_oload_champ;
2747       *oload_champ_bv = new_oload_champ_bv;
2748       do_cleanups (old_cleanups);
2749       return 1;
2750     }
2751   else if (searched_deeper)
2752     {
2753       xfree (new_oload_syms);
2754       xfree (new_oload_champ_bv);
2755       discard_cleanups (old_cleanups);
2756       return 0;
2757     }
2758   else
2759     {
2760       *oload_syms = new_oload_syms;
2761       *oload_champ = new_oload_champ;
2762       *oload_champ_bv = new_oload_champ_bv;
2763       do_cleanups (old_cleanups);
2764       return 0;
2765     }
2766 }
2767
2768 /* Look for a function to take NARGS args of types ARG_TYPES.  Find
2769    the best match from among the overloaded methods or functions
2770    (depending on METHOD) given by FNS_PTR or OLOAD_SYMS, respectively.
2771    The number of methods/functions in the list is given by NUM_FNS.
2772    Return the index of the best match; store an indication of the
2773    quality of the match in OLOAD_CHAMP_BV.
2774
2775    It is the caller's responsibility to free *OLOAD_CHAMP_BV.  */
2776
2777 static int
2778 find_oload_champ (struct type **arg_types, int nargs, int method,
2779                   int num_fns, struct fn_field *fns_ptr,
2780                   struct symbol **oload_syms,
2781                   struct badness_vector **oload_champ_bv)
2782 {
2783   int ix;
2784   /* A measure of how good an overloaded instance is.  */
2785   struct badness_vector *bv;
2786   /* Index of best overloaded function.  */
2787   int oload_champ = -1;
2788   /* Current ambiguity state for overload resolution.  */
2789   int oload_ambiguous = 0;
2790   /* 0 => no ambiguity, 1 => two good funcs, 2 => incomparable funcs.  */
2791
2792   *oload_champ_bv = NULL;
2793
2794   /* Consider each candidate in turn.  */
2795   for (ix = 0; ix < num_fns; ix++)
2796     {
2797       int jj;
2798       int static_offset = oload_method_static (method, fns_ptr, ix);
2799       int nparms;
2800       struct type **parm_types;
2801
2802       if (method)
2803         {
2804           nparms = TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (fns_ptr, ix));
2805         }
2806       else
2807         {
2808           /* If it's not a method, this is the proper place.  */
2809           nparms = TYPE_NFIELDS (SYMBOL_TYPE (oload_syms[ix]));
2810         }
2811
2812       /* Prepare array of parameter types.  */
2813       parm_types = (struct type **) 
2814         xmalloc (nparms * (sizeof (struct type *)));
2815       for (jj = 0; jj < nparms; jj++)
2816         parm_types[jj] = (method
2817                           ? (TYPE_FN_FIELD_ARGS (fns_ptr, ix)[jj].type)
2818                           : TYPE_FIELD_TYPE (SYMBOL_TYPE (oload_syms[ix]), 
2819                                              jj));
2820
2821       /* Compare parameter types to supplied argument types.  Skip
2822          THIS for static methods.  */
2823       bv = rank_function (parm_types, nparms, 
2824                           arg_types + static_offset,
2825                           nargs - static_offset);
2826
2827       if (!*oload_champ_bv)
2828         {
2829           *oload_champ_bv = bv;
2830           oload_champ = 0;
2831         }
2832       else /* See whether current candidate is better or worse than
2833               previous best.  */
2834         switch (compare_badness (bv, *oload_champ_bv))
2835           {
2836           case 0:               /* Top two contenders are equally good.  */
2837             oload_ambiguous = 1;
2838             break;
2839           case 1:               /* Incomparable top contenders.  */
2840             oload_ambiguous = 2;
2841             break;
2842           case 2:               /* New champion, record details.  */
2843             *oload_champ_bv = bv;
2844             oload_ambiguous = 0;
2845             oload_champ = ix;
2846             break;
2847           case 3:
2848           default:
2849             break;
2850           }
2851       xfree (parm_types);
2852       if (overload_debug)
2853         {
2854           if (method)
2855             fprintf_filtered (gdb_stderr,
2856                               "Overloaded method instance %s, # of parms %d\n", 
2857                               fns_ptr[ix].physname, nparms);
2858           else
2859             fprintf_filtered (gdb_stderr,
2860                               "Overloaded function instance %s # of parms %d\n",
2861                               SYMBOL_DEMANGLED_NAME (oload_syms[ix]), 
2862                               nparms);
2863           for (jj = 0; jj < nargs - static_offset; jj++)
2864             fprintf_filtered (gdb_stderr,
2865                               "...Badness @ %d : %d\n", 
2866                               jj, bv->rank[jj]);
2867           fprintf_filtered (gdb_stderr,
2868                             "Overload resolution champion is %d, ambiguous? %d\n", 
2869                             oload_champ, oload_ambiguous);
2870         }
2871     }
2872
2873   return oload_champ;
2874 }
2875
2876 /* Return 1 if we're looking at a static method, 0 if we're looking at
2877    a non-static method or a function that isn't a method.  */
2878
2879 static int
2880 oload_method_static (int method, struct fn_field *fns_ptr, int index)
2881 {
2882   if (method && fns_ptr && index >= 0
2883       && TYPE_FN_FIELD_STATIC_P (fns_ptr, index))
2884     return 1;
2885   else
2886     return 0;
2887 }
2888
2889 /* Check how good an overload match OLOAD_CHAMP_BV represents.  */
2890
2891 static enum oload_classification
2892 classify_oload_match (struct badness_vector *oload_champ_bv,
2893                       int nargs,
2894                       int static_offset)
2895 {
2896   int ix;
2897
2898   for (ix = 1; ix <= nargs - static_offset; ix++)
2899     {
2900       if (oload_champ_bv->rank[ix] >= 100)
2901         return INCOMPATIBLE;    /* Truly mismatched types.  */
2902       else if (oload_champ_bv->rank[ix] >= 10)
2903         return NON_STANDARD;    /* Non-standard type conversions
2904                                    needed.  */
2905     }
2906
2907   return STANDARD;              /* Only standard conversions needed.  */
2908 }
2909
2910 /* C++: return 1 is NAME is a legitimate name for the destructor of
2911    type TYPE.  If TYPE does not have a destructor, or if NAME is
2912    inappropriate for TYPE, an error is signaled.  */
2913 int
2914 destructor_name_p (const char *name, const struct type *type)
2915 {
2916   if (name[0] == '~')
2917     {
2918       char *dname = type_name_no_tag (type);
2919       char *cp = strchr (dname, '<');
2920       unsigned int len;
2921
2922       /* Do not compare the template part for template classes.  */
2923       if (cp == NULL)
2924         len = strlen (dname);
2925       else
2926         len = cp - dname;
2927       if (strlen (name + 1) != len || strncmp (dname, name + 1, len) != 0)
2928         error (_("name of destructor must equal name of class"));
2929       else
2930         return 1;
2931     }
2932   return 0;
2933 }
2934
2935 /* Given TYPE, a structure/union,
2936    return 1 if the component named NAME from the ultimate target
2937    structure/union is defined, otherwise, return 0.  */
2938
2939 int
2940 check_field (struct type *type, const char *name)
2941 {
2942   int i;
2943
2944   /* The type may be a stub.  */
2945   CHECK_TYPEDEF (type);
2946
2947   for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
2948     {
2949       char *t_field_name = TYPE_FIELD_NAME (type, i);
2950
2951       if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2952         return 1;
2953     }
2954
2955   /* C++: If it was not found as a data field, then try to return it
2956      as a pointer to a method.  */
2957
2958   for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
2959     {
2960       if (strcmp_iw (TYPE_FN_FIELDLIST_NAME (type, i), name) == 0)
2961         return 1;
2962     }
2963
2964   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2965     if (check_field (TYPE_BASECLASS (type, i), name))
2966       return 1;
2967
2968   return 0;
2969 }
2970
2971 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
2972    return the appropriate member (or the address of the member, if
2973    WANT_ADDRESS).  This function is used to resolve user expressions
2974    of the form "DOMAIN::NAME".  For more details on what happens, see
2975    the comment before value_struct_elt_for_reference.  */
2976
2977 struct value *
2978 value_aggregate_elt (struct type *curtype, char *name,
2979                      struct type *expect_type, int want_address,
2980                      enum noside noside)
2981 {
2982   switch (TYPE_CODE (curtype))
2983     {
2984     case TYPE_CODE_STRUCT:
2985     case TYPE_CODE_UNION:
2986       return value_struct_elt_for_reference (curtype, 0, curtype, 
2987                                              name, expect_type,
2988                                              want_address, noside);
2989     case TYPE_CODE_NAMESPACE:
2990       return value_namespace_elt (curtype, name, 
2991                                   want_address, noside);
2992     default:
2993       internal_error (__FILE__, __LINE__,
2994                       _("non-aggregate type in value_aggregate_elt"));
2995     }
2996 }
2997
2998 /* Compares the two method/function types T1 and T2 for "equality" 
2999    with respect to the the methods' parameters.  If the types of the
3000    two parameter lists are the same, returns 1; 0 otherwise.  This
3001    comparison may ignore any artificial parameters in T1 if
3002    SKIP_ARTIFICIAL is non-zero.  This function will ALWAYS skip
3003    the first artificial parameter in T1, assumed to be a 'this' pointer.
3004
3005    The type T2 is expected to have come from make_params (in eval.c).  */
3006
3007 static int
3008 compare_parameters (struct type *t1, struct type *t2, int skip_artificial)
3009 {
3010   int start = 0;
3011
3012   if (TYPE_FIELD_ARTIFICIAL (t1, 0))
3013     ++start;
3014
3015   /* If skipping artificial fields, find the first real field
3016      in T1. */
3017   if (skip_artificial)
3018     {
3019       while (start < TYPE_NFIELDS (t1)
3020              && TYPE_FIELD_ARTIFICIAL (t1, start))
3021         ++start;
3022     }
3023
3024   /* Now compare parameters */
3025
3026   /* Special case: a method taking void.  T1 will contain no
3027      non-artificial fields, and T2 will contain TYPE_CODE_VOID.  */
3028   if ((TYPE_NFIELDS (t1) - start) == 0 && TYPE_NFIELDS (t2) == 1
3029       && TYPE_CODE (TYPE_FIELD_TYPE (t2, 0)) == TYPE_CODE_VOID)
3030     return 1;
3031
3032   if ((TYPE_NFIELDS (t1) - start) == TYPE_NFIELDS (t2))
3033     {
3034       int i;
3035
3036       for (i = 0; i < TYPE_NFIELDS (t2); ++i)
3037         {
3038           if (rank_one_type (TYPE_FIELD_TYPE (t1, start + i),
3039                               TYPE_FIELD_TYPE (t2, i))
3040               != 0)
3041             return 0;
3042         }
3043
3044       return 1;
3045     }
3046
3047   return 0;
3048 }
3049
3050 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
3051    return the address of this member as a "pointer to member" type.
3052    If INTYPE is non-null, then it will be the type of the member we
3053    are looking for.  This will help us resolve "pointers to member
3054    functions".  This function is used to resolve user expressions of
3055    the form "DOMAIN::NAME".  */
3056
3057 static struct value *
3058 value_struct_elt_for_reference (struct type *domain, int offset,
3059                                 struct type *curtype, char *name,
3060                                 struct type *intype, 
3061                                 int want_address,
3062                                 enum noside noside)
3063 {
3064   struct type *t = curtype;
3065   int i;
3066   struct value *v, *result;
3067
3068   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
3069       && TYPE_CODE (t) != TYPE_CODE_UNION)
3070     error (_("Internal error: non-aggregate type to value_struct_elt_for_reference"));
3071
3072   for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
3073     {
3074       char *t_field_name = TYPE_FIELD_NAME (t, i);
3075
3076       if (t_field_name && strcmp (t_field_name, name) == 0)
3077         {
3078           if (field_is_static (&TYPE_FIELD (t, i)))
3079             {
3080               v = value_static_field (t, i);
3081               if (v == NULL)
3082                 error (_("static field %s has been optimized out"),
3083                        name);
3084               if (want_address)
3085                 v = value_addr (v);
3086               return v;
3087             }
3088           if (TYPE_FIELD_PACKED (t, i))
3089             error (_("pointers to bitfield members not allowed"));
3090
3091           if (want_address)
3092             return value_from_longest
3093               (lookup_memberptr_type (TYPE_FIELD_TYPE (t, i), domain),
3094                offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
3095           else if (noside == EVAL_AVOID_SIDE_EFFECTS)
3096             return allocate_value (TYPE_FIELD_TYPE (t, i));
3097           else
3098             error (_("Cannot reference non-static field \"%s\""), name);
3099         }
3100     }
3101
3102   /* C++: If it was not found as a data field, then try to return it
3103      as a pointer to a method.  */
3104
3105   /* Perform all necessary dereferencing.  */
3106   while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
3107     intype = TYPE_TARGET_TYPE (intype);
3108
3109   for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
3110     {
3111       char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
3112       char dem_opname[64];
3113
3114       if (strncmp (t_field_name, "__", 2) == 0 
3115           || strncmp (t_field_name, "op", 2) == 0 
3116           || strncmp (t_field_name, "type", 4) == 0)
3117         {
3118           if (cplus_demangle_opname (t_field_name, 
3119                                      dem_opname, DMGL_ANSI))
3120             t_field_name = dem_opname;
3121           else if (cplus_demangle_opname (t_field_name, 
3122                                           dem_opname, 0))
3123             t_field_name = dem_opname;
3124         }
3125       if (t_field_name && strcmp (t_field_name, name) == 0)
3126         {
3127           int j;
3128           int len = TYPE_FN_FIELDLIST_LENGTH (t, i);
3129           struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
3130
3131           check_stub_method_group (t, i);
3132
3133           if (intype)
3134             {
3135               for (j = 0; j < len; ++j)
3136                 {
3137                   if (compare_parameters (TYPE_FN_FIELD_TYPE (f, j), intype, 0)
3138                       || compare_parameters (TYPE_FN_FIELD_TYPE (f, j), intype, 1))
3139                     break;
3140                 }
3141
3142               if (j == len)
3143                 error (_("no member function matches that type instantiation"));
3144             }
3145           else
3146             {
3147               int ii;
3148
3149               j = -1;
3150               for (ii = 0; ii < TYPE_FN_FIELDLIST_LENGTH (t, i);
3151                    ++ii)
3152                 {
3153                   /* Skip artificial methods.  This is necessary if,
3154                      for example, the user wants to "print
3155                      subclass::subclass" with only one user-defined
3156                      constructor.  There is no ambiguity in this
3157                      case.  */
3158                   if (TYPE_FN_FIELD_ARTIFICIAL (f, ii))
3159                     continue;
3160
3161                   /* Desired method is ambiguous if more than one
3162                      method is defined.  */
3163                   if (j != -1)
3164                     error (_("non-unique member `%s' requires type instantiation"), name);
3165
3166                   j = ii;
3167                 }
3168             }
3169
3170           if (TYPE_FN_FIELD_STATIC_P (f, j))
3171             {
3172               struct symbol *s = 
3173                 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
3174                                0, VAR_DOMAIN, 0);
3175
3176               if (s == NULL)
3177                 return NULL;
3178
3179               if (want_address)
3180                 return value_addr (read_var_value (s, 0));
3181               else
3182                 return read_var_value (s, 0);
3183             }
3184
3185           if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
3186             {
3187               if (want_address)
3188                 {
3189                   result = allocate_value
3190                     (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
3191                   cplus_make_method_ptr (value_type (result),
3192                                          value_contents_writeable (result),
3193                                          TYPE_FN_FIELD_VOFFSET (f, j), 1);
3194                 }
3195               else if (noside == EVAL_AVOID_SIDE_EFFECTS)
3196                 return allocate_value (TYPE_FN_FIELD_TYPE (f, j));
3197               else
3198                 error (_("Cannot reference virtual member function \"%s\""),
3199                        name);
3200             }
3201           else
3202             {
3203               struct symbol *s = 
3204                 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
3205                                0, VAR_DOMAIN, 0);
3206
3207               if (s == NULL)
3208                 return NULL;
3209
3210               v = read_var_value (s, 0);
3211               if (!want_address)
3212                 result = v;
3213               else
3214                 {
3215                   result = allocate_value (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
3216                   cplus_make_method_ptr (value_type (result),
3217                                          value_contents_writeable (result),
3218                                          value_address (v), 0);
3219                 }
3220             }
3221           return result;
3222         }
3223     }
3224   for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
3225     {
3226       struct value *v;
3227       int base_offset;
3228
3229       if (BASETYPE_VIA_VIRTUAL (t, i))
3230         base_offset = 0;
3231       else
3232         base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
3233       v = value_struct_elt_for_reference (domain,
3234                                           offset + base_offset,
3235                                           TYPE_BASECLASS (t, i),
3236                                           name, intype, 
3237                                           want_address, noside);
3238       if (v)
3239         return v;
3240     }
3241
3242   /* As a last chance, pretend that CURTYPE is a namespace, and look
3243      it up that way; this (frequently) works for types nested inside
3244      classes.  */
3245
3246   return value_maybe_namespace_elt (curtype, name, 
3247                                     want_address, noside);
3248 }
3249
3250 /* C++: Return the member NAME of the namespace given by the type
3251    CURTYPE.  */
3252
3253 static struct value *
3254 value_namespace_elt (const struct type *curtype,
3255                      char *name, int want_address,
3256                      enum noside noside)
3257 {
3258   struct value *retval = value_maybe_namespace_elt (curtype, name,
3259                                                     want_address, 
3260                                                     noside);
3261
3262   if (retval == NULL)
3263     error (_("No symbol \"%s\" in namespace \"%s\"."), 
3264            name, TYPE_TAG_NAME (curtype));
3265
3266   return retval;
3267 }
3268
3269 /* A helper function used by value_namespace_elt and
3270    value_struct_elt_for_reference.  It looks up NAME inside the
3271    context CURTYPE; this works if CURTYPE is a namespace or if CURTYPE
3272    is a class and NAME refers to a type in CURTYPE itself (as opposed
3273    to, say, some base class of CURTYPE).  */
3274
3275 static struct value *
3276 value_maybe_namespace_elt (const struct type *curtype,
3277                            char *name, int want_address,
3278                            enum noside noside)
3279 {
3280   const char *namespace_name = TYPE_TAG_NAME (curtype);
3281   struct symbol *sym;
3282   struct value *result;
3283
3284   sym = cp_lookup_symbol_namespace (namespace_name, name,
3285                                     get_selected_block (0), VAR_DOMAIN);
3286
3287   if (sym == NULL)
3288     {
3289       char *concatenated_name = alloca (strlen (namespace_name) + 2
3290                                         + strlen (name) + 1);
3291
3292       sprintf (concatenated_name, "%s::%s", namespace_name, name);
3293       sym = lookup_static_symbol_aux (concatenated_name, VAR_DOMAIN);
3294     }
3295
3296   if (sym == NULL)
3297     return NULL;
3298   else if ((noside == EVAL_AVOID_SIDE_EFFECTS)
3299            && (SYMBOL_CLASS (sym) == LOC_TYPEDEF))
3300     result = allocate_value (SYMBOL_TYPE (sym));
3301   else
3302     result = value_of_variable (sym, get_selected_block (0));
3303
3304   if (result && want_address)
3305     result = value_addr (result);
3306
3307   return result;
3308 }
3309
3310 /* Given a pointer value V, find the real (RTTI) type of the object it
3311    points to.
3312
3313    Other parameters FULL, TOP, USING_ENC as with value_rtti_type()
3314    and refer to the values computed for the object pointed to.  */
3315
3316 struct type *
3317 value_rtti_target_type (struct value *v, int *full, 
3318                         int *top, int *using_enc)
3319 {
3320   struct value *target;
3321
3322   target = value_ind (v);
3323
3324   return value_rtti_type (target, full, top, using_enc);
3325 }
3326
3327 /* Given a value pointed to by ARGP, check its real run-time type, and
3328    if that is different from the enclosing type, create a new value
3329    using the real run-time type as the enclosing type (and of the same
3330    type as ARGP) and return it, with the embedded offset adjusted to
3331    be the correct offset to the enclosed object.  RTYPE is the type,
3332    and XFULL, XTOP, and XUSING_ENC are the other parameters, computed
3333    by value_rtti_type().  If these are available, they can be supplied
3334    and a second call to value_rtti_type() is avoided.  (Pass RTYPE ==
3335    NULL if they're not available.  */
3336
3337 struct value *
3338 value_full_object (struct value *argp, 
3339                    struct type *rtype, 
3340                    int xfull, int xtop,
3341                    int xusing_enc)
3342 {
3343   struct type *real_type;
3344   int full = 0;
3345   int top = -1;
3346   int using_enc = 0;
3347   struct value *new_val;
3348
3349   if (rtype)
3350     {
3351       real_type = rtype;
3352       full = xfull;
3353       top = xtop;
3354       using_enc = xusing_enc;
3355     }
3356   else
3357     real_type = value_rtti_type (argp, &full, &top, &using_enc);
3358
3359   /* If no RTTI data, or if object is already complete, do nothing.  */
3360   if (!real_type || real_type == value_enclosing_type (argp))
3361     return argp;
3362
3363   /* If we have the full object, but for some reason the enclosing
3364      type is wrong, set it.  */
3365   /* pai: FIXME -- sounds iffy */
3366   if (full)
3367     {
3368       argp = value_change_enclosing_type (argp, real_type);
3369       return argp;
3370     }
3371
3372   /* Check if object is in memory */
3373   if (VALUE_LVAL (argp) != lval_memory)
3374     {
3375       warning (_("Couldn't retrieve complete object of RTTI type %s; object may be in register(s)."), 
3376                TYPE_NAME (real_type));
3377
3378       return argp;
3379     }
3380
3381   /* All other cases -- retrieve the complete object.  */
3382   /* Go back by the computed top_offset from the beginning of the
3383      object, adjusting for the embedded offset of argp if that's what
3384      value_rtti_type used for its computation.  */
3385   new_val = value_at_lazy (real_type, value_address (argp) - top +
3386                            (using_enc ? 0 : value_embedded_offset (argp)));
3387   deprecated_set_value_type (new_val, value_type (argp));
3388   set_value_embedded_offset (new_val, (using_enc
3389                                        ? top + value_embedded_offset (argp)
3390                                        : top));
3391   return new_val;
3392 }
3393
3394
3395 /* Return the value of the local variable, if one exists.
3396    Flag COMPLAIN signals an error if the request is made in an
3397    inappropriate context.  */
3398
3399 struct value *
3400 value_of_local (const char *name, int complain)
3401 {
3402   struct symbol *func, *sym;
3403   struct block *b;
3404   struct value * ret;
3405   struct frame_info *frame;
3406
3407   if (complain)
3408     frame = get_selected_frame (_("no frame selected"));
3409   else
3410     {
3411       frame = deprecated_safe_get_selected_frame ();
3412       if (frame == 0)
3413         return 0;
3414     }
3415
3416   func = get_frame_function (frame);
3417   if (!func)
3418     {
3419       if (complain)
3420         error (_("no `%s' in nameless context"), name);
3421       else
3422         return 0;
3423     }
3424
3425   b = SYMBOL_BLOCK_VALUE (func);
3426   if (dict_empty (BLOCK_DICT (b)))
3427     {
3428       if (complain)
3429         error (_("no args, no `%s'"), name);
3430       else
3431         return 0;
3432     }
3433
3434   /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
3435      symbol instead of the LOC_ARG one (if both exist).  */
3436   sym = lookup_block_symbol (b, name, VAR_DOMAIN);
3437   if (sym == NULL)
3438     {
3439       if (complain)
3440         error (_("current stack frame does not contain a variable named `%s'"), 
3441                name);
3442       else
3443         return NULL;
3444     }
3445
3446   ret = read_var_value (sym, frame);
3447   if (ret == 0 && complain)
3448     error (_("`%s' argument unreadable"), name);
3449   return ret;
3450 }
3451
3452 /* C++/Objective-C: return the value of the class instance variable,
3453    if one exists.  Flag COMPLAIN signals an error if the request is
3454    made in an inappropriate context.  */
3455
3456 struct value *
3457 value_of_this (int complain)
3458 {
3459   if (!current_language->la_name_of_this)
3460     return 0;
3461   return value_of_local (current_language->la_name_of_this, complain);
3462 }
3463
3464 /* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH
3465    elements long, starting at LOWBOUND.  The result has the same lower
3466    bound as the original ARRAY.  */
3467
3468 struct value *
3469 value_slice (struct value *array, int lowbound, int length)
3470 {
3471   struct type *slice_range_type, *slice_type, *range_type;
3472   LONGEST lowerbound, upperbound;
3473   struct value *slice;
3474   struct type *array_type;
3475
3476   array_type = check_typedef (value_type (array));
3477   if (TYPE_CODE (array_type) != TYPE_CODE_ARRAY
3478       && TYPE_CODE (array_type) != TYPE_CODE_STRING
3479       && TYPE_CODE (array_type) != TYPE_CODE_BITSTRING)
3480     error (_("cannot take slice of non-array"));
3481
3482   range_type = TYPE_INDEX_TYPE (array_type);
3483   if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
3484     error (_("slice from bad array or bitstring"));
3485
3486   if (lowbound < lowerbound || length < 0
3487       || lowbound + length - 1 > upperbound)
3488     error (_("slice out of range"));
3489
3490   /* FIXME-type-allocation: need a way to free this type when we are
3491      done with it.  */
3492   slice_range_type = create_range_type ((struct type *) NULL,
3493                                         TYPE_TARGET_TYPE (range_type),
3494                                         lowbound, 
3495                                         lowbound + length - 1);
3496   if (TYPE_CODE (array_type) == TYPE_CODE_BITSTRING)
3497     {
3498       int i;
3499
3500       slice_type = create_set_type ((struct type *) NULL,
3501                                     slice_range_type);
3502       TYPE_CODE (slice_type) = TYPE_CODE_BITSTRING;
3503       slice = value_zero (slice_type, not_lval);
3504
3505       for (i = 0; i < length; i++)
3506         {
3507           int element = value_bit_index (array_type,
3508                                          value_contents (array),
3509                                          lowbound + i);
3510
3511           if (element < 0)
3512             error (_("internal error accessing bitstring"));
3513           else if (element > 0)
3514             {
3515               int j = i % TARGET_CHAR_BIT;
3516
3517               if (gdbarch_bits_big_endian (get_type_arch (array_type)))
3518                 j = TARGET_CHAR_BIT - 1 - j;
3519               value_contents_raw (slice)[i / TARGET_CHAR_BIT] |= (1 << j);
3520             }
3521         }
3522       /* We should set the address, bitssize, and bitspos, so the
3523          slice can be used on the LHS, but that may require extensions
3524          to value_assign.  For now, just leave as a non_lval.
3525          FIXME.  */
3526     }
3527   else
3528     {
3529       struct type *element_type = TYPE_TARGET_TYPE (array_type);
3530       LONGEST offset =
3531         (lowbound - lowerbound) * TYPE_LENGTH (check_typedef (element_type));
3532
3533       slice_type = create_array_type ((struct type *) NULL, 
3534                                       element_type,
3535                                       slice_range_type);
3536       TYPE_CODE (slice_type) = TYPE_CODE (array_type);
3537
3538       if (VALUE_LVAL (array) == lval_memory && value_lazy (array))
3539         slice = allocate_value_lazy (slice_type);
3540       else
3541         {
3542           slice = allocate_value (slice_type);
3543           memcpy (value_contents_writeable (slice),
3544                   value_contents (array) + offset,
3545                   TYPE_LENGTH (slice_type));
3546         }
3547
3548       set_value_component_location (slice, array);
3549       VALUE_FRAME_ID (slice) = VALUE_FRAME_ID (array);
3550       set_value_offset (slice, value_offset (array) + offset);
3551     }
3552   return slice;
3553 }
3554
3555 /* Create a value for a FORTRAN complex number.  Currently most of the
3556    time values are coerced to COMPLEX*16 (i.e. a complex number
3557    composed of 2 doubles.  This really should be a smarter routine
3558    that figures out precision inteligently as opposed to assuming
3559    doubles.  FIXME: fmb  */
3560
3561 struct value *
3562 value_literal_complex (struct value *arg1, 
3563                        struct value *arg2,
3564                        struct type *type)
3565 {
3566   struct value *val;
3567   struct type *real_type = TYPE_TARGET_TYPE (type);
3568
3569   val = allocate_value (type);
3570   arg1 = value_cast (real_type, arg1);
3571   arg2 = value_cast (real_type, arg2);
3572
3573   memcpy (value_contents_raw (val),
3574           value_contents (arg1), TYPE_LENGTH (real_type));
3575   memcpy (value_contents_raw (val) + TYPE_LENGTH (real_type),
3576           value_contents (arg2), TYPE_LENGTH (real_type));
3577   return val;
3578 }
3579
3580 /* Cast a value into the appropriate complex data type.  */
3581
3582 static struct value *
3583 cast_into_complex (struct type *type, struct value *val)
3584 {
3585   struct type *real_type = TYPE_TARGET_TYPE (type);
3586
3587   if (TYPE_CODE (value_type (val)) == TYPE_CODE_COMPLEX)
3588     {
3589       struct type *val_real_type = TYPE_TARGET_TYPE (value_type (val));
3590       struct value *re_val = allocate_value (val_real_type);
3591       struct value *im_val = allocate_value (val_real_type);
3592
3593       memcpy (value_contents_raw (re_val),
3594               value_contents (val), TYPE_LENGTH (val_real_type));
3595       memcpy (value_contents_raw (im_val),
3596               value_contents (val) + TYPE_LENGTH (val_real_type),
3597               TYPE_LENGTH (val_real_type));
3598
3599       return value_literal_complex (re_val, im_val, type);
3600     }
3601   else if (TYPE_CODE (value_type (val)) == TYPE_CODE_FLT
3602            || TYPE_CODE (value_type (val)) == TYPE_CODE_INT)
3603     return value_literal_complex (val, 
3604                                   value_zero (real_type, not_lval), 
3605                                   type);
3606   else
3607     error (_("cannot cast non-number to complex"));
3608 }
3609
3610 void
3611 _initialize_valops (void)
3612 {
3613   add_setshow_boolean_cmd ("overload-resolution", class_support,
3614                            &overload_resolution, _("\
3615 Set overload resolution in evaluating C++ functions."), _("\
3616 Show overload resolution in evaluating C++ functions."), 
3617                            NULL, NULL,
3618                            show_overload_resolution,
3619                            &setlist, &showlist);
3620   overload_resolution = 1;
3621 }