2013-01-31 Aleksandar Ristovski <aristovski@qnx.com>
[platform/upstream/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 this_offset;
2240
2241       if (BASETYPE_VIA_VIRTUAL (type, i))
2242         {
2243           struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
2244           struct value *base_val;
2245           const gdb_byte *base_valaddr;
2246
2247           /* The virtual base class pointer might have been
2248              clobbered by the user program.  Make sure that it
2249             still points to a valid memory location.  */
2250
2251           if (offset < 0 || offset >= TYPE_LENGTH (type))
2252             {
2253               gdb_byte *tmp;
2254               struct cleanup *back_to;
2255               CORE_ADDR address;
2256
2257               tmp = xmalloc (TYPE_LENGTH (baseclass));
2258               back_to = make_cleanup (xfree, tmp);
2259               address = value_address (*arg1p);
2260
2261               if (target_read_memory (address + offset,
2262                                       tmp, TYPE_LENGTH (baseclass)) != 0)
2263                 error (_("virtual baseclass botch"));
2264
2265               base_val = value_from_contents_and_address (baseclass,
2266                                                           tmp,
2267                                                           address + offset);
2268               base_valaddr = value_contents_for_printing (base_val);
2269               this_offset = 0;
2270               do_cleanups (back_to);
2271             }
2272           else
2273             {
2274               base_val = *arg1p;
2275               base_valaddr = value_contents_for_printing (*arg1p);
2276               this_offset = offset;
2277             }
2278
2279           base_offset = baseclass_offset (type, i, base_valaddr,
2280                                           this_offset, value_address (base_val),
2281                                           base_val);
2282         }
2283       else
2284         {
2285           base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2286         }
2287       v = search_struct_method (name, arg1p, args, base_offset + offset,
2288                                 static_memfuncp, TYPE_BASECLASS (type, i));
2289       if (v == (struct value *) - 1)
2290         {
2291           name_matched = 1;
2292         }
2293       else if (v)
2294         {
2295           /* FIXME-bothner:  Why is this commented out?  Why is it here?  */
2296           /* *arg1p = arg1_tmp; */
2297           return v;
2298         }
2299     }
2300   if (name_matched)
2301     return (struct value *) - 1;
2302   else
2303     return NULL;
2304 }
2305
2306 /* Given *ARGP, a value of type (pointer to a)* structure/union,
2307    extract the component named NAME from the ultimate target
2308    structure/union and return it as a value with its appropriate type.
2309    ERR is used in the error message if *ARGP's type is wrong.
2310
2311    C++: ARGS is a list of argument types to aid in the selection of
2312    an appropriate method.  Also, handle derived types.
2313
2314    STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
2315    where the truthvalue of whether the function that was resolved was
2316    a static member function or not is stored.
2317
2318    ERR is an error message to be printed in case the field is not
2319    found.  */
2320
2321 struct value *
2322 value_struct_elt (struct value **argp, struct value **args,
2323                   const char *name, int *static_memfuncp, const char *err)
2324 {
2325   struct type *t;
2326   struct value *v;
2327
2328   *argp = coerce_array (*argp);
2329
2330   t = check_typedef (value_type (*argp));
2331
2332   /* Follow pointers until we get to a non-pointer.  */
2333
2334   while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
2335     {
2336       *argp = value_ind (*argp);
2337       /* Don't coerce fn pointer to fn and then back again!  */
2338       if (TYPE_CODE (value_type (*argp)) != TYPE_CODE_FUNC)
2339         *argp = coerce_array (*argp);
2340       t = check_typedef (value_type (*argp));
2341     }
2342
2343   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2344       && TYPE_CODE (t) != TYPE_CODE_UNION)
2345     error (_("Attempt to extract a component of a value that is not a %s."),
2346            err);
2347
2348   /* Assume it's not, unless we see that it is.  */
2349   if (static_memfuncp)
2350     *static_memfuncp = 0;
2351
2352   if (!args)
2353     {
2354       /* if there are no arguments ...do this...  */
2355
2356       /* Try as a field first, because if we succeed, there is less
2357          work to be done.  */
2358       v = search_struct_field (name, *argp, 0, t, 0);
2359       if (v)
2360         return v;
2361
2362       /* C++: If it was not found as a data field, then try to
2363          return it as a pointer to a method.  */
2364       v = search_struct_method (name, argp, args, 0, 
2365                                 static_memfuncp, t);
2366
2367       if (v == (struct value *) - 1)
2368         error (_("Cannot take address of method %s."), name);
2369       else if (v == 0)
2370         {
2371           if (TYPE_NFN_FIELDS (t))
2372             error (_("There is no member or method named %s."), name);
2373           else
2374             error (_("There is no member named %s."), name);
2375         }
2376       return v;
2377     }
2378
2379     v = search_struct_method (name, argp, args, 0, 
2380                               static_memfuncp, t);
2381   
2382   if (v == (struct value *) - 1)
2383     {
2384       error (_("One of the arguments you tried to pass to %s could not "
2385                "be converted to what the function wants."), name);
2386     }
2387   else if (v == 0)
2388     {
2389       /* See if user tried to invoke data as function.  If so, hand it
2390          back.  If it's not callable (i.e., a pointer to function),
2391          gdb should give an error.  */
2392       v = search_struct_field (name, *argp, 0, t, 0);
2393       /* If we found an ordinary field, then it is not a method call.
2394          So, treat it as if it were a static member function.  */
2395       if (v && static_memfuncp)
2396         *static_memfuncp = 1;
2397     }
2398
2399   if (!v)
2400     throw_error (NOT_FOUND_ERROR,
2401                  _("Structure has no component named %s."), name);
2402   return v;
2403 }
2404
2405 /* Search through the methods of an object (and its bases) to find a
2406    specified method.  Return the pointer to the fn_field list of
2407    overloaded instances.
2408
2409    Helper function for value_find_oload_list.
2410    ARGP is a pointer to a pointer to a value (the object).
2411    METHOD is a string containing the method name.
2412    OFFSET is the offset within the value.
2413    TYPE is the assumed type of the object.
2414    NUM_FNS is the number of overloaded instances.
2415    BASETYPE is set to the actual type of the subobject where the
2416       method is found.
2417    BOFFSET is the offset of the base subobject where the method is found.  */
2418
2419 static struct fn_field *
2420 find_method_list (struct value **argp, const char *method,
2421                   int offset, struct type *type, int *num_fns,
2422                   struct type **basetype, int *boffset)
2423 {
2424   int i;
2425   struct fn_field *f;
2426   CHECK_TYPEDEF (type);
2427
2428   *num_fns = 0;
2429
2430   /* First check in object itself.  */
2431   for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2432     {
2433       /* pai: FIXME What about operators and type conversions?  */
2434       const char *fn_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2435
2436       if (fn_field_name && (strcmp_iw (fn_field_name, method) == 0))
2437         {
2438           int len = TYPE_FN_FIELDLIST_LENGTH (type, i);
2439           struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
2440
2441           *num_fns = len;
2442           *basetype = type;
2443           *boffset = offset;
2444
2445           /* Resolve any stub methods.  */
2446           check_stub_method_group (type, i);
2447
2448           return f;
2449         }
2450     }
2451
2452   /* Not found in object, check in base subobjects.  */
2453   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2454     {
2455       int base_offset;
2456
2457       if (BASETYPE_VIA_VIRTUAL (type, i))
2458         {
2459           base_offset = baseclass_offset (type, i,
2460                                           value_contents_for_printing (*argp),
2461                                           value_offset (*argp) + offset,
2462                                           value_address (*argp), *argp);
2463         }
2464       else /* Non-virtual base, simply use bit position from debug
2465               info.  */
2466         {
2467           base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2468         }
2469       f = find_method_list (argp, method, base_offset + offset,
2470                             TYPE_BASECLASS (type, i), num_fns, 
2471                             basetype, boffset);
2472       if (f)
2473         return f;
2474     }
2475   return NULL;
2476 }
2477
2478 /* Return the list of overloaded methods of a specified name.
2479
2480    ARGP is a pointer to a pointer to a value (the object).
2481    METHOD is the method name.
2482    OFFSET is the offset within the value contents.
2483    NUM_FNS is the number of overloaded instances.
2484    BASETYPE is set to the type of the base subobject that defines the
2485       method.
2486    BOFFSET is the offset of the base subobject which defines the method.  */
2487
2488 static struct fn_field *
2489 value_find_oload_method_list (struct value **argp, const char *method,
2490                               int offset, int *num_fns, 
2491                               struct type **basetype, int *boffset)
2492 {
2493   struct type *t;
2494
2495   t = check_typedef (value_type (*argp));
2496
2497   /* Code snarfed from value_struct_elt.  */
2498   while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
2499     {
2500       *argp = value_ind (*argp);
2501       /* Don't coerce fn pointer to fn and then back again!  */
2502       if (TYPE_CODE (value_type (*argp)) != TYPE_CODE_FUNC)
2503         *argp = coerce_array (*argp);
2504       t = check_typedef (value_type (*argp));
2505     }
2506
2507   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2508       && TYPE_CODE (t) != TYPE_CODE_UNION)
2509     error (_("Attempt to extract a component of a "
2510              "value that is not a struct or union"));
2511
2512   return find_method_list (argp, method, 0, t, num_fns, 
2513                            basetype, boffset);
2514 }
2515
2516 /* Given an array of arguments (ARGS) (which includes an
2517    entry for "this" in the case of C++ methods), the number of
2518    arguments NARGS, the NAME of a function, and whether it's a method or
2519    not (METHOD), find the best function that matches on the argument types
2520    according to the overload resolution rules.
2521
2522    METHOD can be one of three values:
2523      NON_METHOD for non-member functions.
2524      METHOD: for member functions.
2525      BOTH: used for overload resolution of operators where the
2526        candidates are expected to be either member or non member
2527        functions.  In this case the first argument ARGTYPES
2528        (representing 'this') is expected to be a reference to the
2529        target object, and will be dereferenced when attempting the
2530        non-member search.
2531
2532    In the case of class methods, the parameter OBJ is an object value
2533    in which to search for overloaded methods.
2534
2535    In the case of non-method functions, the parameter FSYM is a symbol
2536    corresponding to one of the overloaded functions.
2537
2538    Return value is an integer: 0 -> good match, 10 -> debugger applied
2539    non-standard coercions, 100 -> incompatible.
2540
2541    If a method is being searched for, VALP will hold the value.
2542    If a non-method is being searched for, SYMP will hold the symbol 
2543    for it.
2544
2545    If a method is being searched for, and it is a static method,
2546    then STATICP will point to a non-zero value.
2547
2548    If NO_ADL argument dependent lookup is disabled.  This is used to prevent
2549    ADL overload candidates when performing overload resolution for a fully
2550    qualified name.
2551
2552    Note: This function does *not* check the value of
2553    overload_resolution.  Caller must check it to see whether overload
2554    resolution is permitted.  */
2555
2556 int
2557 find_overload_match (struct value **args, int nargs,
2558                      const char *name, enum oload_search_type method,
2559                      struct value **objp, struct symbol *fsym,
2560                      struct value **valp, struct symbol **symp, 
2561                      int *staticp, const int no_adl)
2562 {
2563   struct value *obj = (objp ? *objp : NULL);
2564   struct type *obj_type = obj ? value_type (obj) : NULL;
2565   /* Index of best overloaded function.  */
2566   int func_oload_champ = -1;
2567   int method_oload_champ = -1;
2568
2569   /* The measure for the current best match.  */
2570   struct badness_vector *method_badness = NULL;
2571   struct badness_vector *func_badness = NULL;
2572
2573   struct value *temp = obj;
2574   /* For methods, the list of overloaded methods.  */
2575   struct fn_field *fns_ptr = NULL;
2576   /* For non-methods, the list of overloaded function symbols.  */
2577   struct symbol **oload_syms = NULL;
2578   /* Number of overloaded instances being considered.  */
2579   int num_fns = 0;
2580   struct type *basetype = NULL;
2581   int boffset;
2582
2583   struct cleanup *all_cleanups = make_cleanup (null_cleanup, NULL);
2584
2585   const char *obj_type_name = NULL;
2586   const char *func_name = NULL;
2587   enum oload_classification match_quality;
2588   enum oload_classification method_match_quality = INCOMPATIBLE;
2589   enum oload_classification func_match_quality = INCOMPATIBLE;
2590
2591   /* Get the list of overloaded methods or functions.  */
2592   if (method == METHOD || method == BOTH)
2593     {
2594       gdb_assert (obj);
2595
2596       /* OBJ may be a pointer value rather than the object itself.  */
2597       obj = coerce_ref (obj);
2598       while (TYPE_CODE (check_typedef (value_type (obj))) == TYPE_CODE_PTR)
2599         obj = coerce_ref (value_ind (obj));
2600       obj_type_name = TYPE_NAME (value_type (obj));
2601
2602       /* First check whether this is a data member, e.g. a pointer to
2603          a function.  */
2604       if (TYPE_CODE (check_typedef (value_type (obj))) == TYPE_CODE_STRUCT)
2605         {
2606           *valp = search_struct_field (name, obj, 0,
2607                                        check_typedef (value_type (obj)), 0);
2608           if (*valp)
2609             {
2610               *staticp = 1;
2611               do_cleanups (all_cleanups);
2612               return 0;
2613             }
2614         }
2615
2616       /* Retrieve the list of methods with the name NAME.  */
2617       fns_ptr = value_find_oload_method_list (&temp, name, 
2618                                               0, &num_fns, 
2619                                               &basetype, &boffset);
2620       /* If this is a method only search, and no methods were found
2621          the search has faild.  */
2622       if (method == METHOD && (!fns_ptr || !num_fns))
2623         error (_("Couldn't find method %s%s%s"),
2624                obj_type_name,
2625                (obj_type_name && *obj_type_name) ? "::" : "",
2626                name);
2627       /* If we are dealing with stub method types, they should have
2628          been resolved by find_method_list via
2629          value_find_oload_method_list above.  */
2630       if (fns_ptr)
2631         {
2632           gdb_assert (TYPE_DOMAIN_TYPE (fns_ptr[0].type) != NULL);
2633           method_oload_champ = find_oload_champ (args, nargs, method,
2634                                                  num_fns, fns_ptr,
2635                                                  oload_syms, &method_badness);
2636
2637           method_match_quality =
2638               classify_oload_match (method_badness, nargs,
2639                                     oload_method_static (method, fns_ptr,
2640                                                          method_oload_champ));
2641
2642           make_cleanup (xfree, method_badness);
2643         }
2644
2645     }
2646
2647   if (method == NON_METHOD || method == BOTH)
2648     {
2649       const char *qualified_name = NULL;
2650
2651       /* If the overload match is being search for both as a method
2652          and non member function, the first argument must now be
2653          dereferenced.  */
2654       if (method == BOTH)
2655         args[0] = value_ind (args[0]);
2656
2657       if (fsym)
2658         {
2659           qualified_name = SYMBOL_NATURAL_NAME (fsym);
2660
2661           /* If we have a function with a C++ name, try to extract just
2662              the function part.  Do not try this for non-functions (e.g.
2663              function pointers).  */
2664           if (qualified_name
2665               && TYPE_CODE (check_typedef (SYMBOL_TYPE (fsym)))
2666               == TYPE_CODE_FUNC)
2667             {
2668               char *temp;
2669
2670               temp = cp_func_name (qualified_name);
2671
2672               /* If cp_func_name did not remove anything, the name of the
2673                  symbol did not include scope or argument types - it was
2674                  probably a C-style function.  */
2675               if (temp)
2676                 {
2677                   make_cleanup (xfree, temp);
2678                   if (strcmp (temp, qualified_name) == 0)
2679                     func_name = NULL;
2680                   else
2681                     func_name = temp;
2682                 }
2683             }
2684         }
2685       else
2686         {
2687           func_name = name;
2688           qualified_name = name;
2689         }
2690
2691       /* If there was no C++ name, this must be a C-style function or
2692          not a function at all.  Just return the same symbol.  Do the
2693          same if cp_func_name fails for some reason.  */
2694       if (func_name == NULL)
2695         {
2696           *symp = fsym;
2697           do_cleanups (all_cleanups);
2698           return 0;
2699         }
2700
2701       func_oload_champ = find_oload_champ_namespace (args, nargs,
2702                                                      func_name,
2703                                                      qualified_name,
2704                                                      &oload_syms,
2705                                                      &func_badness,
2706                                                      no_adl);
2707
2708       if (func_oload_champ >= 0)
2709         func_match_quality = classify_oload_match (func_badness, nargs, 0);
2710
2711       make_cleanup (xfree, oload_syms);
2712       make_cleanup (xfree, func_badness);
2713     }
2714
2715   /* Did we find a match ?  */
2716   if (method_oload_champ == -1 && func_oload_champ == -1)
2717     throw_error (NOT_FOUND_ERROR,
2718                  _("No symbol \"%s\" in current context."),
2719                  name);
2720
2721   /* If we have found both a method match and a function
2722      match, find out which one is better, and calculate match
2723      quality.  */
2724   if (method_oload_champ >= 0 && func_oload_champ >= 0)
2725     {
2726       switch (compare_badness (func_badness, method_badness))
2727         {
2728           case 0: /* Top two contenders are equally good.  */
2729             /* FIXME: GDB does not support the general ambiguous case.
2730              All candidates should be collected and presented the
2731              user.  */
2732             error (_("Ambiguous overload resolution"));
2733             break;
2734           case 1: /* Incomparable top contenders.  */
2735             /* This is an error incompatible candidates
2736                should not have been proposed.  */
2737             error (_("Internal error: incompatible "
2738                      "overload candidates proposed"));
2739             break;
2740           case 2: /* Function champion.  */
2741             method_oload_champ = -1;
2742             match_quality = func_match_quality;
2743             break;
2744           case 3: /* Method champion.  */
2745             func_oload_champ = -1;
2746             match_quality = method_match_quality;
2747             break;
2748           default:
2749             error (_("Internal error: unexpected overload comparison result"));
2750             break;
2751         }
2752     }
2753   else
2754     {
2755       /* We have either a method match or a function match.  */
2756       if (method_oload_champ >= 0)
2757         match_quality = method_match_quality;
2758       else
2759         match_quality = func_match_quality;
2760     }
2761
2762   if (match_quality == INCOMPATIBLE)
2763     {
2764       if (method == METHOD)
2765         error (_("Cannot resolve method %s%s%s to any overloaded instance"),
2766                obj_type_name,
2767                (obj_type_name && *obj_type_name) ? "::" : "",
2768                name);
2769       else
2770         error (_("Cannot resolve function %s to any overloaded instance"),
2771                func_name);
2772     }
2773   else if (match_quality == NON_STANDARD)
2774     {
2775       if (method == METHOD)
2776         warning (_("Using non-standard conversion to match "
2777                    "method %s%s%s to supplied arguments"),
2778                  obj_type_name,
2779                  (obj_type_name && *obj_type_name) ? "::" : "",
2780                  name);
2781       else
2782         warning (_("Using non-standard conversion to match "
2783                    "function %s to supplied arguments"),
2784                  func_name);
2785     }
2786
2787   if (staticp != NULL)
2788     *staticp = oload_method_static (method, fns_ptr, method_oload_champ);
2789
2790   if (method_oload_champ >= 0)
2791     {
2792       if (TYPE_FN_FIELD_VIRTUAL_P (fns_ptr, method_oload_champ))
2793         *valp = value_virtual_fn_field (&temp, fns_ptr, method_oload_champ,
2794                                         basetype, boffset);
2795       else
2796         *valp = value_fn_field (&temp, fns_ptr, method_oload_champ,
2797                                 basetype, boffset);
2798     }
2799   else
2800     *symp = oload_syms[func_oload_champ];
2801
2802   if (objp)
2803     {
2804       struct type *temp_type = check_typedef (value_type (temp));
2805       struct type *objtype = check_typedef (obj_type);
2806
2807       if (TYPE_CODE (temp_type) != TYPE_CODE_PTR
2808           && (TYPE_CODE (objtype) == TYPE_CODE_PTR
2809               || TYPE_CODE (objtype) == TYPE_CODE_REF))
2810         {
2811           temp = value_addr (temp);
2812         }
2813       *objp = temp;
2814     }
2815
2816   do_cleanups (all_cleanups);
2817
2818   switch (match_quality)
2819     {
2820     case INCOMPATIBLE:
2821       return 100;
2822     case NON_STANDARD:
2823       return 10;
2824     default:                            /* STANDARD */
2825       return 0;
2826     }
2827 }
2828
2829 /* Find the best overload match, searching for FUNC_NAME in namespaces
2830    contained in QUALIFIED_NAME until it either finds a good match or
2831    runs out of namespaces.  It stores the overloaded functions in
2832    *OLOAD_SYMS, and the badness vector in *OLOAD_CHAMP_BV.  The
2833    calling function is responsible for freeing *OLOAD_SYMS and
2834    *OLOAD_CHAMP_BV.  If NO_ADL, argument dependent lookup is not 
2835    performned.  */
2836
2837 static int
2838 find_oload_champ_namespace (struct value **args, int nargs,
2839                             const char *func_name,
2840                             const char *qualified_name,
2841                             struct symbol ***oload_syms,
2842                             struct badness_vector **oload_champ_bv,
2843                             const int no_adl)
2844 {
2845   int oload_champ;
2846
2847   find_oload_champ_namespace_loop (args, nargs,
2848                                    func_name,
2849                                    qualified_name, 0,
2850                                    oload_syms, oload_champ_bv,
2851                                    &oload_champ,
2852                                    no_adl);
2853
2854   return oload_champ;
2855 }
2856
2857 /* Helper function for find_oload_champ_namespace; NAMESPACE_LEN is
2858    how deep we've looked for namespaces, and the champ is stored in
2859    OLOAD_CHAMP.  The return value is 1 if the champ is a good one, 0
2860    if it isn't.  Other arguments are the same as in
2861    find_oload_champ_namespace
2862
2863    It is the caller's responsibility to free *OLOAD_SYMS and
2864    *OLOAD_CHAMP_BV.  */
2865
2866 static int
2867 find_oload_champ_namespace_loop (struct value **args, int nargs,
2868                                  const char *func_name,
2869                                  const char *qualified_name,
2870                                  int namespace_len,
2871                                  struct symbol ***oload_syms,
2872                                  struct badness_vector **oload_champ_bv,
2873                                  int *oload_champ,
2874                                  const int no_adl)
2875 {
2876   int next_namespace_len = namespace_len;
2877   int searched_deeper = 0;
2878   int num_fns = 0;
2879   struct cleanup *old_cleanups;
2880   int new_oload_champ;
2881   struct symbol **new_oload_syms;
2882   struct badness_vector *new_oload_champ_bv;
2883   char *new_namespace;
2884
2885   if (next_namespace_len != 0)
2886     {
2887       gdb_assert (qualified_name[next_namespace_len] == ':');
2888       next_namespace_len +=  2;
2889     }
2890   next_namespace_len +=
2891     cp_find_first_component (qualified_name + next_namespace_len);
2892
2893   /* Initialize these to values that can safely be xfree'd.  */
2894   *oload_syms = NULL;
2895   *oload_champ_bv = NULL;
2896
2897   /* First, see if we have a deeper namespace we can search in.
2898      If we get a good match there, use it.  */
2899
2900   if (qualified_name[next_namespace_len] == ':')
2901     {
2902       searched_deeper = 1;
2903
2904       if (find_oload_champ_namespace_loop (args, nargs,
2905                                            func_name, qualified_name,
2906                                            next_namespace_len,
2907                                            oload_syms, oload_champ_bv,
2908                                            oload_champ, no_adl))
2909         {
2910           return 1;
2911         }
2912     };
2913
2914   /* If we reach here, either we're in the deepest namespace or we
2915      didn't find a good match in a deeper namespace.  But, in the
2916      latter case, we still have a bad match in a deeper namespace;
2917      note that we might not find any match at all in the current
2918      namespace.  (There's always a match in the deepest namespace,
2919      because this overload mechanism only gets called if there's a
2920      function symbol to start off with.)  */
2921
2922   old_cleanups = make_cleanup (xfree, *oload_syms);
2923   make_cleanup (xfree, *oload_champ_bv);
2924   new_namespace = alloca (namespace_len + 1);
2925   strncpy (new_namespace, qualified_name, namespace_len);
2926   new_namespace[namespace_len] = '\0';
2927   new_oload_syms = make_symbol_overload_list (func_name,
2928                                               new_namespace);
2929
2930   /* If we have reached the deepest level perform argument
2931      determined lookup.  */
2932   if (!searched_deeper && !no_adl)
2933     {
2934       int ix;
2935       struct type **arg_types;
2936
2937       /* Prepare list of argument types for overload resolution.  */
2938       arg_types = (struct type **)
2939         alloca (nargs * (sizeof (struct type *)));
2940       for (ix = 0; ix < nargs; ix++)
2941         arg_types[ix] = value_type (args[ix]);
2942       make_symbol_overload_list_adl (arg_types, nargs, func_name);
2943     }
2944
2945   while (new_oload_syms[num_fns])
2946     ++num_fns;
2947
2948   new_oload_champ = find_oload_champ (args, nargs, 0, num_fns,
2949                                       NULL, new_oload_syms,
2950                                       &new_oload_champ_bv);
2951
2952   /* Case 1: We found a good match.  Free earlier matches (if any),
2953      and return it.  Case 2: We didn't find a good match, but we're
2954      not the deepest function.  Then go with the bad match that the
2955      deeper function found.  Case 3: We found a bad match, and we're
2956      the deepest function.  Then return what we found, even though
2957      it's a bad match.  */
2958
2959   if (new_oload_champ != -1
2960       && classify_oload_match (new_oload_champ_bv, nargs, 0) == STANDARD)
2961     {
2962       *oload_syms = new_oload_syms;
2963       *oload_champ = new_oload_champ;
2964       *oload_champ_bv = new_oload_champ_bv;
2965       do_cleanups (old_cleanups);
2966       return 1;
2967     }
2968   else if (searched_deeper)
2969     {
2970       xfree (new_oload_syms);
2971       xfree (new_oload_champ_bv);
2972       discard_cleanups (old_cleanups);
2973       return 0;
2974     }
2975   else
2976     {
2977       *oload_syms = new_oload_syms;
2978       *oload_champ = new_oload_champ;
2979       *oload_champ_bv = new_oload_champ_bv;
2980       do_cleanups (old_cleanups);
2981       return 0;
2982     }
2983 }
2984
2985 /* Look for a function to take NARGS args of ARGS.  Find
2986    the best match from among the overloaded methods or functions
2987    (depending on METHOD) given by FNS_PTR or OLOAD_SYMS, respectively.
2988    The number of methods/functions in the list is given by NUM_FNS.
2989    Return the index of the best match; store an indication of the
2990    quality of the match in OLOAD_CHAMP_BV.
2991
2992    It is the caller's responsibility to free *OLOAD_CHAMP_BV.  */
2993
2994 static int
2995 find_oload_champ (struct value **args, int nargs, int method,
2996                   int num_fns, struct fn_field *fns_ptr,
2997                   struct symbol **oload_syms,
2998                   struct badness_vector **oload_champ_bv)
2999 {
3000   int ix;
3001   /* A measure of how good an overloaded instance is.  */
3002   struct badness_vector *bv;
3003   /* Index of best overloaded function.  */
3004   int oload_champ = -1;
3005   /* Current ambiguity state for overload resolution.  */
3006   int oload_ambiguous = 0;
3007   /* 0 => no ambiguity, 1 => two good funcs, 2 => incomparable funcs.  */
3008
3009   *oload_champ_bv = NULL;
3010
3011   /* Consider each candidate in turn.  */
3012   for (ix = 0; ix < num_fns; ix++)
3013     {
3014       int jj;
3015       int static_offset = oload_method_static (method, fns_ptr, ix);
3016       int nparms;
3017       struct type **parm_types;
3018
3019       if (method)
3020         {
3021           nparms = TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (fns_ptr, ix));
3022         }
3023       else
3024         {
3025           /* If it's not a method, this is the proper place.  */
3026           nparms = TYPE_NFIELDS (SYMBOL_TYPE (oload_syms[ix]));
3027         }
3028
3029       /* Prepare array of parameter types.  */
3030       parm_types = (struct type **) 
3031         xmalloc (nparms * (sizeof (struct type *)));
3032       for (jj = 0; jj < nparms; jj++)
3033         parm_types[jj] = (method
3034                           ? (TYPE_FN_FIELD_ARGS (fns_ptr, ix)[jj].type)
3035                           : TYPE_FIELD_TYPE (SYMBOL_TYPE (oload_syms[ix]), 
3036                                              jj));
3037
3038       /* Compare parameter types to supplied argument types.  Skip
3039          THIS for static methods.  */
3040       bv = rank_function (parm_types, nparms, 
3041                           args + static_offset,
3042                           nargs - static_offset);
3043
3044       if (!*oload_champ_bv)
3045         {
3046           *oload_champ_bv = bv;
3047           oload_champ = 0;
3048         }
3049       else /* See whether current candidate is better or worse than
3050               previous best.  */
3051         switch (compare_badness (bv, *oload_champ_bv))
3052           {
3053           case 0:               /* Top two contenders are equally good.  */
3054             oload_ambiguous = 1;
3055             break;
3056           case 1:               /* Incomparable top contenders.  */
3057             oload_ambiguous = 2;
3058             break;
3059           case 2:               /* New champion, record details.  */
3060             *oload_champ_bv = bv;
3061             oload_ambiguous = 0;
3062             oload_champ = ix;
3063             break;
3064           case 3:
3065           default:
3066             break;
3067           }
3068       xfree (parm_types);
3069       if (overload_debug)
3070         {
3071           if (method)
3072             fprintf_filtered (gdb_stderr,
3073                               "Overloaded method instance %s, # of parms %d\n",
3074                               fns_ptr[ix].physname, nparms);
3075           else
3076             fprintf_filtered (gdb_stderr,
3077                               "Overloaded function instance "
3078                               "%s # of parms %d\n",
3079                               SYMBOL_DEMANGLED_NAME (oload_syms[ix]), 
3080                               nparms);
3081           for (jj = 0; jj < nargs - static_offset; jj++)
3082             fprintf_filtered (gdb_stderr,
3083                               "...Badness @ %d : %d\n", 
3084                               jj, bv->rank[jj].rank);
3085           fprintf_filtered (gdb_stderr, "Overload resolution "
3086                             "champion is %d, ambiguous? %d\n", 
3087                             oload_champ, oload_ambiguous);
3088         }
3089     }
3090
3091   return oload_champ;
3092 }
3093
3094 /* Return 1 if we're looking at a static method, 0 if we're looking at
3095    a non-static method or a function that isn't a method.  */
3096
3097 static int
3098 oload_method_static (int method, struct fn_field *fns_ptr, int index)
3099 {
3100   if (method && fns_ptr && index >= 0
3101       && TYPE_FN_FIELD_STATIC_P (fns_ptr, index))
3102     return 1;
3103   else
3104     return 0;
3105 }
3106
3107 /* Check how good an overload match OLOAD_CHAMP_BV represents.  */
3108
3109 static enum oload_classification
3110 classify_oload_match (struct badness_vector *oload_champ_bv,
3111                       int nargs,
3112                       int static_offset)
3113 {
3114   int ix;
3115   enum oload_classification worst = STANDARD;
3116
3117   for (ix = 1; ix <= nargs - static_offset; ix++)
3118     {
3119       /* If this conversion is as bad as INCOMPATIBLE_TYPE_BADNESS
3120          or worse return INCOMPATIBLE.  */
3121       if (compare_ranks (oload_champ_bv->rank[ix],
3122                          INCOMPATIBLE_TYPE_BADNESS) <= 0)
3123         return INCOMPATIBLE;    /* Truly mismatched types.  */
3124       /* Otherwise If this conversion is as bad as
3125          NS_POINTER_CONVERSION_BADNESS or worse return NON_STANDARD.  */
3126       else if (compare_ranks (oload_champ_bv->rank[ix],
3127                               NS_POINTER_CONVERSION_BADNESS) <= 0)
3128         worst = NON_STANDARD;   /* Non-standard type conversions
3129                                    needed.  */
3130     }
3131
3132   /* If no INCOMPATIBLE classification was found, return the worst one
3133      that was found (if any).  */
3134   return worst;
3135 }
3136
3137 /* C++: return 1 is NAME is a legitimate name for the destructor of
3138    type TYPE.  If TYPE does not have a destructor, or if NAME is
3139    inappropriate for TYPE, an error is signaled.  Parameter TYPE should not yet
3140    have CHECK_TYPEDEF applied, this function will apply it itself.  */
3141
3142 int
3143 destructor_name_p (const char *name, struct type *type)
3144 {
3145   if (name[0] == '~')
3146     {
3147       const char *dname = type_name_no_tag_or_error (type);
3148       const char *cp = strchr (dname, '<');
3149       unsigned int len;
3150
3151       /* Do not compare the template part for template classes.  */
3152       if (cp == NULL)
3153         len = strlen (dname);
3154       else
3155         len = cp - dname;
3156       if (strlen (name + 1) != len || strncmp (dname, name + 1, len) != 0)
3157         error (_("name of destructor must equal name of class"));
3158       else
3159         return 1;
3160     }
3161   return 0;
3162 }
3163
3164 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
3165    return the appropriate member (or the address of the member, if
3166    WANT_ADDRESS).  This function is used to resolve user expressions
3167    of the form "DOMAIN::NAME".  For more details on what happens, see
3168    the comment before value_struct_elt_for_reference.  */
3169
3170 struct value *
3171 value_aggregate_elt (struct type *curtype, char *name,
3172                      struct type *expect_type, int want_address,
3173                      enum noside noside)
3174 {
3175   switch (TYPE_CODE (curtype))
3176     {
3177     case TYPE_CODE_STRUCT:
3178     case TYPE_CODE_UNION:
3179       return value_struct_elt_for_reference (curtype, 0, curtype, 
3180                                              name, expect_type,
3181                                              want_address, noside);
3182     case TYPE_CODE_NAMESPACE:
3183       return value_namespace_elt (curtype, name, 
3184                                   want_address, noside);
3185     default:
3186       internal_error (__FILE__, __LINE__,
3187                       _("non-aggregate type in value_aggregate_elt"));
3188     }
3189 }
3190
3191 /* Compares the two method/function types T1 and T2 for "equality" 
3192    with respect to the methods' parameters.  If the types of the
3193    two parameter lists are the same, returns 1; 0 otherwise.  This
3194    comparison may ignore any artificial parameters in T1 if
3195    SKIP_ARTIFICIAL is non-zero.  This function will ALWAYS skip
3196    the first artificial parameter in T1, assumed to be a 'this' pointer.
3197
3198    The type T2 is expected to have come from make_params (in eval.c).  */
3199
3200 static int
3201 compare_parameters (struct type *t1, struct type *t2, int skip_artificial)
3202 {
3203   int start = 0;
3204
3205   if (TYPE_NFIELDS (t1) > 0 && TYPE_FIELD_ARTIFICIAL (t1, 0))
3206     ++start;
3207
3208   /* If skipping artificial fields, find the first real field
3209      in T1.  */
3210   if (skip_artificial)
3211     {
3212       while (start < TYPE_NFIELDS (t1)
3213              && TYPE_FIELD_ARTIFICIAL (t1, start))
3214         ++start;
3215     }
3216
3217   /* Now compare parameters.  */
3218
3219   /* Special case: a method taking void.  T1 will contain no
3220      non-artificial fields, and T2 will contain TYPE_CODE_VOID.  */
3221   if ((TYPE_NFIELDS (t1) - start) == 0 && TYPE_NFIELDS (t2) == 1
3222       && TYPE_CODE (TYPE_FIELD_TYPE (t2, 0)) == TYPE_CODE_VOID)
3223     return 1;
3224
3225   if ((TYPE_NFIELDS (t1) - start) == TYPE_NFIELDS (t2))
3226     {
3227       int i;
3228
3229       for (i = 0; i < TYPE_NFIELDS (t2); ++i)
3230         {
3231           if (compare_ranks (rank_one_type (TYPE_FIELD_TYPE (t1, start + i),
3232                                             TYPE_FIELD_TYPE (t2, i), NULL),
3233                              EXACT_MATCH_BADNESS) != 0)
3234             return 0;
3235         }
3236
3237       return 1;
3238     }
3239
3240   return 0;
3241 }
3242
3243 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
3244    return the address of this member as a "pointer to member" type.
3245    If INTYPE is non-null, then it will be the type of the member we
3246    are looking for.  This will help us resolve "pointers to member
3247    functions".  This function is used to resolve user expressions of
3248    the form "DOMAIN::NAME".  */
3249
3250 static struct value *
3251 value_struct_elt_for_reference (struct type *domain, int offset,
3252                                 struct type *curtype, char *name,
3253                                 struct type *intype, 
3254                                 int want_address,
3255                                 enum noside noside)
3256 {
3257   struct type *t = curtype;
3258   int i;
3259   struct value *v, *result;
3260
3261   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
3262       && TYPE_CODE (t) != TYPE_CODE_UNION)
3263     error (_("Internal error: non-aggregate type "
3264              "to value_struct_elt_for_reference"));
3265
3266   for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
3267     {
3268       const char *t_field_name = TYPE_FIELD_NAME (t, i);
3269
3270       if (t_field_name && strcmp (t_field_name, name) == 0)
3271         {
3272           if (field_is_static (&TYPE_FIELD (t, i)))
3273             {
3274               v = value_static_field (t, i);
3275               if (v == NULL)
3276                 error (_("static field %s has been optimized out"),
3277                        name);
3278               if (want_address)
3279                 v = value_addr (v);
3280               return v;
3281             }
3282           if (TYPE_FIELD_PACKED (t, i))
3283             error (_("pointers to bitfield members not allowed"));
3284
3285           if (want_address)
3286             return value_from_longest
3287               (lookup_memberptr_type (TYPE_FIELD_TYPE (t, i), domain),
3288                offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
3289           else if (noside == EVAL_AVOID_SIDE_EFFECTS)
3290             return allocate_value (TYPE_FIELD_TYPE (t, i));
3291           else
3292             error (_("Cannot reference non-static field \"%s\""), name);
3293         }
3294     }
3295
3296   /* C++: If it was not found as a data field, then try to return it
3297      as a pointer to a method.  */
3298
3299   /* Perform all necessary dereferencing.  */
3300   while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
3301     intype = TYPE_TARGET_TYPE (intype);
3302
3303   for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
3304     {
3305       const char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
3306       char dem_opname[64];
3307
3308       if (strncmp (t_field_name, "__", 2) == 0 
3309           || strncmp (t_field_name, "op", 2) == 0 
3310           || strncmp (t_field_name, "type", 4) == 0)
3311         {
3312           if (cplus_demangle_opname (t_field_name, 
3313                                      dem_opname, DMGL_ANSI))
3314             t_field_name = dem_opname;
3315           else if (cplus_demangle_opname (t_field_name, 
3316                                           dem_opname, 0))
3317             t_field_name = dem_opname;
3318         }
3319       if (t_field_name && strcmp (t_field_name, name) == 0)
3320         {
3321           int j;
3322           int len = TYPE_FN_FIELDLIST_LENGTH (t, i);
3323           struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
3324
3325           check_stub_method_group (t, i);
3326
3327           if (intype)
3328             {
3329               for (j = 0; j < len; ++j)
3330                 {
3331                   if (compare_parameters (TYPE_FN_FIELD_TYPE (f, j), intype, 0)
3332                       || compare_parameters (TYPE_FN_FIELD_TYPE (f, j),
3333                                              intype, 1))
3334                     break;
3335                 }
3336
3337               if (j == len)
3338                 error (_("no member function matches "
3339                          "that type instantiation"));
3340             }
3341           else
3342             {
3343               int ii;
3344
3345               j = -1;
3346               for (ii = 0; ii < len; ++ii)
3347                 {
3348                   /* Skip artificial methods.  This is necessary if,
3349                      for example, the user wants to "print
3350                      subclass::subclass" with only one user-defined
3351                      constructor.  There is no ambiguity in this case.
3352                      We are careful here to allow artificial methods
3353                      if they are the unique result.  */
3354                   if (TYPE_FN_FIELD_ARTIFICIAL (f, ii))
3355                     {
3356                       if (j == -1)
3357                         j = ii;
3358                       continue;
3359                     }
3360
3361                   /* Desired method is ambiguous if more than one
3362                      method is defined.  */
3363                   if (j != -1 && !TYPE_FN_FIELD_ARTIFICIAL (f, j))
3364                     error (_("non-unique member `%s' requires "
3365                              "type instantiation"), name);
3366
3367                   j = ii;
3368                 }
3369
3370               if (j == -1)
3371                 error (_("no matching member function"));
3372             }
3373
3374           if (TYPE_FN_FIELD_STATIC_P (f, j))
3375             {
3376               struct symbol *s = 
3377                 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
3378                                0, VAR_DOMAIN, 0);
3379
3380               if (s == NULL)
3381                 return NULL;
3382
3383               if (want_address)
3384                 return value_addr (read_var_value (s, 0));
3385               else
3386                 return read_var_value (s, 0);
3387             }
3388
3389           if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
3390             {
3391               if (want_address)
3392                 {
3393                   result = allocate_value
3394                     (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
3395                   cplus_make_method_ptr (value_type (result),
3396                                          value_contents_writeable (result),
3397                                          TYPE_FN_FIELD_VOFFSET (f, j), 1);
3398                 }
3399               else if (noside == EVAL_AVOID_SIDE_EFFECTS)
3400                 return allocate_value (TYPE_FN_FIELD_TYPE (f, j));
3401               else
3402                 error (_("Cannot reference virtual member function \"%s\""),
3403                        name);
3404             }
3405           else
3406             {
3407               struct symbol *s = 
3408                 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
3409                                0, VAR_DOMAIN, 0);
3410
3411               if (s == NULL)
3412                 return NULL;
3413
3414               v = read_var_value (s, 0);
3415               if (!want_address)
3416                 result = v;
3417               else
3418                 {
3419                   result = allocate_value (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
3420                   cplus_make_method_ptr (value_type (result),
3421                                          value_contents_writeable (result),
3422                                          value_address (v), 0);
3423                 }
3424             }
3425           return result;
3426         }
3427     }
3428   for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
3429     {
3430       struct value *v;
3431       int base_offset;
3432
3433       if (BASETYPE_VIA_VIRTUAL (t, i))
3434         base_offset = 0;
3435       else
3436         base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
3437       v = value_struct_elt_for_reference (domain,
3438                                           offset + base_offset,
3439                                           TYPE_BASECLASS (t, i),
3440                                           name, intype, 
3441                                           want_address, noside);
3442       if (v)
3443         return v;
3444     }
3445
3446   /* As a last chance, pretend that CURTYPE is a namespace, and look
3447      it up that way; this (frequently) works for types nested inside
3448      classes.  */
3449
3450   return value_maybe_namespace_elt (curtype, name, 
3451                                     want_address, noside);
3452 }
3453
3454 /* C++: Return the member NAME of the namespace given by the type
3455    CURTYPE.  */
3456
3457 static struct value *
3458 value_namespace_elt (const struct type *curtype,
3459                      char *name, int want_address,
3460                      enum noside noside)
3461 {
3462   struct value *retval = value_maybe_namespace_elt (curtype, name,
3463                                                     want_address, 
3464                                                     noside);
3465
3466   if (retval == NULL)
3467     error (_("No symbol \"%s\" in namespace \"%s\"."), 
3468            name, TYPE_TAG_NAME (curtype));
3469
3470   return retval;
3471 }
3472
3473 /* A helper function used by value_namespace_elt and
3474    value_struct_elt_for_reference.  It looks up NAME inside the
3475    context CURTYPE; this works if CURTYPE is a namespace or if CURTYPE
3476    is a class and NAME refers to a type in CURTYPE itself (as opposed
3477    to, say, some base class of CURTYPE).  */
3478
3479 static struct value *
3480 value_maybe_namespace_elt (const struct type *curtype,
3481                            char *name, int want_address,
3482                            enum noside noside)
3483 {
3484   const char *namespace_name = TYPE_TAG_NAME (curtype);
3485   struct symbol *sym;
3486   struct value *result;
3487
3488   sym = cp_lookup_symbol_namespace (namespace_name, name,
3489                                     get_selected_block (0), VAR_DOMAIN);
3490
3491   if (sym == NULL)
3492     {
3493       char *concatenated_name = alloca (strlen (namespace_name) + 2
3494                                         + strlen (name) + 1);
3495
3496       sprintf (concatenated_name, "%s::%s", namespace_name, name);
3497       sym = lookup_static_symbol_aux (concatenated_name, VAR_DOMAIN);
3498     }
3499
3500   if (sym == NULL)
3501     return NULL;
3502   else if ((noside == EVAL_AVOID_SIDE_EFFECTS)
3503            && (SYMBOL_CLASS (sym) == LOC_TYPEDEF))
3504     result = allocate_value (SYMBOL_TYPE (sym));
3505   else
3506     result = value_of_variable (sym, get_selected_block (0));
3507
3508   if (result && want_address)
3509     result = value_addr (result);
3510
3511   return result;
3512 }
3513
3514 /* Given a pointer or a reference value V, find its real (RTTI) type.
3515
3516    Other parameters FULL, TOP, USING_ENC as with value_rtti_type()
3517    and refer to the values computed for the object pointed to.  */
3518
3519 struct type *
3520 value_rtti_indirect_type (struct value *v, int *full, 
3521                           int *top, int *using_enc)
3522 {
3523   struct value *target;
3524   struct type *type, *real_type, *target_type;
3525
3526   type = value_type (v);
3527   type = check_typedef (type);
3528   if (TYPE_CODE (type) == TYPE_CODE_REF)
3529     target = coerce_ref (v);
3530   else if (TYPE_CODE (type) == TYPE_CODE_PTR)
3531     target = value_ind (v);
3532   else
3533     return NULL;
3534
3535   real_type = value_rtti_type (target, full, top, using_enc);
3536
3537   if (real_type)
3538     {
3539       /* Copy qualifiers to the referenced object.  */
3540       target_type = value_type (target);
3541       real_type = make_cv_type (TYPE_CONST (target_type),
3542                                 TYPE_VOLATILE (target_type), real_type, NULL);
3543       if (TYPE_CODE (type) == TYPE_CODE_REF)
3544         real_type = lookup_reference_type (real_type);
3545       else if (TYPE_CODE (type) == TYPE_CODE_PTR)
3546         real_type = lookup_pointer_type (real_type);
3547       else
3548         internal_error (__FILE__, __LINE__, _("Unexpected value type."));
3549
3550       /* Copy qualifiers to the pointer/reference.  */
3551       real_type = make_cv_type (TYPE_CONST (type), TYPE_VOLATILE (type),
3552                                 real_type, NULL);
3553     }
3554
3555   return real_type;
3556 }
3557
3558 /* Given a value pointed to by ARGP, check its real run-time type, and
3559    if that is different from the enclosing type, create a new value
3560    using the real run-time type as the enclosing type (and of the same
3561    type as ARGP) and return it, with the embedded offset adjusted to
3562    be the correct offset to the enclosed object.  RTYPE is the type,
3563    and XFULL, XTOP, and XUSING_ENC are the other parameters, computed
3564    by value_rtti_type().  If these are available, they can be supplied
3565    and a second call to value_rtti_type() is avoided.  (Pass RTYPE ==
3566    NULL if they're not available.  */
3567
3568 struct value *
3569 value_full_object (struct value *argp, 
3570                    struct type *rtype, 
3571                    int xfull, int xtop,
3572                    int xusing_enc)
3573 {
3574   struct type *real_type;
3575   int full = 0;
3576   int top = -1;
3577   int using_enc = 0;
3578   struct value *new_val;
3579
3580   if (rtype)
3581     {
3582       real_type = rtype;
3583       full = xfull;
3584       top = xtop;
3585       using_enc = xusing_enc;
3586     }
3587   else
3588     real_type = value_rtti_type (argp, &full, &top, &using_enc);
3589
3590   /* If no RTTI data, or if object is already complete, do nothing.  */
3591   if (!real_type || real_type == value_enclosing_type (argp))
3592     return argp;
3593
3594   /* In a destructor we might see a real type that is a superclass of
3595      the object's type.  In this case it is better to leave the object
3596      as-is.  */
3597   if (full
3598       && TYPE_LENGTH (real_type) < TYPE_LENGTH (value_enclosing_type (argp)))
3599     return argp;
3600
3601   /* If we have the full object, but for some reason the enclosing
3602      type is wrong, set it.  */
3603   /* pai: FIXME -- sounds iffy */
3604   if (full)
3605     {
3606       argp = value_copy (argp);
3607       set_value_enclosing_type (argp, real_type);
3608       return argp;
3609     }
3610
3611   /* Check if object is in memory.  */
3612   if (VALUE_LVAL (argp) != lval_memory)
3613     {
3614       warning (_("Couldn't retrieve complete object of RTTI "
3615                  "type %s; object may be in register(s)."), 
3616                TYPE_NAME (real_type));
3617
3618       return argp;
3619     }
3620
3621   /* All other cases -- retrieve the complete object.  */
3622   /* Go back by the computed top_offset from the beginning of the
3623      object, adjusting for the embedded offset of argp if that's what
3624      value_rtti_type used for its computation.  */
3625   new_val = value_at_lazy (real_type, value_address (argp) - top +
3626                            (using_enc ? 0 : value_embedded_offset (argp)));
3627   deprecated_set_value_type (new_val, value_type (argp));
3628   set_value_embedded_offset (new_val, (using_enc
3629                                        ? top + value_embedded_offset (argp)
3630                                        : top));
3631   return new_val;
3632 }
3633
3634
3635 /* Return the value of the local variable, if one exists.  Throw error
3636    otherwise, such as if the request is made in an inappropriate context.  */
3637
3638 struct value *
3639 value_of_this (const struct language_defn *lang)
3640 {
3641   struct symbol *sym;
3642   struct block *b;
3643   struct frame_info *frame;
3644
3645   if (!lang->la_name_of_this)
3646     error (_("no `this' in current language"));
3647
3648   frame = get_selected_frame (_("no frame selected"));
3649
3650   b = get_frame_block (frame, NULL);
3651
3652   sym = lookup_language_this (lang, b);
3653   if (sym == NULL)
3654     error (_("current stack frame does not contain a variable named `%s'"),
3655            lang->la_name_of_this);
3656
3657   return read_var_value (sym, frame);
3658 }
3659
3660 /* Return the value of the local variable, if one exists.  Return NULL
3661    otherwise.  Never throw error.  */
3662
3663 struct value *
3664 value_of_this_silent (const struct language_defn *lang)
3665 {
3666   struct value *ret = NULL;
3667   volatile struct gdb_exception except;
3668
3669   TRY_CATCH (except, RETURN_MASK_ERROR)
3670     {
3671       ret = value_of_this (lang);
3672     }
3673
3674   return ret;
3675 }
3676
3677 /* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH
3678    elements long, starting at LOWBOUND.  The result has the same lower
3679    bound as the original ARRAY.  */
3680
3681 struct value *
3682 value_slice (struct value *array, int lowbound, int length)
3683 {
3684   struct type *slice_range_type, *slice_type, *range_type;
3685   LONGEST lowerbound, upperbound;
3686   struct value *slice;
3687   struct type *array_type;
3688
3689   array_type = check_typedef (value_type (array));
3690   if (TYPE_CODE (array_type) != TYPE_CODE_ARRAY
3691       && TYPE_CODE (array_type) != TYPE_CODE_STRING)
3692     error (_("cannot take slice of non-array"));
3693
3694   range_type = TYPE_INDEX_TYPE (array_type);
3695   if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
3696     error (_("slice from bad array or bitstring"));
3697
3698   if (lowbound < lowerbound || length < 0
3699       || lowbound + length - 1 > upperbound)
3700     error (_("slice out of range"));
3701
3702   /* FIXME-type-allocation: need a way to free this type when we are
3703      done with it.  */
3704   slice_range_type = create_range_type ((struct type *) NULL,
3705                                         TYPE_TARGET_TYPE (range_type),
3706                                         lowbound, 
3707                                         lowbound + length - 1);
3708
3709     {
3710       struct type *element_type = TYPE_TARGET_TYPE (array_type);
3711       LONGEST offset =
3712         (lowbound - lowerbound) * TYPE_LENGTH (check_typedef (element_type));
3713
3714       slice_type = create_array_type ((struct type *) NULL, 
3715                                       element_type,
3716                                       slice_range_type);
3717       TYPE_CODE (slice_type) = TYPE_CODE (array_type);
3718
3719       if (VALUE_LVAL (array) == lval_memory && value_lazy (array))
3720         slice = allocate_value_lazy (slice_type);
3721       else
3722         {
3723           slice = allocate_value (slice_type);
3724           value_contents_copy (slice, 0, array, offset,
3725                                TYPE_LENGTH (slice_type));
3726         }
3727
3728       set_value_component_location (slice, array);
3729       VALUE_FRAME_ID (slice) = VALUE_FRAME_ID (array);
3730       set_value_offset (slice, value_offset (array) + offset);
3731     }
3732   return slice;
3733 }
3734
3735 /* Create a value for a FORTRAN complex number.  Currently most of the
3736    time values are coerced to COMPLEX*16 (i.e. a complex number
3737    composed of 2 doubles.  This really should be a smarter routine
3738    that figures out precision inteligently as opposed to assuming
3739    doubles.  FIXME: fmb  */
3740
3741 struct value *
3742 value_literal_complex (struct value *arg1, 
3743                        struct value *arg2,
3744                        struct type *type)
3745 {
3746   struct value *val;
3747   struct type *real_type = TYPE_TARGET_TYPE (type);
3748
3749   val = allocate_value (type);
3750   arg1 = value_cast (real_type, arg1);
3751   arg2 = value_cast (real_type, arg2);
3752
3753   memcpy (value_contents_raw (val),
3754           value_contents (arg1), TYPE_LENGTH (real_type));
3755   memcpy (value_contents_raw (val) + TYPE_LENGTH (real_type),
3756           value_contents (arg2), TYPE_LENGTH (real_type));
3757   return val;
3758 }
3759
3760 /* Cast a value into the appropriate complex data type.  */
3761
3762 static struct value *
3763 cast_into_complex (struct type *type, struct value *val)
3764 {
3765   struct type *real_type = TYPE_TARGET_TYPE (type);
3766
3767   if (TYPE_CODE (value_type (val)) == TYPE_CODE_COMPLEX)
3768     {
3769       struct type *val_real_type = TYPE_TARGET_TYPE (value_type (val));
3770       struct value *re_val = allocate_value (val_real_type);
3771       struct value *im_val = allocate_value (val_real_type);
3772
3773       memcpy (value_contents_raw (re_val),
3774               value_contents (val), TYPE_LENGTH (val_real_type));
3775       memcpy (value_contents_raw (im_val),
3776               value_contents (val) + TYPE_LENGTH (val_real_type),
3777               TYPE_LENGTH (val_real_type));
3778
3779       return value_literal_complex (re_val, im_val, type);
3780     }
3781   else if (TYPE_CODE (value_type (val)) == TYPE_CODE_FLT
3782            || TYPE_CODE (value_type (val)) == TYPE_CODE_INT)
3783     return value_literal_complex (val, 
3784                                   value_zero (real_type, not_lval), 
3785                                   type);
3786   else
3787     error (_("cannot cast non-number to complex"));
3788 }
3789
3790 void
3791 _initialize_valops (void)
3792 {
3793   add_setshow_boolean_cmd ("overload-resolution", class_support,
3794                            &overload_resolution, _("\
3795 Set overload resolution in evaluating C++ functions."), _("\
3796 Show overload resolution in evaluating C++ functions."), 
3797                            NULL, NULL,
3798                            show_overload_resolution,
3799                            &setlist, &showlist);
3800   overload_resolution = 1;
3801 }