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