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