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