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