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