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