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