refactoring: rename create_range_type to create_static_range_type
[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
905 static struct value *
906 get_value_at (struct type *type, CORE_ADDR addr, int lazy)
907 {
908   struct value *val;
909
910   if (TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
911     error (_("Attempt to dereference a generic pointer."));
912
913   val = value_from_contents_and_address (type, NULL, addr);
914
915   if (!lazy)
916     value_fetch_lazy (val);
917
918   return val;
919 }
920
921 /* Return a value with type TYPE located at ADDR.
922
923    Call value_at only if the data needs to be fetched immediately;
924    if we can be 'lazy' and defer the fetch, perhaps indefinately, call
925    value_at_lazy instead.  value_at_lazy simply records the address of
926    the data and sets the lazy-evaluation-required flag.  The lazy flag
927    is tested in the value_contents macro, which is used if and when
928    the contents are actually required.
929
930    Note: value_at does *NOT* handle embedded offsets; perform such
931    adjustments before or after calling it.  */
932
933 struct value *
934 value_at (struct type *type, CORE_ADDR addr)
935 {
936   return get_value_at (type, addr, 0);
937 }
938
939 /* Return a lazy value with type TYPE located at ADDR (cf. value_at).  */
940
941 struct value *
942 value_at_lazy (struct type *type, CORE_ADDR addr)
943 {
944   return get_value_at (type, addr, 1);
945 }
946
947 void
948 read_value_memory (struct value *val, int embedded_offset,
949                    int stack, CORE_ADDR memaddr,
950                    gdb_byte *buffer, size_t length)
951 {
952   ULONGEST xfered = 0;
953
954   while (xfered < length)
955     {
956       enum target_xfer_status status;
957       ULONGEST xfered_len;
958
959       status = target_xfer_partial (current_target.beneath,
960                                     TARGET_OBJECT_MEMORY, NULL,
961                                     buffer + xfered, NULL,
962                                     memaddr + xfered, length - xfered,
963                                     &xfered_len);
964
965       if (status == TARGET_XFER_OK)
966         /* nothing */;
967       else if (status == TARGET_XFER_UNAVAILABLE)
968         mark_value_bytes_unavailable (val, embedded_offset + xfered,
969                                       xfered_len);
970       else if (status == TARGET_XFER_EOF)
971         memory_error (TARGET_XFER_E_IO, memaddr + xfered);
972       else
973         memory_error (status, memaddr + xfered);
974
975       xfered += xfered_len;
976       QUIT;
977     }
978 }
979
980 /* Store the contents of FROMVAL into the location of TOVAL.
981    Return a new value with the location of TOVAL and contents of FROMVAL.  */
982
983 struct value *
984 value_assign (struct value *toval, struct value *fromval)
985 {
986   struct type *type;
987   struct value *val;
988   struct frame_id old_frame;
989
990   if (!deprecated_value_modifiable (toval))
991     error (_("Left operand of assignment is not a modifiable lvalue."));
992
993   toval = coerce_ref (toval);
994
995   type = value_type (toval);
996   if (VALUE_LVAL (toval) != lval_internalvar)
997     fromval = value_cast (type, fromval);
998   else
999     {
1000       /* Coerce arrays and functions to pointers, except for arrays
1001          which only live in GDB's storage.  */
1002       if (!value_must_coerce_to_target (fromval))
1003         fromval = coerce_array (fromval);
1004     }
1005
1006   CHECK_TYPEDEF (type);
1007
1008   /* Since modifying a register can trash the frame chain, and
1009      modifying memory can trash the frame cache, we save the old frame
1010      and then restore the new frame afterwards.  */
1011   old_frame = get_frame_id (deprecated_safe_get_selected_frame ());
1012
1013   switch (VALUE_LVAL (toval))
1014     {
1015     case lval_internalvar:
1016       set_internalvar (VALUE_INTERNALVAR (toval), fromval);
1017       return value_of_internalvar (get_type_arch (type),
1018                                    VALUE_INTERNALVAR (toval));
1019
1020     case lval_internalvar_component:
1021       {
1022         int offset = value_offset (toval);
1023
1024         /* Are we dealing with a bitfield?
1025
1026            It is important to mention that `value_parent (toval)' is
1027            non-NULL iff `value_bitsize (toval)' is non-zero.  */
1028         if (value_bitsize (toval))
1029           {
1030             /* VALUE_INTERNALVAR below refers to the parent value, while
1031                the offset is relative to this parent value.  */
1032             gdb_assert (value_parent (value_parent (toval)) == NULL);
1033             offset += value_offset (value_parent (toval));
1034           }
1035
1036         set_internalvar_component (VALUE_INTERNALVAR (toval),
1037                                    offset,
1038                                    value_bitpos (toval),
1039                                    value_bitsize (toval),
1040                                    fromval);
1041       }
1042       break;
1043
1044     case lval_memory:
1045       {
1046         const gdb_byte *dest_buffer;
1047         CORE_ADDR changed_addr;
1048         int changed_len;
1049         gdb_byte buffer[sizeof (LONGEST)];
1050
1051         if (value_bitsize (toval))
1052           {
1053             struct value *parent = value_parent (toval);
1054
1055             changed_addr = value_address (parent) + value_offset (toval);
1056             changed_len = (value_bitpos (toval)
1057                            + value_bitsize (toval)
1058                            + HOST_CHAR_BIT - 1)
1059               / HOST_CHAR_BIT;
1060
1061             /* If we can read-modify-write exactly the size of the
1062                containing type (e.g. short or int) then do so.  This
1063                is safer for volatile bitfields mapped to hardware
1064                registers.  */
1065             if (changed_len < TYPE_LENGTH (type)
1066                 && TYPE_LENGTH (type) <= (int) sizeof (LONGEST)
1067                 && ((LONGEST) changed_addr % TYPE_LENGTH (type)) == 0)
1068               changed_len = TYPE_LENGTH (type);
1069
1070             if (changed_len > (int) sizeof (LONGEST))
1071               error (_("Can't handle bitfields which "
1072                        "don't fit in a %d bit word."),
1073                      (int) sizeof (LONGEST) * HOST_CHAR_BIT);
1074
1075             read_memory (changed_addr, buffer, changed_len);
1076             modify_field (type, buffer, value_as_long (fromval),
1077                           value_bitpos (toval), value_bitsize (toval));
1078             dest_buffer = buffer;
1079           }
1080         else
1081           {
1082             changed_addr = value_address (toval);
1083             changed_len = TYPE_LENGTH (type);
1084             dest_buffer = value_contents (fromval);
1085           }
1086
1087         write_memory_with_notification (changed_addr, dest_buffer, changed_len);
1088       }
1089       break;
1090
1091     case lval_register:
1092       {
1093         struct frame_info *frame;
1094         struct gdbarch *gdbarch;
1095         int value_reg;
1096
1097         /* Figure out which frame this is in currently.  */
1098         frame = frame_find_by_id (VALUE_FRAME_ID (toval));
1099         value_reg = VALUE_REGNUM (toval);
1100
1101         if (!frame)
1102           error (_("Value being assigned to is no longer active."));
1103
1104         gdbarch = get_frame_arch (frame);
1105         if (gdbarch_convert_register_p (gdbarch, VALUE_REGNUM (toval), type))
1106           {
1107             /* If TOVAL is a special machine register requiring
1108                conversion of program values to a special raw
1109                format.  */
1110             gdbarch_value_to_register (gdbarch, frame,
1111                                        VALUE_REGNUM (toval), type,
1112                                        value_contents (fromval));
1113           }
1114         else
1115           {
1116             if (value_bitsize (toval))
1117               {
1118                 struct value *parent = value_parent (toval);
1119                 int offset = value_offset (parent) + value_offset (toval);
1120                 int changed_len;
1121                 gdb_byte buffer[sizeof (LONGEST)];
1122                 int optim, unavail;
1123
1124                 changed_len = (value_bitpos (toval)
1125                                + value_bitsize (toval)
1126                                + HOST_CHAR_BIT - 1)
1127                   / HOST_CHAR_BIT;
1128
1129                 if (changed_len > (int) sizeof (LONGEST))
1130                   error (_("Can't handle bitfields which "
1131                            "don't fit in a %d bit word."),
1132                          (int) sizeof (LONGEST) * HOST_CHAR_BIT);
1133
1134                 if (!get_frame_register_bytes (frame, value_reg, offset,
1135                                                changed_len, buffer,
1136                                                &optim, &unavail))
1137                   {
1138                     if (optim)
1139                       throw_error (OPTIMIZED_OUT_ERROR,
1140                                    _("value has been optimized out"));
1141                     if (unavail)
1142                       throw_error (NOT_AVAILABLE_ERROR,
1143                                    _("value is not available"));
1144                   }
1145
1146                 modify_field (type, buffer, value_as_long (fromval),
1147                               value_bitpos (toval), value_bitsize (toval));
1148
1149                 put_frame_register_bytes (frame, value_reg, offset,
1150                                           changed_len, buffer);
1151               }
1152             else
1153               {
1154                 put_frame_register_bytes (frame, value_reg,
1155                                           value_offset (toval),
1156                                           TYPE_LENGTH (type),
1157                                           value_contents (fromval));
1158               }
1159           }
1160
1161         if (deprecated_register_changed_hook)
1162           deprecated_register_changed_hook (-1);
1163         break;
1164       }
1165
1166     case lval_computed:
1167       {
1168         const struct lval_funcs *funcs = value_computed_funcs (toval);
1169
1170         if (funcs->write != NULL)
1171           {
1172             funcs->write (toval, fromval);
1173             break;
1174           }
1175       }
1176       /* Fall through.  */
1177
1178     default:
1179       error (_("Left operand of assignment is not an lvalue."));
1180     }
1181
1182   /* Assigning to the stack pointer, frame pointer, and other
1183      (architecture and calling convention specific) registers may
1184      cause the frame cache and regcache to be out of date.  Assigning to memory
1185      also can.  We just do this on all assignments to registers or
1186      memory, for simplicity's sake; I doubt the slowdown matters.  */
1187   switch (VALUE_LVAL (toval))
1188     {
1189     case lval_memory:
1190     case lval_register:
1191     case lval_computed:
1192
1193       observer_notify_target_changed (&current_target);
1194
1195       /* Having destroyed the frame cache, restore the selected
1196          frame.  */
1197
1198       /* FIXME: cagney/2002-11-02: There has to be a better way of
1199          doing this.  Instead of constantly saving/restoring the
1200          frame.  Why not create a get_selected_frame() function that,
1201          having saved the selected frame's ID can automatically
1202          re-find the previously selected frame automatically.  */
1203
1204       {
1205         struct frame_info *fi = frame_find_by_id (old_frame);
1206
1207         if (fi != NULL)
1208           select_frame (fi);
1209       }
1210
1211       break;
1212     default:
1213       break;
1214     }
1215   
1216   /* If the field does not entirely fill a LONGEST, then zero the sign
1217      bits.  If the field is signed, and is negative, then sign
1218      extend.  */
1219   if ((value_bitsize (toval) > 0)
1220       && (value_bitsize (toval) < 8 * (int) sizeof (LONGEST)))
1221     {
1222       LONGEST fieldval = value_as_long (fromval);
1223       LONGEST valmask = (((ULONGEST) 1) << value_bitsize (toval)) - 1;
1224
1225       fieldval &= valmask;
1226       if (!TYPE_UNSIGNED (type) 
1227           && (fieldval & (valmask ^ (valmask >> 1))))
1228         fieldval |= ~valmask;
1229
1230       fromval = value_from_longest (type, fieldval);
1231     }
1232
1233   /* The return value is a copy of TOVAL so it shares its location
1234      information, but its contents are updated from FROMVAL.  This
1235      implies the returned value is not lazy, even if TOVAL was.  */
1236   val = value_copy (toval);
1237   set_value_lazy (val, 0);
1238   memcpy (value_contents_raw (val), value_contents (fromval),
1239           TYPE_LENGTH (type));
1240
1241   /* We copy over the enclosing type and pointed-to offset from FROMVAL
1242      in the case of pointer types.  For object types, the enclosing type
1243      and embedded offset must *not* be copied: the target object refered
1244      to by TOVAL retains its original dynamic type after assignment.  */
1245   if (TYPE_CODE (type) == TYPE_CODE_PTR)
1246     {
1247       set_value_enclosing_type (val, value_enclosing_type (fromval));
1248       set_value_pointed_to_offset (val, value_pointed_to_offset (fromval));
1249     }
1250
1251   return val;
1252 }
1253
1254 /* Extend a value VAL to COUNT repetitions of its type.  */
1255
1256 struct value *
1257 value_repeat (struct value *arg1, int count)
1258 {
1259   struct value *val;
1260
1261   if (VALUE_LVAL (arg1) != lval_memory)
1262     error (_("Only values in memory can be extended with '@'."));
1263   if (count < 1)
1264     error (_("Invalid number %d of repetitions."), count);
1265
1266   val = allocate_repeat_value (value_enclosing_type (arg1), count);
1267
1268   VALUE_LVAL (val) = lval_memory;
1269   set_value_address (val, value_address (arg1));
1270
1271   read_value_memory (val, 0, value_stack (val), value_address (val),
1272                      value_contents_all_raw (val),
1273                      TYPE_LENGTH (value_enclosing_type (val)));
1274
1275   return val;
1276 }
1277
1278 struct value *
1279 value_of_variable (struct symbol *var, const struct block *b)
1280 {
1281   struct frame_info *frame;
1282
1283   if (!symbol_read_needs_frame (var))
1284     frame = NULL;
1285   else if (!b)
1286     frame = get_selected_frame (_("No frame selected."));
1287   else
1288     {
1289       frame = block_innermost_frame (b);
1290       if (!frame)
1291         {
1292           if (BLOCK_FUNCTION (b) && !block_inlined_p (b)
1293               && SYMBOL_PRINT_NAME (BLOCK_FUNCTION (b)))
1294             error (_("No frame is currently executing in block %s."),
1295                    SYMBOL_PRINT_NAME (BLOCK_FUNCTION (b)));
1296           else
1297             error (_("No frame is currently executing in specified block"));
1298         }
1299     }
1300
1301   return read_var_value (var, frame);
1302 }
1303
1304 struct value *
1305 address_of_variable (struct symbol *var, const struct block *b)
1306 {
1307   struct type *type = SYMBOL_TYPE (var);
1308   struct value *val;
1309
1310   /* Evaluate it first; if the result is a memory address, we're fine.
1311      Lazy evaluation pays off here.  */
1312
1313   val = value_of_variable (var, b);
1314
1315   if ((VALUE_LVAL (val) == lval_memory && value_lazy (val))
1316       || TYPE_CODE (type) == TYPE_CODE_FUNC)
1317     {
1318       CORE_ADDR addr = value_address (val);
1319
1320       return value_from_pointer (lookup_pointer_type (type), addr);
1321     }
1322
1323   /* Not a memory address; check what the problem was.  */
1324   switch (VALUE_LVAL (val))
1325     {
1326     case lval_register:
1327       {
1328         struct frame_info *frame;
1329         const char *regname;
1330
1331         frame = frame_find_by_id (VALUE_FRAME_ID (val));
1332         gdb_assert (frame);
1333
1334         regname = gdbarch_register_name (get_frame_arch (frame),
1335                                          VALUE_REGNUM (val));
1336         gdb_assert (regname && *regname);
1337
1338         error (_("Address requested for identifier "
1339                  "\"%s\" which is in register $%s"),
1340                SYMBOL_PRINT_NAME (var), regname);
1341         break;
1342       }
1343
1344     default:
1345       error (_("Can't take address of \"%s\" which isn't an lvalue."),
1346              SYMBOL_PRINT_NAME (var));
1347       break;
1348     }
1349
1350   return val;
1351 }
1352
1353 /* Return one if VAL does not live in target memory, but should in order
1354    to operate on it.  Otherwise return zero.  */
1355
1356 int
1357 value_must_coerce_to_target (struct value *val)
1358 {
1359   struct type *valtype;
1360
1361   /* The only lval kinds which do not live in target memory.  */
1362   if (VALUE_LVAL (val) != not_lval
1363       && VALUE_LVAL (val) != lval_internalvar)
1364     return 0;
1365
1366   valtype = check_typedef (value_type (val));
1367
1368   switch (TYPE_CODE (valtype))
1369     {
1370     case TYPE_CODE_ARRAY:
1371       return TYPE_VECTOR (valtype) ? 0 : 1;
1372     case TYPE_CODE_STRING:
1373       return 1;
1374     default:
1375       return 0;
1376     }
1377 }
1378
1379 /* Make sure that VAL lives in target memory if it's supposed to.  For
1380    instance, strings are constructed as character arrays in GDB's
1381    storage, and this function copies them to the target.  */
1382
1383 struct value *
1384 value_coerce_to_target (struct value *val)
1385 {
1386   LONGEST length;
1387   CORE_ADDR addr;
1388
1389   if (!value_must_coerce_to_target (val))
1390     return val;
1391
1392   length = TYPE_LENGTH (check_typedef (value_type (val)));
1393   addr = allocate_space_in_inferior (length);
1394   write_memory (addr, value_contents (val), length);
1395   return value_at_lazy (value_type (val), addr);
1396 }
1397
1398 /* Given a value which is an array, return a value which is a pointer
1399    to its first element, regardless of whether or not the array has a
1400    nonzero lower bound.
1401
1402    FIXME: A previous comment here indicated that this routine should
1403    be substracting the array's lower bound.  It's not clear to me that
1404    this is correct.  Given an array subscripting operation, it would
1405    certainly work to do the adjustment here, essentially computing:
1406
1407    (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
1408
1409    However I believe a more appropriate and logical place to account
1410    for the lower bound is to do so in value_subscript, essentially
1411    computing:
1412
1413    (&array[0] + ((index - lowerbound) * sizeof array[0]))
1414
1415    As further evidence consider what would happen with operations
1416    other than array subscripting, where the caller would get back a
1417    value that had an address somewhere before the actual first element
1418    of the array, and the information about the lower bound would be
1419    lost because of the coercion to pointer type.  */
1420
1421 struct value *
1422 value_coerce_array (struct value *arg1)
1423 {
1424   struct type *type = check_typedef (value_type (arg1));
1425
1426   /* If the user tries to do something requiring a pointer with an
1427      array that has not yet been pushed to the target, then this would
1428      be a good time to do so.  */
1429   arg1 = value_coerce_to_target (arg1);
1430
1431   if (VALUE_LVAL (arg1) != lval_memory)
1432     error (_("Attempt to take address of value not located in memory."));
1433
1434   return value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
1435                              value_address (arg1));
1436 }
1437
1438 /* Given a value which is a function, return a value which is a pointer
1439    to it.  */
1440
1441 struct value *
1442 value_coerce_function (struct value *arg1)
1443 {
1444   struct value *retval;
1445
1446   if (VALUE_LVAL (arg1) != lval_memory)
1447     error (_("Attempt to take address of value not located in memory."));
1448
1449   retval = value_from_pointer (lookup_pointer_type (value_type (arg1)),
1450                                value_address (arg1));
1451   return retval;
1452 }
1453
1454 /* Return a pointer value for the object for which ARG1 is the
1455    contents.  */
1456
1457 struct value *
1458 value_addr (struct value *arg1)
1459 {
1460   struct value *arg2;
1461   struct type *type = check_typedef (value_type (arg1));
1462
1463   if (TYPE_CODE (type) == TYPE_CODE_REF)
1464     {
1465       /* Copy the value, but change the type from (T&) to (T*).  We
1466          keep the same location information, which is efficient, and
1467          allows &(&X) to get the location containing the reference.  */
1468       arg2 = value_copy (arg1);
1469       deprecated_set_value_type (arg2, 
1470                                  lookup_pointer_type (TYPE_TARGET_TYPE (type)));
1471       return arg2;
1472     }
1473   if (TYPE_CODE (type) == TYPE_CODE_FUNC)
1474     return value_coerce_function (arg1);
1475
1476   /* If this is an array that has not yet been pushed to the target,
1477      then this would be a good time to force it to memory.  */
1478   arg1 = value_coerce_to_target (arg1);
1479
1480   if (VALUE_LVAL (arg1) != lval_memory)
1481     error (_("Attempt to take address of value not located in memory."));
1482
1483   /* Get target memory address.  */
1484   arg2 = value_from_pointer (lookup_pointer_type (value_type (arg1)),
1485                              (value_address (arg1)
1486                               + value_embedded_offset (arg1)));
1487
1488   /* This may be a pointer to a base subobject; so remember the
1489      full derived object's type ...  */
1490   set_value_enclosing_type (arg2,
1491                             lookup_pointer_type (value_enclosing_type (arg1)));
1492   /* ... and also the relative position of the subobject in the full
1493      object.  */
1494   set_value_pointed_to_offset (arg2, value_embedded_offset (arg1));
1495   return arg2;
1496 }
1497
1498 /* Return a reference value for the object for which ARG1 is the
1499    contents.  */
1500
1501 struct value *
1502 value_ref (struct value *arg1)
1503 {
1504   struct value *arg2;
1505   struct type *type = check_typedef (value_type (arg1));
1506
1507   if (TYPE_CODE (type) == TYPE_CODE_REF)
1508     return arg1;
1509
1510   arg2 = value_addr (arg1);
1511   deprecated_set_value_type (arg2, lookup_reference_type (type));
1512   return arg2;
1513 }
1514
1515 /* Given a value of a pointer type, apply the C unary * operator to
1516    it.  */
1517
1518 struct value *
1519 value_ind (struct value *arg1)
1520 {
1521   struct type *base_type;
1522   struct value *arg2;
1523
1524   arg1 = coerce_array (arg1);
1525
1526   base_type = check_typedef (value_type (arg1));
1527
1528   if (VALUE_LVAL (arg1) == lval_computed)
1529     {
1530       const struct lval_funcs *funcs = value_computed_funcs (arg1);
1531
1532       if (funcs->indirect)
1533         {
1534           struct value *result = funcs->indirect (arg1);
1535
1536           if (result)
1537             return result;
1538         }
1539     }
1540
1541   if (TYPE_CODE (base_type) == TYPE_CODE_PTR)
1542     {
1543       struct type *enc_type;
1544
1545       /* We may be pointing to something embedded in a larger object.
1546          Get the real type of the enclosing object.  */
1547       enc_type = check_typedef (value_enclosing_type (arg1));
1548       enc_type = TYPE_TARGET_TYPE (enc_type);
1549
1550       if (TYPE_CODE (check_typedef (enc_type)) == TYPE_CODE_FUNC
1551           || TYPE_CODE (check_typedef (enc_type)) == TYPE_CODE_METHOD)
1552         /* For functions, go through find_function_addr, which knows
1553            how to handle function descriptors.  */
1554         arg2 = value_at_lazy (enc_type, 
1555                               find_function_addr (arg1, NULL));
1556       else
1557         /* Retrieve the enclosing object pointed to.  */
1558         arg2 = value_at_lazy (enc_type, 
1559                               (value_as_address (arg1)
1560                                - value_pointed_to_offset (arg1)));
1561
1562       return readjust_indirect_value_type (arg2, enc_type, base_type, arg1);
1563     }
1564
1565   error (_("Attempt to take contents of a non-pointer value."));
1566   return 0;                     /* For lint -- never reached.  */
1567 }
1568 \f
1569 /* Create a value for an array by allocating space in GDB, copying the
1570    data into that space, and then setting up an array value.
1571
1572    The array bounds are set from LOWBOUND and HIGHBOUND, and the array
1573    is populated from the values passed in ELEMVEC.
1574
1575    The element type of the array is inherited from the type of the
1576    first element, and all elements must have the same size (though we
1577    don't currently enforce any restriction on their types).  */
1578
1579 struct value *
1580 value_array (int lowbound, int highbound, struct value **elemvec)
1581 {
1582   int nelem;
1583   int idx;
1584   unsigned int typelength;
1585   struct value *val;
1586   struct type *arraytype;
1587
1588   /* Validate that the bounds are reasonable and that each of the
1589      elements have the same size.  */
1590
1591   nelem = highbound - lowbound + 1;
1592   if (nelem <= 0)
1593     {
1594       error (_("bad array bounds (%d, %d)"), lowbound, highbound);
1595     }
1596   typelength = TYPE_LENGTH (value_enclosing_type (elemvec[0]));
1597   for (idx = 1; idx < nelem; idx++)
1598     {
1599       if (TYPE_LENGTH (value_enclosing_type (elemvec[idx])) != typelength)
1600         {
1601           error (_("array elements must all be the same size"));
1602         }
1603     }
1604
1605   arraytype = lookup_array_range_type (value_enclosing_type (elemvec[0]),
1606                                        lowbound, highbound);
1607
1608   if (!current_language->c_style_arrays)
1609     {
1610       val = allocate_value (arraytype);
1611       for (idx = 0; idx < nelem; idx++)
1612         value_contents_copy (val, idx * typelength, elemvec[idx], 0,
1613                              typelength);
1614       return val;
1615     }
1616
1617   /* Allocate space to store the array, and then initialize it by
1618      copying in each element.  */
1619
1620   val = allocate_value (arraytype);
1621   for (idx = 0; idx < nelem; idx++)
1622     value_contents_copy (val, idx * typelength, elemvec[idx], 0, typelength);
1623   return val;
1624 }
1625
1626 struct value *
1627 value_cstring (char *ptr, ssize_t len, struct type *char_type)
1628 {
1629   struct value *val;
1630   int lowbound = current_language->string_lower_bound;
1631   ssize_t highbound = len / TYPE_LENGTH (char_type);
1632   struct type *stringtype
1633     = lookup_array_range_type (char_type, lowbound, highbound + lowbound - 1);
1634
1635   val = allocate_value (stringtype);
1636   memcpy (value_contents_raw (val), ptr, len);
1637   return val;
1638 }
1639
1640 /* Create a value for a string constant by allocating space in the
1641    inferior, copying the data into that space, and returning the
1642    address with type TYPE_CODE_STRING.  PTR points to the string
1643    constant data; LEN is number of characters.
1644
1645    Note that string types are like array of char types with a lower
1646    bound of zero and an upper bound of LEN - 1.  Also note that the
1647    string may contain embedded null bytes.  */
1648
1649 struct value *
1650 value_string (char *ptr, ssize_t len, struct type *char_type)
1651 {
1652   struct value *val;
1653   int lowbound = current_language->string_lower_bound;
1654   ssize_t highbound = len / TYPE_LENGTH (char_type);
1655   struct type *stringtype
1656     = lookup_string_range_type (char_type, lowbound, highbound + lowbound - 1);
1657
1658   val = allocate_value (stringtype);
1659   memcpy (value_contents_raw (val), ptr, len);
1660   return val;
1661 }
1662
1663 \f
1664 /* See if we can pass arguments in T2 to a function which takes
1665    arguments of types T1.  T1 is a list of NARGS arguments, and T2 is
1666    a NULL-terminated vector.  If some arguments need coercion of some
1667    sort, then the coerced values are written into T2.  Return value is
1668    0 if the arguments could be matched, or the position at which they
1669    differ if not.
1670
1671    STATICP is nonzero if the T1 argument list came from a static
1672    member function.  T2 will still include the ``this'' pointer, but
1673    it will be skipped.
1674
1675    For non-static member functions, we ignore the first argument,
1676    which is the type of the instance variable.  This is because we
1677    want to handle calls with objects from derived classes.  This is
1678    not entirely correct: we should actually check to make sure that a
1679    requested operation is type secure, shouldn't we?  FIXME.  */
1680
1681 static int
1682 typecmp (int staticp, int varargs, int nargs,
1683          struct field t1[], struct value *t2[])
1684 {
1685   int i;
1686
1687   if (t2 == 0)
1688     internal_error (__FILE__, __LINE__, 
1689                     _("typecmp: no argument list"));
1690
1691   /* Skip ``this'' argument if applicable.  T2 will always include
1692      THIS.  */
1693   if (staticp)
1694     t2 ++;
1695
1696   for (i = 0;
1697        (i < nargs) && TYPE_CODE (t1[i].type) != TYPE_CODE_VOID;
1698        i++)
1699     {
1700       struct type *tt1, *tt2;
1701
1702       if (!t2[i])
1703         return i + 1;
1704
1705       tt1 = check_typedef (t1[i].type);
1706       tt2 = check_typedef (value_type (t2[i]));
1707
1708       if (TYPE_CODE (tt1) == TYPE_CODE_REF
1709       /* We should be doing hairy argument matching, as below.  */
1710           && (TYPE_CODE (check_typedef (TYPE_TARGET_TYPE (tt1)))
1711               == TYPE_CODE (tt2)))
1712         {
1713           if (TYPE_CODE (tt2) == TYPE_CODE_ARRAY)
1714             t2[i] = value_coerce_array (t2[i]);
1715           else
1716             t2[i] = value_ref (t2[i]);
1717           continue;
1718         }
1719
1720       /* djb - 20000715 - Until the new type structure is in the
1721          place, and we can attempt things like implicit conversions,
1722          we need to do this so you can take something like a map<const
1723          char *>, and properly access map["hello"], because the
1724          argument to [] will be a reference to a pointer to a char,
1725          and the argument will be a pointer to a char.  */
1726       while (TYPE_CODE(tt1) == TYPE_CODE_REF
1727              || TYPE_CODE (tt1) == TYPE_CODE_PTR)
1728         {
1729           tt1 = check_typedef( TYPE_TARGET_TYPE(tt1) );
1730         }
1731       while (TYPE_CODE(tt2) == TYPE_CODE_ARRAY
1732              || TYPE_CODE(tt2) == TYPE_CODE_PTR
1733              || TYPE_CODE(tt2) == TYPE_CODE_REF)
1734         {
1735           tt2 = check_typedef (TYPE_TARGET_TYPE(tt2));
1736         }
1737       if (TYPE_CODE (tt1) == TYPE_CODE (tt2))
1738         continue;
1739       /* Array to pointer is a `trivial conversion' according to the
1740          ARM.  */
1741
1742       /* We should be doing much hairier argument matching (see
1743          section 13.2 of the ARM), but as a quick kludge, just check
1744          for the same type code.  */
1745       if (TYPE_CODE (t1[i].type) != TYPE_CODE (value_type (t2[i])))
1746         return i + 1;
1747     }
1748   if (varargs || t2[i] == NULL)
1749     return 0;
1750   return i + 1;
1751 }
1752
1753 /* Helper class for do_search_struct_field that updates *RESULT_PTR
1754    and *LAST_BOFFSET, and possibly throws an exception if the field
1755    search has yielded ambiguous results.  */
1756
1757 static void
1758 update_search_result (struct value **result_ptr, struct value *v,
1759                       int *last_boffset, int boffset,
1760                       const char *name, struct type *type)
1761 {
1762   if (v != NULL)
1763     {
1764       if (*result_ptr != NULL
1765           /* The result is not ambiguous if all the classes that are
1766              found occupy the same space.  */
1767           && *last_boffset != boffset)
1768         error (_("base class '%s' is ambiguous in type '%s'"),
1769                name, TYPE_SAFE_NAME (type));
1770       *result_ptr = v;
1771       *last_boffset = boffset;
1772     }
1773 }
1774
1775 /* A helper for search_struct_field.  This does all the work; most
1776    arguments are as passed to search_struct_field.  The result is
1777    stored in *RESULT_PTR, which must be initialized to NULL.
1778    OUTERMOST_TYPE is the type of the initial type passed to
1779    search_struct_field; this is used for error reporting when the
1780    lookup is ambiguous.  */
1781
1782 static void
1783 do_search_struct_field (const char *name, struct value *arg1, int offset,
1784                         struct type *type, int looking_for_baseclass,
1785                         struct value **result_ptr,
1786                         int *last_boffset,
1787                         struct type *outermost_type)
1788 {
1789   int i;
1790   int nbases;
1791
1792   CHECK_TYPEDEF (type);
1793   nbases = TYPE_N_BASECLASSES (type);
1794
1795   if (!looking_for_baseclass)
1796     for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
1797       {
1798         const char *t_field_name = TYPE_FIELD_NAME (type, i);
1799
1800         if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
1801           {
1802             struct value *v;
1803
1804             if (field_is_static (&TYPE_FIELD (type, i)))
1805               v = value_static_field (type, i);
1806             else
1807               v = value_primitive_field (arg1, offset, i, type);
1808             *result_ptr = v;
1809             return;
1810           }
1811
1812         if (t_field_name
1813             && (t_field_name[0] == '\0'
1814                 || (TYPE_CODE (type) == TYPE_CODE_UNION
1815                     && (strcmp_iw (t_field_name, "else") == 0))))
1816           {
1817             struct type *field_type = TYPE_FIELD_TYPE (type, i);
1818
1819             if (TYPE_CODE (field_type) == TYPE_CODE_UNION
1820                 || TYPE_CODE (field_type) == TYPE_CODE_STRUCT)
1821               {
1822                 /* Look for a match through the fields of an anonymous
1823                    union, or anonymous struct.  C++ provides anonymous
1824                    unions.
1825
1826                    In the GNU Chill (now deleted from GDB)
1827                    implementation of variant record types, each
1828                    <alternative field> has an (anonymous) union type,
1829                    each member of the union represents a <variant
1830                    alternative>.  Each <variant alternative> is
1831                    represented as a struct, with a member for each
1832                    <variant field>.  */
1833
1834                 struct value *v = NULL;
1835                 int new_offset = offset;
1836
1837                 /* This is pretty gross.  In G++, the offset in an
1838                    anonymous union is relative to the beginning of the
1839                    enclosing struct.  In the GNU Chill (now deleted
1840                    from GDB) implementation of variant records, the
1841                    bitpos is zero in an anonymous union field, so we
1842                    have to add the offset of the union here.  */
1843                 if (TYPE_CODE (field_type) == TYPE_CODE_STRUCT
1844                     || (TYPE_NFIELDS (field_type) > 0
1845                         && TYPE_FIELD_BITPOS (field_type, 0) == 0))
1846                   new_offset += TYPE_FIELD_BITPOS (type, i) / 8;
1847
1848                 do_search_struct_field (name, arg1, new_offset, 
1849                                         field_type,
1850                                         looking_for_baseclass, &v,
1851                                         last_boffset,
1852                                         outermost_type);
1853                 if (v)
1854                   {
1855                     *result_ptr = v;
1856                     return;
1857                   }
1858               }
1859           }
1860       }
1861
1862   for (i = 0; i < nbases; i++)
1863     {
1864       struct value *v = NULL;
1865       struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
1866       /* If we are looking for baseclasses, this is what we get when
1867          we hit them.  But it could happen that the base part's member
1868          name is not yet filled in.  */
1869       int found_baseclass = (looking_for_baseclass
1870                              && TYPE_BASECLASS_NAME (type, i) != NULL
1871                              && (strcmp_iw (name, 
1872                                             TYPE_BASECLASS_NAME (type, 
1873                                                                  i)) == 0));
1874       int boffset = value_embedded_offset (arg1) + offset;
1875
1876       if (BASETYPE_VIA_VIRTUAL (type, i))
1877         {
1878           struct value *v2;
1879
1880           boffset = baseclass_offset (type, i,
1881                                       value_contents_for_printing (arg1),
1882                                       value_embedded_offset (arg1) + offset,
1883                                       value_address (arg1),
1884                                       arg1);
1885
1886           /* The virtual base class pointer might have been clobbered
1887              by the user program.  Make sure that it still points to a
1888              valid memory location.  */
1889
1890           boffset += value_embedded_offset (arg1) + offset;
1891           if (boffset < 0
1892               || boffset >= TYPE_LENGTH (value_enclosing_type (arg1)))
1893             {
1894               CORE_ADDR base_addr;
1895
1896               base_addr = value_address (arg1) + boffset;
1897               v2 = value_at_lazy (basetype, base_addr);
1898               if (target_read_memory (base_addr, 
1899                                       value_contents_raw (v2),
1900                                       TYPE_LENGTH (value_type (v2))) != 0)
1901                 error (_("virtual baseclass botch"));
1902             }
1903           else
1904             {
1905               v2 = value_copy (arg1);
1906               deprecated_set_value_type (v2, basetype);
1907               set_value_embedded_offset (v2, boffset);
1908             }
1909
1910           if (found_baseclass)
1911             v = v2;
1912           else
1913             {
1914               do_search_struct_field (name, v2, 0,
1915                                       TYPE_BASECLASS (type, i),
1916                                       looking_for_baseclass,
1917                                       result_ptr, last_boffset,
1918                                       outermost_type);
1919             }
1920         }
1921       else if (found_baseclass)
1922         v = value_primitive_field (arg1, offset, i, type);
1923       else
1924         {
1925           do_search_struct_field (name, arg1,
1926                                   offset + TYPE_BASECLASS_BITPOS (type, 
1927                                                                   i) / 8,
1928                                   basetype, looking_for_baseclass,
1929                                   result_ptr, last_boffset,
1930                                   outermost_type);
1931         }
1932
1933       update_search_result (result_ptr, v, last_boffset,
1934                             boffset, name, outermost_type);
1935     }
1936 }
1937
1938 /* Helper function used by value_struct_elt to recurse through
1939    baseclasses.  Look for a field NAME in ARG1.  Adjust the address of
1940    ARG1 by OFFSET bytes, and search in it assuming it has (class) type
1941    TYPE.  If found, return value, else return NULL.
1942
1943    If LOOKING_FOR_BASECLASS, then instead of looking for struct
1944    fields, look for a baseclass named NAME.  */
1945
1946 static struct value *
1947 search_struct_field (const char *name, struct value *arg1, int offset,
1948                      struct type *type, int looking_for_baseclass)
1949 {
1950   struct value *result = NULL;
1951   int boffset = 0;
1952
1953   do_search_struct_field (name, arg1, offset, type, looking_for_baseclass,
1954                           &result, &boffset, type);
1955   return result;
1956 }
1957
1958 /* Helper function used by value_struct_elt to recurse through
1959    baseclasses.  Look for a field NAME in ARG1.  Adjust the address of
1960    ARG1 by OFFSET bytes, and search in it assuming it has (class) type
1961    TYPE.
1962
1963    If found, return value, else if name matched and args not return
1964    (value) -1, else return NULL.  */
1965
1966 static struct value *
1967 search_struct_method (const char *name, struct value **arg1p,
1968                       struct value **args, int offset,
1969                       int *static_memfuncp, struct type *type)
1970 {
1971   int i;
1972   struct value *v;
1973   int name_matched = 0;
1974   char dem_opname[64];
1975
1976   CHECK_TYPEDEF (type);
1977   for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
1978     {
1979       const char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
1980
1981       /* FIXME!  May need to check for ARM demangling here.  */
1982       if (strncmp (t_field_name, "__", 2) == 0 ||
1983           strncmp (t_field_name, "op", 2) == 0 ||
1984           strncmp (t_field_name, "type", 4) == 0)
1985         {
1986           if (cplus_demangle_opname (t_field_name, dem_opname, DMGL_ANSI))
1987             t_field_name = dem_opname;
1988           else if (cplus_demangle_opname (t_field_name, dem_opname, 0))
1989             t_field_name = dem_opname;
1990         }
1991       if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
1992         {
1993           int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
1994           struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
1995
1996           name_matched = 1;
1997           check_stub_method_group (type, i);
1998           if (j > 0 && args == 0)
1999             error (_("cannot resolve overloaded method "
2000                      "`%s': no arguments supplied"), name);
2001           else if (j == 0 && args == 0)
2002             {
2003               v = value_fn_field (arg1p, f, j, type, offset);
2004               if (v != NULL)
2005                 return v;
2006             }
2007           else
2008             while (j >= 0)
2009               {
2010                 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
2011                               TYPE_VARARGS (TYPE_FN_FIELD_TYPE (f, j)),
2012                               TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (f, j)),
2013                               TYPE_FN_FIELD_ARGS (f, j), args))
2014                   {
2015                     if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
2016                       return value_virtual_fn_field (arg1p, f, j, 
2017                                                      type, offset);
2018                     if (TYPE_FN_FIELD_STATIC_P (f, j) 
2019                         && static_memfuncp)
2020                       *static_memfuncp = 1;
2021                     v = value_fn_field (arg1p, f, j, type, offset);
2022                     if (v != NULL)
2023                       return v;       
2024                   }
2025                 j--;
2026               }
2027         }
2028     }
2029
2030   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2031     {
2032       int base_offset;
2033       int this_offset;
2034
2035       if (BASETYPE_VIA_VIRTUAL (type, i))
2036         {
2037           struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
2038           struct value *base_val;
2039           const gdb_byte *base_valaddr;
2040
2041           /* The virtual base class pointer might have been
2042              clobbered by the user program.  Make sure that it
2043             still points to a valid memory location.  */
2044
2045           if (offset < 0 || offset >= TYPE_LENGTH (type))
2046             {
2047               gdb_byte *tmp;
2048               struct cleanup *back_to;
2049               CORE_ADDR address;
2050
2051               tmp = xmalloc (TYPE_LENGTH (baseclass));
2052               back_to = make_cleanup (xfree, tmp);
2053               address = value_address (*arg1p);
2054
2055               if (target_read_memory (address + offset,
2056                                       tmp, TYPE_LENGTH (baseclass)) != 0)
2057                 error (_("virtual baseclass botch"));
2058
2059               base_val = value_from_contents_and_address (baseclass,
2060                                                           tmp,
2061                                                           address + offset);
2062               base_valaddr = value_contents_for_printing (base_val);
2063               this_offset = 0;
2064               do_cleanups (back_to);
2065             }
2066           else
2067             {
2068               base_val = *arg1p;
2069               base_valaddr = value_contents_for_printing (*arg1p);
2070               this_offset = offset;
2071             }
2072
2073           base_offset = baseclass_offset (type, i, base_valaddr,
2074                                           this_offset, value_address (base_val),
2075                                           base_val);
2076         }
2077       else
2078         {
2079           base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2080         }
2081       v = search_struct_method (name, arg1p, args, base_offset + offset,
2082                                 static_memfuncp, TYPE_BASECLASS (type, i));
2083       if (v == (struct value *) - 1)
2084         {
2085           name_matched = 1;
2086         }
2087       else if (v)
2088         {
2089           /* FIXME-bothner:  Why is this commented out?  Why is it here?  */
2090           /* *arg1p = arg1_tmp; */
2091           return v;
2092         }
2093     }
2094   if (name_matched)
2095     return (struct value *) - 1;
2096   else
2097     return NULL;
2098 }
2099
2100 /* Given *ARGP, a value of type (pointer to a)* structure/union,
2101    extract the component named NAME from the ultimate target
2102    structure/union and return it as a value with its appropriate type.
2103    ERR is used in the error message if *ARGP's type is wrong.
2104
2105    C++: ARGS is a list of argument types to aid in the selection of
2106    an appropriate method.  Also, handle derived types.
2107
2108    STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
2109    where the truthvalue of whether the function that was resolved was
2110    a static member function or not is stored.
2111
2112    ERR is an error message to be printed in case the field is not
2113    found.  */
2114
2115 struct value *
2116 value_struct_elt (struct value **argp, struct value **args,
2117                   const char *name, int *static_memfuncp, const char *err)
2118 {
2119   struct type *t;
2120   struct value *v;
2121
2122   *argp = coerce_array (*argp);
2123
2124   t = check_typedef (value_type (*argp));
2125
2126   /* Follow pointers until we get to a non-pointer.  */
2127
2128   while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
2129     {
2130       *argp = value_ind (*argp);
2131       /* Don't coerce fn pointer to fn and then back again!  */
2132       if (TYPE_CODE (check_typedef (value_type (*argp))) != TYPE_CODE_FUNC)
2133         *argp = coerce_array (*argp);
2134       t = check_typedef (value_type (*argp));
2135     }
2136
2137   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2138       && TYPE_CODE (t) != TYPE_CODE_UNION)
2139     error (_("Attempt to extract a component of a value that is not a %s."),
2140            err);
2141
2142   /* Assume it's not, unless we see that it is.  */
2143   if (static_memfuncp)
2144     *static_memfuncp = 0;
2145
2146   if (!args)
2147     {
2148       /* if there are no arguments ...do this...  */
2149
2150       /* Try as a field first, because if we succeed, there is less
2151          work to be done.  */
2152       v = search_struct_field (name, *argp, 0, t, 0);
2153       if (v)
2154         return v;
2155
2156       /* C++: If it was not found as a data field, then try to
2157          return it as a pointer to a method.  */
2158       v = search_struct_method (name, argp, args, 0, 
2159                                 static_memfuncp, t);
2160
2161       if (v == (struct value *) - 1)
2162         error (_("Cannot take address of method %s."), name);
2163       else if (v == 0)
2164         {
2165           if (TYPE_NFN_FIELDS (t))
2166             error (_("There is no member or method named %s."), name);
2167           else
2168             error (_("There is no member named %s."), name);
2169         }
2170       return v;
2171     }
2172
2173     v = search_struct_method (name, argp, args, 0, 
2174                               static_memfuncp, t);
2175   
2176   if (v == (struct value *) - 1)
2177     {
2178       error (_("One of the arguments you tried to pass to %s could not "
2179                "be converted to what the function wants."), name);
2180     }
2181   else if (v == 0)
2182     {
2183       /* See if user tried to invoke data as function.  If so, hand it
2184          back.  If it's not callable (i.e., a pointer to function),
2185          gdb should give an error.  */
2186       v = search_struct_field (name, *argp, 0, t, 0);
2187       /* If we found an ordinary field, then it is not a method call.
2188          So, treat it as if it were a static member function.  */
2189       if (v && static_memfuncp)
2190         *static_memfuncp = 1;
2191     }
2192
2193   if (!v)
2194     throw_error (NOT_FOUND_ERROR,
2195                  _("Structure has no component named %s."), name);
2196   return v;
2197 }
2198
2199 /* Given *ARGP, a value of type structure or union, or a pointer/reference
2200    to a structure or union, extract and return its component (field) of
2201    type FTYPE at the specified BITPOS.
2202    Throw an exception on error.  */
2203
2204 struct value *
2205 value_struct_elt_bitpos (struct value **argp, int bitpos, struct type *ftype,
2206                          const char *err)
2207 {
2208   struct type *t;
2209   struct value *v;
2210   int i;
2211   int nbases;
2212
2213   *argp = coerce_array (*argp);
2214
2215   t = check_typedef (value_type (*argp));
2216
2217   while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
2218     {
2219       *argp = value_ind (*argp);
2220       if (TYPE_CODE (check_typedef (value_type (*argp))) != TYPE_CODE_FUNC)
2221         *argp = coerce_array (*argp);
2222       t = check_typedef (value_type (*argp));
2223     }
2224
2225   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2226       && TYPE_CODE (t) != TYPE_CODE_UNION)
2227     error (_("Attempt to extract a component of a value that is not a %s."),
2228            err);
2229
2230   for (i = TYPE_N_BASECLASSES (t); i < TYPE_NFIELDS (t); i++)
2231     {
2232       if (!field_is_static (&TYPE_FIELD (t, i))
2233           && bitpos == TYPE_FIELD_BITPOS (t, i)
2234           && types_equal (ftype, TYPE_FIELD_TYPE (t, i)))
2235         return value_primitive_field (*argp, 0, i, t);
2236     }
2237
2238   error (_("No field with matching bitpos and type."));
2239
2240   /* Never hit.  */
2241   return NULL;
2242 }
2243
2244 /* Search through the methods of an object (and its bases) to find a
2245    specified method.  Return the pointer to the fn_field list of
2246    overloaded instances.
2247
2248    Helper function for value_find_oload_list.
2249    ARGP is a pointer to a pointer to a value (the object).
2250    METHOD is a string containing the method name.
2251    OFFSET is the offset within the value.
2252    TYPE is the assumed type of the object.
2253    NUM_FNS is the number of overloaded instances.
2254    BASETYPE is set to the actual type of the subobject where the
2255       method is found.
2256    BOFFSET is the offset of the base subobject where the method is found.  */
2257
2258 static struct fn_field *
2259 find_method_list (struct value **argp, const char *method,
2260                   int offset, struct type *type, int *num_fns,
2261                   struct type **basetype, int *boffset)
2262 {
2263   int i;
2264   struct fn_field *f;
2265   CHECK_TYPEDEF (type);
2266
2267   *num_fns = 0;
2268
2269   /* First check in object itself.  */
2270   for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2271     {
2272       /* pai: FIXME What about operators and type conversions?  */
2273       const char *fn_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2274
2275       if (fn_field_name && (strcmp_iw (fn_field_name, method) == 0))
2276         {
2277           int len = TYPE_FN_FIELDLIST_LENGTH (type, i);
2278           struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
2279
2280           *num_fns = len;
2281           *basetype = type;
2282           *boffset = offset;
2283
2284           /* Resolve any stub methods.  */
2285           check_stub_method_group (type, i);
2286
2287           return f;
2288         }
2289     }
2290
2291   /* Not found in object, check in base subobjects.  */
2292   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2293     {
2294       int base_offset;
2295
2296       if (BASETYPE_VIA_VIRTUAL (type, i))
2297         {
2298           base_offset = baseclass_offset (type, i,
2299                                           value_contents_for_printing (*argp),
2300                                           value_offset (*argp) + offset,
2301                                           value_address (*argp), *argp);
2302         }
2303       else /* Non-virtual base, simply use bit position from debug
2304               info.  */
2305         {
2306           base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2307         }
2308       f = find_method_list (argp, method, base_offset + offset,
2309                             TYPE_BASECLASS (type, i), num_fns, 
2310                             basetype, boffset);
2311       if (f)
2312         return f;
2313     }
2314   return NULL;
2315 }
2316
2317 /* Return the list of overloaded methods of a specified name.
2318
2319    ARGP is a pointer to a pointer to a value (the object).
2320    METHOD is the method name.
2321    OFFSET is the offset within the value contents.
2322    NUM_FNS is the number of overloaded instances.
2323    BASETYPE is set to the type of the base subobject that defines the
2324       method.
2325    BOFFSET is the offset of the base subobject which defines the method.  */
2326
2327 static struct fn_field *
2328 value_find_oload_method_list (struct value **argp, const char *method,
2329                               int offset, int *num_fns, 
2330                               struct type **basetype, int *boffset)
2331 {
2332   struct type *t;
2333
2334   t = check_typedef (value_type (*argp));
2335
2336   /* Code snarfed from value_struct_elt.  */
2337   while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
2338     {
2339       *argp = value_ind (*argp);
2340       /* Don't coerce fn pointer to fn and then back again!  */
2341       if (TYPE_CODE (check_typedef (value_type (*argp))) != TYPE_CODE_FUNC)
2342         *argp = coerce_array (*argp);
2343       t = check_typedef (value_type (*argp));
2344     }
2345
2346   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2347       && TYPE_CODE (t) != TYPE_CODE_UNION)
2348     error (_("Attempt to extract a component of a "
2349              "value that is not a struct or union"));
2350
2351   return find_method_list (argp, method, 0, t, num_fns, 
2352                            basetype, boffset);
2353 }
2354
2355 /* Given an array of arguments (ARGS) (which includes an
2356    entry for "this" in the case of C++ methods), the number of
2357    arguments NARGS, the NAME of a function, and whether it's a method or
2358    not (METHOD), find the best function that matches on the argument types
2359    according to the overload resolution rules.
2360
2361    METHOD can be one of three values:
2362      NON_METHOD for non-member functions.
2363      METHOD: for member functions.
2364      BOTH: used for overload resolution of operators where the
2365        candidates are expected to be either member or non member
2366        functions.  In this case the first argument ARGTYPES
2367        (representing 'this') is expected to be a reference to the
2368        target object, and will be dereferenced when attempting the
2369        non-member search.
2370
2371    In the case of class methods, the parameter OBJ is an object value
2372    in which to search for overloaded methods.
2373
2374    In the case of non-method functions, the parameter FSYM is a symbol
2375    corresponding to one of the overloaded functions.
2376
2377    Return value is an integer: 0 -> good match, 10 -> debugger applied
2378    non-standard coercions, 100 -> incompatible.
2379
2380    If a method is being searched for, VALP will hold the value.
2381    If a non-method is being searched for, SYMP will hold the symbol 
2382    for it.
2383
2384    If a method is being searched for, and it is a static method,
2385    then STATICP will point to a non-zero value.
2386
2387    If NO_ADL argument dependent lookup is disabled.  This is used to prevent
2388    ADL overload candidates when performing overload resolution for a fully
2389    qualified name.
2390
2391    Note: This function does *not* check the value of
2392    overload_resolution.  Caller must check it to see whether overload
2393    resolution is permitted.  */
2394
2395 int
2396 find_overload_match (struct value **args, int nargs,
2397                      const char *name, enum oload_search_type method,
2398                      struct value **objp, struct symbol *fsym,
2399                      struct value **valp, struct symbol **symp, 
2400                      int *staticp, const int no_adl)
2401 {
2402   struct value *obj = (objp ? *objp : NULL);
2403   struct type *obj_type = obj ? value_type (obj) : NULL;
2404   /* Index of best overloaded function.  */
2405   int func_oload_champ = -1;
2406   int method_oload_champ = -1;
2407
2408   /* The measure for the current best match.  */
2409   struct badness_vector *method_badness = NULL;
2410   struct badness_vector *func_badness = NULL;
2411
2412   struct value *temp = obj;
2413   /* For methods, the list of overloaded methods.  */
2414   struct fn_field *fns_ptr = NULL;
2415   /* For non-methods, the list of overloaded function symbols.  */
2416   struct symbol **oload_syms = NULL;
2417   /* Number of overloaded instances being considered.  */
2418   int num_fns = 0;
2419   struct type *basetype = NULL;
2420   int boffset;
2421
2422   struct cleanup *all_cleanups = make_cleanup (null_cleanup, NULL);
2423
2424   const char *obj_type_name = NULL;
2425   const char *func_name = NULL;
2426   enum oload_classification match_quality;
2427   enum oload_classification method_match_quality = INCOMPATIBLE;
2428   enum oload_classification func_match_quality = INCOMPATIBLE;
2429
2430   /* Get the list of overloaded methods or functions.  */
2431   if (method == METHOD || method == BOTH)
2432     {
2433       gdb_assert (obj);
2434
2435       /* OBJ may be a pointer value rather than the object itself.  */
2436       obj = coerce_ref (obj);
2437       while (TYPE_CODE (check_typedef (value_type (obj))) == TYPE_CODE_PTR)
2438         obj = coerce_ref (value_ind (obj));
2439       obj_type_name = TYPE_NAME (value_type (obj));
2440
2441       /* First check whether this is a data member, e.g. a pointer to
2442          a function.  */
2443       if (TYPE_CODE (check_typedef (value_type (obj))) == TYPE_CODE_STRUCT)
2444         {
2445           *valp = search_struct_field (name, obj, 0,
2446                                        check_typedef (value_type (obj)), 0);
2447           if (*valp)
2448             {
2449               *staticp = 1;
2450               do_cleanups (all_cleanups);
2451               return 0;
2452             }
2453         }
2454
2455       /* Retrieve the list of methods with the name NAME.  */
2456       fns_ptr = value_find_oload_method_list (&temp, name, 
2457                                               0, &num_fns, 
2458                                               &basetype, &boffset);
2459       /* If this is a method only search, and no methods were found
2460          the search has faild.  */
2461       if (method == METHOD && (!fns_ptr || !num_fns))
2462         error (_("Couldn't find method %s%s%s"),
2463                obj_type_name,
2464                (obj_type_name && *obj_type_name) ? "::" : "",
2465                name);
2466       /* If we are dealing with stub method types, they should have
2467          been resolved by find_method_list via
2468          value_find_oload_method_list above.  */
2469       if (fns_ptr)
2470         {
2471           gdb_assert (TYPE_DOMAIN_TYPE (fns_ptr[0].type) != NULL);
2472           method_oload_champ = find_oload_champ (args, nargs,
2473                                                  num_fns, fns_ptr,
2474                                                  NULL, &method_badness);
2475
2476           method_match_quality =
2477               classify_oload_match (method_badness, nargs,
2478                                     oload_method_static (method, fns_ptr,
2479                                                          method_oload_champ));
2480
2481           make_cleanup (xfree, method_badness);
2482         }
2483
2484     }
2485
2486   if (method == NON_METHOD || method == BOTH)
2487     {
2488       const char *qualified_name = NULL;
2489
2490       /* If the overload match is being search for both as a method
2491          and non member function, the first argument must now be
2492          dereferenced.  */
2493       if (method == BOTH)
2494         args[0] = value_ind (args[0]);
2495
2496       if (fsym)
2497         {
2498           qualified_name = SYMBOL_NATURAL_NAME (fsym);
2499
2500           /* If we have a function with a C++ name, try to extract just
2501              the function part.  Do not try this for non-functions (e.g.
2502              function pointers).  */
2503           if (qualified_name
2504               && TYPE_CODE (check_typedef (SYMBOL_TYPE (fsym)))
2505               == TYPE_CODE_FUNC)
2506             {
2507               char *temp;
2508
2509               temp = cp_func_name (qualified_name);
2510
2511               /* If cp_func_name did not remove anything, the name of the
2512                  symbol did not include scope or argument types - it was
2513                  probably a C-style function.  */
2514               if (temp)
2515                 {
2516                   make_cleanup (xfree, temp);
2517                   if (strcmp (temp, qualified_name) == 0)
2518                     func_name = NULL;
2519                   else
2520                     func_name = temp;
2521                 }
2522             }
2523         }
2524       else
2525         {
2526           func_name = name;
2527           qualified_name = name;
2528         }
2529
2530       /* If there was no C++ name, this must be a C-style function or
2531          not a function at all.  Just return the same symbol.  Do the
2532          same if cp_func_name fails for some reason.  */
2533       if (func_name == NULL)
2534         {
2535           *symp = fsym;
2536           do_cleanups (all_cleanups);
2537           return 0;
2538         }
2539
2540       func_oload_champ = find_oload_champ_namespace (args, nargs,
2541                                                      func_name,
2542                                                      qualified_name,
2543                                                      &oload_syms,
2544                                                      &func_badness,
2545                                                      no_adl);
2546
2547       if (func_oload_champ >= 0)
2548         func_match_quality = classify_oload_match (func_badness, nargs, 0);
2549
2550       make_cleanup (xfree, oload_syms);
2551       make_cleanup (xfree, func_badness);
2552     }
2553
2554   /* Did we find a match ?  */
2555   if (method_oload_champ == -1 && func_oload_champ == -1)
2556     throw_error (NOT_FOUND_ERROR,
2557                  _("No symbol \"%s\" in current context."),
2558                  name);
2559
2560   /* If we have found both a method match and a function
2561      match, find out which one is better, and calculate match
2562      quality.  */
2563   if (method_oload_champ >= 0 && func_oload_champ >= 0)
2564     {
2565       switch (compare_badness (func_badness, method_badness))
2566         {
2567           case 0: /* Top two contenders are equally good.  */
2568             /* FIXME: GDB does not support the general ambiguous case.
2569              All candidates should be collected and presented the
2570              user.  */
2571             error (_("Ambiguous overload resolution"));
2572             break;
2573           case 1: /* Incomparable top contenders.  */
2574             /* This is an error incompatible candidates
2575                should not have been proposed.  */
2576             error (_("Internal error: incompatible "
2577                      "overload candidates proposed"));
2578             break;
2579           case 2: /* Function champion.  */
2580             method_oload_champ = -1;
2581             match_quality = func_match_quality;
2582             break;
2583           case 3: /* Method champion.  */
2584             func_oload_champ = -1;
2585             match_quality = method_match_quality;
2586             break;
2587           default:
2588             error (_("Internal error: unexpected overload comparison result"));
2589             break;
2590         }
2591     }
2592   else
2593     {
2594       /* We have either a method match or a function match.  */
2595       if (method_oload_champ >= 0)
2596         match_quality = method_match_quality;
2597       else
2598         match_quality = func_match_quality;
2599     }
2600
2601   if (match_quality == INCOMPATIBLE)
2602     {
2603       if (method == METHOD)
2604         error (_("Cannot resolve method %s%s%s to any overloaded instance"),
2605                obj_type_name,
2606                (obj_type_name && *obj_type_name) ? "::" : "",
2607                name);
2608       else
2609         error (_("Cannot resolve function %s to any overloaded instance"),
2610                func_name);
2611     }
2612   else if (match_quality == NON_STANDARD)
2613     {
2614       if (method == METHOD)
2615         warning (_("Using non-standard conversion to match "
2616                    "method %s%s%s to supplied arguments"),
2617                  obj_type_name,
2618                  (obj_type_name && *obj_type_name) ? "::" : "",
2619                  name);
2620       else
2621         warning (_("Using non-standard conversion to match "
2622                    "function %s to supplied arguments"),
2623                  func_name);
2624     }
2625
2626   if (staticp != NULL)
2627     *staticp = oload_method_static (method, fns_ptr, method_oload_champ);
2628
2629   if (method_oload_champ >= 0)
2630     {
2631       if (TYPE_FN_FIELD_VIRTUAL_P (fns_ptr, method_oload_champ))
2632         *valp = value_virtual_fn_field (&temp, fns_ptr, method_oload_champ,
2633                                         basetype, boffset);
2634       else
2635         *valp = value_fn_field (&temp, fns_ptr, method_oload_champ,
2636                                 basetype, boffset);
2637     }
2638   else
2639     *symp = oload_syms[func_oload_champ];
2640
2641   if (objp)
2642     {
2643       struct type *temp_type = check_typedef (value_type (temp));
2644       struct type *objtype = check_typedef (obj_type);
2645
2646       if (TYPE_CODE (temp_type) != TYPE_CODE_PTR
2647           && (TYPE_CODE (objtype) == TYPE_CODE_PTR
2648               || TYPE_CODE (objtype) == TYPE_CODE_REF))
2649         {
2650           temp = value_addr (temp);
2651         }
2652       *objp = temp;
2653     }
2654
2655   do_cleanups (all_cleanups);
2656
2657   switch (match_quality)
2658     {
2659     case INCOMPATIBLE:
2660       return 100;
2661     case NON_STANDARD:
2662       return 10;
2663     default:                            /* STANDARD */
2664       return 0;
2665     }
2666 }
2667
2668 /* Find the best overload match, searching for FUNC_NAME in namespaces
2669    contained in QUALIFIED_NAME until it either finds a good match or
2670    runs out of namespaces.  It stores the overloaded functions in
2671    *OLOAD_SYMS, and the badness vector in *OLOAD_CHAMP_BV.  The
2672    calling function is responsible for freeing *OLOAD_SYMS and
2673    *OLOAD_CHAMP_BV.  If NO_ADL, argument dependent lookup is not 
2674    performned.  */
2675
2676 static int
2677 find_oload_champ_namespace (struct value **args, int nargs,
2678                             const char *func_name,
2679                             const char *qualified_name,
2680                             struct symbol ***oload_syms,
2681                             struct badness_vector **oload_champ_bv,
2682                             const int no_adl)
2683 {
2684   int oload_champ;
2685
2686   find_oload_champ_namespace_loop (args, nargs,
2687                                    func_name,
2688                                    qualified_name, 0,
2689                                    oload_syms, oload_champ_bv,
2690                                    &oload_champ,
2691                                    no_adl);
2692
2693   return oload_champ;
2694 }
2695
2696 /* Helper function for find_oload_champ_namespace; NAMESPACE_LEN is
2697    how deep we've looked for namespaces, and the champ is stored in
2698    OLOAD_CHAMP.  The return value is 1 if the champ is a good one, 0
2699    if it isn't.  Other arguments are the same as in
2700    find_oload_champ_namespace
2701
2702    It is the caller's responsibility to free *OLOAD_SYMS and
2703    *OLOAD_CHAMP_BV.  */
2704
2705 static int
2706 find_oload_champ_namespace_loop (struct value **args, int nargs,
2707                                  const char *func_name,
2708                                  const char *qualified_name,
2709                                  int namespace_len,
2710                                  struct symbol ***oload_syms,
2711                                  struct badness_vector **oload_champ_bv,
2712                                  int *oload_champ,
2713                                  const int no_adl)
2714 {
2715   int next_namespace_len = namespace_len;
2716   int searched_deeper = 0;
2717   int num_fns = 0;
2718   struct cleanup *old_cleanups;
2719   int new_oload_champ;
2720   struct symbol **new_oload_syms;
2721   struct badness_vector *new_oload_champ_bv;
2722   char *new_namespace;
2723
2724   if (next_namespace_len != 0)
2725     {
2726       gdb_assert (qualified_name[next_namespace_len] == ':');
2727       next_namespace_len +=  2;
2728     }
2729   next_namespace_len +=
2730     cp_find_first_component (qualified_name + next_namespace_len);
2731
2732   /* Initialize these to values that can safely be xfree'd.  */
2733   *oload_syms = NULL;
2734   *oload_champ_bv = NULL;
2735
2736   /* First, see if we have a deeper namespace we can search in.
2737      If we get a good match there, use it.  */
2738
2739   if (qualified_name[next_namespace_len] == ':')
2740     {
2741       searched_deeper = 1;
2742
2743       if (find_oload_champ_namespace_loop (args, nargs,
2744                                            func_name, qualified_name,
2745                                            next_namespace_len,
2746                                            oload_syms, oload_champ_bv,
2747                                            oload_champ, no_adl))
2748         {
2749           return 1;
2750         }
2751     };
2752
2753   /* If we reach here, either we're in the deepest namespace or we
2754      didn't find a good match in a deeper namespace.  But, in the
2755      latter case, we still have a bad match in a deeper namespace;
2756      note that we might not find any match at all in the current
2757      namespace.  (There's always a match in the deepest namespace,
2758      because this overload mechanism only gets called if there's a
2759      function symbol to start off with.)  */
2760
2761   old_cleanups = make_cleanup (xfree, *oload_syms);
2762   make_cleanup (xfree, *oload_champ_bv);
2763   new_namespace = alloca (namespace_len + 1);
2764   strncpy (new_namespace, qualified_name, namespace_len);
2765   new_namespace[namespace_len] = '\0';
2766   new_oload_syms = make_symbol_overload_list (func_name,
2767                                               new_namespace);
2768
2769   /* If we have reached the deepest level perform argument
2770      determined lookup.  */
2771   if (!searched_deeper && !no_adl)
2772     {
2773       int ix;
2774       struct type **arg_types;
2775
2776       /* Prepare list of argument types for overload resolution.  */
2777       arg_types = (struct type **)
2778         alloca (nargs * (sizeof (struct type *)));
2779       for (ix = 0; ix < nargs; ix++)
2780         arg_types[ix] = value_type (args[ix]);
2781       make_symbol_overload_list_adl (arg_types, nargs, func_name);
2782     }
2783
2784   while (new_oload_syms[num_fns])
2785     ++num_fns;
2786
2787   new_oload_champ = find_oload_champ (args, nargs, num_fns,
2788                                       NULL, new_oload_syms,
2789                                       &new_oload_champ_bv);
2790
2791   /* Case 1: We found a good match.  Free earlier matches (if any),
2792      and return it.  Case 2: We didn't find a good match, but we're
2793      not the deepest function.  Then go with the bad match that the
2794      deeper function found.  Case 3: We found a bad match, and we're
2795      the deepest function.  Then return what we found, even though
2796      it's a bad match.  */
2797
2798   if (new_oload_champ != -1
2799       && classify_oload_match (new_oload_champ_bv, nargs, 0) == STANDARD)
2800     {
2801       *oload_syms = new_oload_syms;
2802       *oload_champ = new_oload_champ;
2803       *oload_champ_bv = new_oload_champ_bv;
2804       do_cleanups (old_cleanups);
2805       return 1;
2806     }
2807   else if (searched_deeper)
2808     {
2809       xfree (new_oload_syms);
2810       xfree (new_oload_champ_bv);
2811       discard_cleanups (old_cleanups);
2812       return 0;
2813     }
2814   else
2815     {
2816       *oload_syms = new_oload_syms;
2817       *oload_champ = new_oload_champ;
2818       *oload_champ_bv = new_oload_champ_bv;
2819       do_cleanups (old_cleanups);
2820       return 0;
2821     }
2822 }
2823
2824 /* Look for a function to take NARGS args of ARGS.  Find
2825    the best match from among the overloaded methods or functions
2826    given by FNS_PTR or OLOAD_SYMS, respectively.  One, and only one of
2827    FNS_PTR and OLOAD_SYMS can be non-NULL.  The number of
2828    methods/functions in the non-NULL list is given by NUM_FNS.
2829    Return the index of the best match; store an indication of the
2830    quality of the match in OLOAD_CHAMP_BV.
2831
2832    It is the caller's responsibility to free *OLOAD_CHAMP_BV.  */
2833
2834 static int
2835 find_oload_champ (struct value **args, int nargs,
2836                   int num_fns, struct fn_field *fns_ptr,
2837                   struct symbol **oload_syms,
2838                   struct badness_vector **oload_champ_bv)
2839 {
2840   int ix;
2841   /* A measure of how good an overloaded instance is.  */
2842   struct badness_vector *bv;
2843   /* Index of best overloaded function.  */
2844   int oload_champ = -1;
2845   /* Current ambiguity state for overload resolution.  */
2846   int oload_ambiguous = 0;
2847   /* 0 => no ambiguity, 1 => two good funcs, 2 => incomparable funcs.  */
2848
2849   /* A champion can be found among methods alone, or among functions
2850      alone, but not both.  */
2851   gdb_assert ((fns_ptr != NULL) + (oload_syms != NULL) == 1);
2852
2853   *oload_champ_bv = NULL;
2854
2855   /* Consider each candidate in turn.  */
2856   for (ix = 0; ix < num_fns; ix++)
2857     {
2858       int jj;
2859       int static_offset;
2860       int nparms;
2861       struct type **parm_types;
2862
2863       if (fns_ptr != NULL)
2864         {
2865           nparms = TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (fns_ptr, ix));
2866           static_offset = oload_method_static (1, fns_ptr, ix);
2867         }
2868       else
2869         {
2870           /* If it's not a method, this is the proper place.  */
2871           nparms = TYPE_NFIELDS (SYMBOL_TYPE (oload_syms[ix]));
2872           static_offset = 0;
2873         }
2874
2875       /* Prepare array of parameter types.  */
2876       parm_types = (struct type **) 
2877         xmalloc (nparms * (sizeof (struct type *)));
2878       for (jj = 0; jj < nparms; jj++)
2879         parm_types[jj] = (fns_ptr != NULL
2880                           ? (TYPE_FN_FIELD_ARGS (fns_ptr, ix)[jj].type)
2881                           : TYPE_FIELD_TYPE (SYMBOL_TYPE (oload_syms[ix]), 
2882                                              jj));
2883
2884       /* Compare parameter types to supplied argument types.  Skip
2885          THIS for static methods.  */
2886       bv = rank_function (parm_types, nparms, 
2887                           args + static_offset,
2888                           nargs - static_offset);
2889
2890       if (!*oload_champ_bv)
2891         {
2892           *oload_champ_bv = bv;
2893           oload_champ = 0;
2894         }
2895       else /* See whether current candidate is better or worse than
2896               previous best.  */
2897         switch (compare_badness (bv, *oload_champ_bv))
2898           {
2899           case 0:               /* Top two contenders are equally good.  */
2900             oload_ambiguous = 1;
2901             break;
2902           case 1:               /* Incomparable top contenders.  */
2903             oload_ambiguous = 2;
2904             break;
2905           case 2:               /* New champion, record details.  */
2906             *oload_champ_bv = bv;
2907             oload_ambiguous = 0;
2908             oload_champ = ix;
2909             break;
2910           case 3:
2911           default:
2912             break;
2913           }
2914       xfree (parm_types);
2915       if (overload_debug)
2916         {
2917           if (fns_ptr)
2918             fprintf_filtered (gdb_stderr,
2919                               "Overloaded method instance %s, # of parms %d\n",
2920                               fns_ptr[ix].physname, nparms);
2921           else
2922             fprintf_filtered (gdb_stderr,
2923                               "Overloaded function instance "
2924                               "%s # of parms %d\n",
2925                               SYMBOL_DEMANGLED_NAME (oload_syms[ix]), 
2926                               nparms);
2927           for (jj = 0; jj < nargs - static_offset; jj++)
2928             fprintf_filtered (gdb_stderr,
2929                               "...Badness @ %d : %d\n", 
2930                               jj, bv->rank[jj].rank);
2931           fprintf_filtered (gdb_stderr, "Overload resolution "
2932                             "champion is %d, ambiguous? %d\n", 
2933                             oload_champ, oload_ambiguous);
2934         }
2935     }
2936
2937   return oload_champ;
2938 }
2939
2940 /* Return 1 if we're looking at a static method, 0 if we're looking at
2941    a non-static method or a function that isn't a method.  */
2942
2943 static int
2944 oload_method_static (int method, struct fn_field *fns_ptr, int index)
2945 {
2946   if (method && fns_ptr && index >= 0
2947       && TYPE_FN_FIELD_STATIC_P (fns_ptr, index))
2948     return 1;
2949   else
2950     return 0;
2951 }
2952
2953 /* Check how good an overload match OLOAD_CHAMP_BV represents.  */
2954
2955 static enum oload_classification
2956 classify_oload_match (struct badness_vector *oload_champ_bv,
2957                       int nargs,
2958                       int static_offset)
2959 {
2960   int ix;
2961   enum oload_classification worst = STANDARD;
2962
2963   for (ix = 1; ix <= nargs - static_offset; ix++)
2964     {
2965       /* If this conversion is as bad as INCOMPATIBLE_TYPE_BADNESS
2966          or worse return INCOMPATIBLE.  */
2967       if (compare_ranks (oload_champ_bv->rank[ix],
2968                          INCOMPATIBLE_TYPE_BADNESS) <= 0)
2969         return INCOMPATIBLE;    /* Truly mismatched types.  */
2970       /* Otherwise If this conversion is as bad as
2971          NS_POINTER_CONVERSION_BADNESS or worse return NON_STANDARD.  */
2972       else if (compare_ranks (oload_champ_bv->rank[ix],
2973                               NS_POINTER_CONVERSION_BADNESS) <= 0)
2974         worst = NON_STANDARD;   /* Non-standard type conversions
2975                                    needed.  */
2976     }
2977
2978   /* If no INCOMPATIBLE classification was found, return the worst one
2979      that was found (if any).  */
2980   return worst;
2981 }
2982
2983 /* C++: return 1 is NAME is a legitimate name for the destructor of
2984    type TYPE.  If TYPE does not have a destructor, or if NAME is
2985    inappropriate for TYPE, an error is signaled.  Parameter TYPE should not yet
2986    have CHECK_TYPEDEF applied, this function will apply it itself.  */
2987
2988 int
2989 destructor_name_p (const char *name, struct type *type)
2990 {
2991   if (name[0] == '~')
2992     {
2993       const char *dname = type_name_no_tag_or_error (type);
2994       const char *cp = strchr (dname, '<');
2995       unsigned int len;
2996
2997       /* Do not compare the template part for template classes.  */
2998       if (cp == NULL)
2999         len = strlen (dname);
3000       else
3001         len = cp - dname;
3002       if (strlen (name + 1) != len || strncmp (dname, name + 1, len) != 0)
3003         error (_("name of destructor must equal name of class"));
3004       else
3005         return 1;
3006     }
3007   return 0;
3008 }
3009
3010 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
3011    return the appropriate member (or the address of the member, if
3012    WANT_ADDRESS).  This function is used to resolve user expressions
3013    of the form "DOMAIN::NAME".  For more details on what happens, see
3014    the comment before value_struct_elt_for_reference.  */
3015
3016 struct value *
3017 value_aggregate_elt (struct type *curtype, char *name,
3018                      struct type *expect_type, int want_address,
3019                      enum noside noside)
3020 {
3021   switch (TYPE_CODE (curtype))
3022     {
3023     case TYPE_CODE_STRUCT:
3024     case TYPE_CODE_UNION:
3025       return value_struct_elt_for_reference (curtype, 0, curtype, 
3026                                              name, expect_type,
3027                                              want_address, noside);
3028     case TYPE_CODE_NAMESPACE:
3029       return value_namespace_elt (curtype, name, 
3030                                   want_address, noside);
3031     default:
3032       internal_error (__FILE__, __LINE__,
3033                       _("non-aggregate type in value_aggregate_elt"));
3034     }
3035 }
3036
3037 /* Compares the two method/function types T1 and T2 for "equality" 
3038    with respect to the methods' parameters.  If the types of the
3039    two parameter lists are the same, returns 1; 0 otherwise.  This
3040    comparison may ignore any artificial parameters in T1 if
3041    SKIP_ARTIFICIAL is non-zero.  This function will ALWAYS skip
3042    the first artificial parameter in T1, assumed to be a 'this' pointer.
3043
3044    The type T2 is expected to have come from make_params (in eval.c).  */
3045
3046 static int
3047 compare_parameters (struct type *t1, struct type *t2, int skip_artificial)
3048 {
3049   int start = 0;
3050
3051   if (TYPE_NFIELDS (t1) > 0 && TYPE_FIELD_ARTIFICIAL (t1, 0))
3052     ++start;
3053
3054   /* If skipping artificial fields, find the first real field
3055      in T1.  */
3056   if (skip_artificial)
3057     {
3058       while (start < TYPE_NFIELDS (t1)
3059              && TYPE_FIELD_ARTIFICIAL (t1, start))
3060         ++start;
3061     }
3062
3063   /* Now compare parameters.  */
3064
3065   /* Special case: a method taking void.  T1 will contain no
3066      non-artificial fields, and T2 will contain TYPE_CODE_VOID.  */
3067   if ((TYPE_NFIELDS (t1) - start) == 0 && TYPE_NFIELDS (t2) == 1
3068       && TYPE_CODE (TYPE_FIELD_TYPE (t2, 0)) == TYPE_CODE_VOID)
3069     return 1;
3070
3071   if ((TYPE_NFIELDS (t1) - start) == TYPE_NFIELDS (t2))
3072     {
3073       int i;
3074
3075       for (i = 0; i < TYPE_NFIELDS (t2); ++i)
3076         {
3077           if (compare_ranks (rank_one_type (TYPE_FIELD_TYPE (t1, start + i),
3078                                             TYPE_FIELD_TYPE (t2, i), NULL),
3079                              EXACT_MATCH_BADNESS) != 0)
3080             return 0;
3081         }
3082
3083       return 1;
3084     }
3085
3086   return 0;
3087 }
3088
3089 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
3090    return the address of this member as a "pointer to member" type.
3091    If INTYPE is non-null, then it will be the type of the member we
3092    are looking for.  This will help us resolve "pointers to member
3093    functions".  This function is used to resolve user expressions of
3094    the form "DOMAIN::NAME".  */
3095
3096 static struct value *
3097 value_struct_elt_for_reference (struct type *domain, int offset,
3098                                 struct type *curtype, char *name,
3099                                 struct type *intype, 
3100                                 int want_address,
3101                                 enum noside noside)
3102 {
3103   struct type *t = curtype;
3104   int i;
3105   struct value *v, *result;
3106
3107   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
3108       && TYPE_CODE (t) != TYPE_CODE_UNION)
3109     error (_("Internal error: non-aggregate type "
3110              "to value_struct_elt_for_reference"));
3111
3112   for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
3113     {
3114       const char *t_field_name = TYPE_FIELD_NAME (t, i);
3115
3116       if (t_field_name && strcmp (t_field_name, name) == 0)
3117         {
3118           if (field_is_static (&TYPE_FIELD (t, i)))
3119             {
3120               v = value_static_field (t, i);
3121               if (want_address)
3122                 v = value_addr (v);
3123               return v;
3124             }
3125           if (TYPE_FIELD_PACKED (t, i))
3126             error (_("pointers to bitfield members not allowed"));
3127
3128           if (want_address)
3129             return value_from_longest
3130               (lookup_memberptr_type (TYPE_FIELD_TYPE (t, i), domain),
3131                offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
3132           else if (noside != EVAL_NORMAL)
3133             return allocate_value (TYPE_FIELD_TYPE (t, i));
3134           else
3135             {
3136               /* Try to evaluate NAME as a qualified name with implicit
3137                  this pointer.  In this case, attempt to return the
3138                  equivalent to `this->*(&TYPE::NAME)'.  */
3139               v = value_of_this_silent (current_language);
3140               if (v != NULL)
3141                 {
3142                   struct value *ptr;
3143                   long mem_offset;
3144                   struct type *type, *tmp;
3145
3146                   ptr = value_aggregate_elt (domain, name, NULL, 1, noside);
3147                   type = check_typedef (value_type (ptr));
3148                   gdb_assert (type != NULL
3149                               && TYPE_CODE (type) == TYPE_CODE_MEMBERPTR);
3150                   tmp = lookup_pointer_type (TYPE_DOMAIN_TYPE (type));
3151                   v = value_cast_pointers (tmp, v, 1);
3152                   mem_offset = value_as_long (ptr);
3153                   tmp = lookup_pointer_type (TYPE_TARGET_TYPE (type));
3154                   result = value_from_pointer (tmp,
3155                                                value_as_long (v) + mem_offset);
3156                   return value_ind (result);
3157                 }
3158
3159               error (_("Cannot reference non-static field \"%s\""), name);
3160             }
3161         }
3162     }
3163
3164   /* C++: If it was not found as a data field, then try to return it
3165      as a pointer to a method.  */
3166
3167   /* Perform all necessary dereferencing.  */
3168   while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
3169     intype = TYPE_TARGET_TYPE (intype);
3170
3171   for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
3172     {
3173       const char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
3174       char dem_opname[64];
3175
3176       if (strncmp (t_field_name, "__", 2) == 0 
3177           || strncmp (t_field_name, "op", 2) == 0 
3178           || strncmp (t_field_name, "type", 4) == 0)
3179         {
3180           if (cplus_demangle_opname (t_field_name, 
3181                                      dem_opname, DMGL_ANSI))
3182             t_field_name = dem_opname;
3183           else if (cplus_demangle_opname (t_field_name, 
3184                                           dem_opname, 0))
3185             t_field_name = dem_opname;
3186         }
3187       if (t_field_name && strcmp (t_field_name, name) == 0)
3188         {
3189           int j;
3190           int len = TYPE_FN_FIELDLIST_LENGTH (t, i);
3191           struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
3192
3193           check_stub_method_group (t, i);
3194
3195           if (intype)
3196             {
3197               for (j = 0; j < len; ++j)
3198                 {
3199                   if (compare_parameters (TYPE_FN_FIELD_TYPE (f, j), intype, 0)
3200                       || compare_parameters (TYPE_FN_FIELD_TYPE (f, j),
3201                                              intype, 1))
3202                     break;
3203                 }
3204
3205               if (j == len)
3206                 error (_("no member function matches "
3207                          "that type instantiation"));
3208             }
3209           else
3210             {
3211               int ii;
3212
3213               j = -1;
3214               for (ii = 0; ii < len; ++ii)
3215                 {
3216                   /* Skip artificial methods.  This is necessary if,
3217                      for example, the user wants to "print
3218                      subclass::subclass" with only one user-defined
3219                      constructor.  There is no ambiguity in this case.
3220                      We are careful here to allow artificial methods
3221                      if they are the unique result.  */
3222                   if (TYPE_FN_FIELD_ARTIFICIAL (f, ii))
3223                     {
3224                       if (j == -1)
3225                         j = ii;
3226                       continue;
3227                     }
3228
3229                   /* Desired method is ambiguous if more than one
3230                      method is defined.  */
3231                   if (j != -1 && !TYPE_FN_FIELD_ARTIFICIAL (f, j))
3232                     error (_("non-unique member `%s' requires "
3233                              "type instantiation"), name);
3234
3235                   j = ii;
3236                 }
3237
3238               if (j == -1)
3239                 error (_("no matching member function"));
3240             }
3241
3242           if (TYPE_FN_FIELD_STATIC_P (f, j))
3243             {
3244               struct symbol *s = 
3245                 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
3246                                0, VAR_DOMAIN, 0);
3247
3248               if (s == NULL)
3249                 return NULL;
3250
3251               if (want_address)
3252                 return value_addr (read_var_value (s, 0));
3253               else
3254                 return read_var_value (s, 0);
3255             }
3256
3257           if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
3258             {
3259               if (want_address)
3260                 {
3261                   result = allocate_value
3262                     (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
3263                   cplus_make_method_ptr (value_type (result),
3264                                          value_contents_writeable (result),
3265                                          TYPE_FN_FIELD_VOFFSET (f, j), 1);
3266                 }
3267               else if (noside == EVAL_AVOID_SIDE_EFFECTS)
3268                 return allocate_value (TYPE_FN_FIELD_TYPE (f, j));
3269               else
3270                 error (_("Cannot reference virtual member function \"%s\""),
3271                        name);
3272             }
3273           else
3274             {
3275               struct symbol *s = 
3276                 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
3277                                0, VAR_DOMAIN, 0);
3278
3279               if (s == NULL)
3280                 return NULL;
3281
3282               v = read_var_value (s, 0);
3283               if (!want_address)
3284                 result = v;
3285               else
3286                 {
3287                   result = allocate_value (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
3288                   cplus_make_method_ptr (value_type (result),
3289                                          value_contents_writeable (result),
3290                                          value_address (v), 0);
3291                 }
3292             }
3293           return result;
3294         }
3295     }
3296   for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
3297     {
3298       struct value *v;
3299       int base_offset;
3300
3301       if (BASETYPE_VIA_VIRTUAL (t, i))
3302         base_offset = 0;
3303       else
3304         base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
3305       v = value_struct_elt_for_reference (domain,
3306                                           offset + base_offset,
3307                                           TYPE_BASECLASS (t, i),
3308                                           name, intype, 
3309                                           want_address, noside);
3310       if (v)
3311         return v;
3312     }
3313
3314   /* As a last chance, pretend that CURTYPE is a namespace, and look
3315      it up that way; this (frequently) works for types nested inside
3316      classes.  */
3317
3318   return value_maybe_namespace_elt (curtype, name, 
3319                                     want_address, noside);
3320 }
3321
3322 /* C++: Return the member NAME of the namespace given by the type
3323    CURTYPE.  */
3324
3325 static struct value *
3326 value_namespace_elt (const struct type *curtype,
3327                      char *name, int want_address,
3328                      enum noside noside)
3329 {
3330   struct value *retval = value_maybe_namespace_elt (curtype, name,
3331                                                     want_address, 
3332                                                     noside);
3333
3334   if (retval == NULL)
3335     error (_("No symbol \"%s\" in namespace \"%s\"."), 
3336            name, TYPE_TAG_NAME (curtype));
3337
3338   return retval;
3339 }
3340
3341 /* A helper function used by value_namespace_elt and
3342    value_struct_elt_for_reference.  It looks up NAME inside the
3343    context CURTYPE; this works if CURTYPE is a namespace or if CURTYPE
3344    is a class and NAME refers to a type in CURTYPE itself (as opposed
3345    to, say, some base class of CURTYPE).  */
3346
3347 static struct value *
3348 value_maybe_namespace_elt (const struct type *curtype,
3349                            char *name, int want_address,
3350                            enum noside noside)
3351 {
3352   const char *namespace_name = TYPE_TAG_NAME (curtype);
3353   struct symbol *sym;
3354   struct value *result;
3355
3356   sym = cp_lookup_symbol_namespace (namespace_name, name,
3357                                     get_selected_block (0), VAR_DOMAIN);
3358
3359   if (sym == NULL)
3360     {
3361       char *concatenated_name = alloca (strlen (namespace_name) + 2
3362                                         + strlen (name) + 1);
3363
3364       sprintf (concatenated_name, "%s::%s", namespace_name, name);
3365       sym = lookup_static_symbol_aux (concatenated_name, VAR_DOMAIN);
3366     }
3367
3368   if (sym == NULL)
3369     return NULL;
3370   else if ((noside == EVAL_AVOID_SIDE_EFFECTS)
3371            && (SYMBOL_CLASS (sym) == LOC_TYPEDEF))
3372     result = allocate_value (SYMBOL_TYPE (sym));
3373   else
3374     result = value_of_variable (sym, get_selected_block (0));
3375
3376   if (result && want_address)
3377     result = value_addr (result);
3378
3379   return result;
3380 }
3381
3382 /* Given a pointer or a reference value V, find its real (RTTI) type.
3383
3384    Other parameters FULL, TOP, USING_ENC as with value_rtti_type()
3385    and refer to the values computed for the object pointed to.  */
3386
3387 struct type *
3388 value_rtti_indirect_type (struct value *v, int *full, 
3389                           int *top, int *using_enc)
3390 {
3391   struct value *target;
3392   struct type *type, *real_type, *target_type;
3393
3394   type = value_type (v);
3395   type = check_typedef (type);
3396   if (TYPE_CODE (type) == TYPE_CODE_REF)
3397     target = coerce_ref (v);
3398   else if (TYPE_CODE (type) == TYPE_CODE_PTR)
3399     target = value_ind (v);
3400   else
3401     return NULL;
3402
3403   real_type = value_rtti_type (target, full, top, using_enc);
3404
3405   if (real_type)
3406     {
3407       /* Copy qualifiers to the referenced object.  */
3408       target_type = value_type (target);
3409       real_type = make_cv_type (TYPE_CONST (target_type),
3410                                 TYPE_VOLATILE (target_type), real_type, NULL);
3411       if (TYPE_CODE (type) == TYPE_CODE_REF)
3412         real_type = lookup_reference_type (real_type);
3413       else if (TYPE_CODE (type) == TYPE_CODE_PTR)
3414         real_type = lookup_pointer_type (real_type);
3415       else
3416         internal_error (__FILE__, __LINE__, _("Unexpected value type."));
3417
3418       /* Copy qualifiers to the pointer/reference.  */
3419       real_type = make_cv_type (TYPE_CONST (type), TYPE_VOLATILE (type),
3420                                 real_type, NULL);
3421     }
3422
3423   return real_type;
3424 }
3425
3426 /* Given a value pointed to by ARGP, check its real run-time type, and
3427    if that is different from the enclosing type, create a new value
3428    using the real run-time type as the enclosing type (and of the same
3429    type as ARGP) and return it, with the embedded offset adjusted to
3430    be the correct offset to the enclosed object.  RTYPE is the type,
3431    and XFULL, XTOP, and XUSING_ENC are the other parameters, computed
3432    by value_rtti_type().  If these are available, they can be supplied
3433    and a second call to value_rtti_type() is avoided.  (Pass RTYPE ==
3434    NULL if they're not available.  */
3435
3436 struct value *
3437 value_full_object (struct value *argp, 
3438                    struct type *rtype, 
3439                    int xfull, int xtop,
3440                    int xusing_enc)
3441 {
3442   struct type *real_type;
3443   int full = 0;
3444   int top = -1;
3445   int using_enc = 0;
3446   struct value *new_val;
3447
3448   if (rtype)
3449     {
3450       real_type = rtype;
3451       full = xfull;
3452       top = xtop;
3453       using_enc = xusing_enc;
3454     }
3455   else
3456     real_type = value_rtti_type (argp, &full, &top, &using_enc);
3457
3458   /* If no RTTI data, or if object is already complete, do nothing.  */
3459   if (!real_type || real_type == value_enclosing_type (argp))
3460     return argp;
3461
3462   /* In a destructor we might see a real type that is a superclass of
3463      the object's type.  In this case it is better to leave the object
3464      as-is.  */
3465   if (full
3466       && TYPE_LENGTH (real_type) < TYPE_LENGTH (value_enclosing_type (argp)))
3467     return argp;
3468
3469   /* If we have the full object, but for some reason the enclosing
3470      type is wrong, set it.  */
3471   /* pai: FIXME -- sounds iffy */
3472   if (full)
3473     {
3474       argp = value_copy (argp);
3475       set_value_enclosing_type (argp, real_type);
3476       return argp;
3477     }
3478
3479   /* Check if object is in memory.  */
3480   if (VALUE_LVAL (argp) != lval_memory)
3481     {
3482       warning (_("Couldn't retrieve complete object of RTTI "
3483                  "type %s; object may be in register(s)."), 
3484                TYPE_NAME (real_type));
3485
3486       return argp;
3487     }
3488
3489   /* All other cases -- retrieve the complete object.  */
3490   /* Go back by the computed top_offset from the beginning of the
3491      object, adjusting for the embedded offset of argp if that's what
3492      value_rtti_type used for its computation.  */
3493   new_val = value_at_lazy (real_type, value_address (argp) - top +
3494                            (using_enc ? 0 : value_embedded_offset (argp)));
3495   deprecated_set_value_type (new_val, value_type (argp));
3496   set_value_embedded_offset (new_val, (using_enc
3497                                        ? top + value_embedded_offset (argp)
3498                                        : top));
3499   return new_val;
3500 }
3501
3502
3503 /* Return the value of the local variable, if one exists.  Throw error
3504    otherwise, such as if the request is made in an inappropriate context.  */
3505
3506 struct value *
3507 value_of_this (const struct language_defn *lang)
3508 {
3509   struct symbol *sym;
3510   struct block *b;
3511   struct frame_info *frame;
3512
3513   if (!lang->la_name_of_this)
3514     error (_("no `this' in current language"));
3515
3516   frame = get_selected_frame (_("no frame selected"));
3517
3518   b = get_frame_block (frame, NULL);
3519
3520   sym = lookup_language_this (lang, b);
3521   if (sym == NULL)
3522     error (_("current stack frame does not contain a variable named `%s'"),
3523            lang->la_name_of_this);
3524
3525   return read_var_value (sym, frame);
3526 }
3527
3528 /* Return the value of the local variable, if one exists.  Return NULL
3529    otherwise.  Never throw error.  */
3530
3531 struct value *
3532 value_of_this_silent (const struct language_defn *lang)
3533 {
3534   struct value *ret = NULL;
3535   volatile struct gdb_exception except;
3536
3537   TRY_CATCH (except, RETURN_MASK_ERROR)
3538     {
3539       ret = value_of_this (lang);
3540     }
3541
3542   return ret;
3543 }
3544
3545 /* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH
3546    elements long, starting at LOWBOUND.  The result has the same lower
3547    bound as the original ARRAY.  */
3548
3549 struct value *
3550 value_slice (struct value *array, int lowbound, int length)
3551 {
3552   struct type *slice_range_type, *slice_type, *range_type;
3553   LONGEST lowerbound, upperbound;
3554   struct value *slice;
3555   struct type *array_type;
3556
3557   array_type = check_typedef (value_type (array));
3558   if (TYPE_CODE (array_type) != TYPE_CODE_ARRAY
3559       && TYPE_CODE (array_type) != TYPE_CODE_STRING)
3560     error (_("cannot take slice of non-array"));
3561
3562   range_type = TYPE_INDEX_TYPE (array_type);
3563   if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
3564     error (_("slice from bad array or bitstring"));
3565
3566   if (lowbound < lowerbound || length < 0
3567       || lowbound + length - 1 > upperbound)
3568     error (_("slice out of range"));
3569
3570   /* FIXME-type-allocation: need a way to free this type when we are
3571      done with it.  */
3572   slice_range_type = create_static_range_type ((struct type *) NULL,
3573                                                TYPE_TARGET_TYPE (range_type),
3574                                                lowbound,
3575                                                lowbound + length - 1);
3576
3577   {
3578     struct type *element_type = TYPE_TARGET_TYPE (array_type);
3579     LONGEST offset
3580       = (lowbound - lowerbound) * TYPE_LENGTH (check_typedef (element_type));
3581
3582     slice_type = create_array_type ((struct type *) NULL,
3583                                     element_type,
3584                                     slice_range_type);
3585     TYPE_CODE (slice_type) = TYPE_CODE (array_type);
3586
3587     if (VALUE_LVAL (array) == lval_memory && value_lazy (array))
3588       slice = allocate_value_lazy (slice_type);
3589     else
3590       {
3591         slice = allocate_value (slice_type);
3592         value_contents_copy (slice, 0, array, offset,
3593                              TYPE_LENGTH (slice_type));
3594       }
3595
3596     set_value_component_location (slice, array);
3597     VALUE_FRAME_ID (slice) = VALUE_FRAME_ID (array);
3598     set_value_offset (slice, value_offset (array) + offset);
3599   }
3600
3601   return slice;
3602 }
3603
3604 /* Create a value for a FORTRAN complex number.  Currently most of the
3605    time values are coerced to COMPLEX*16 (i.e. a complex number
3606    composed of 2 doubles.  This really should be a smarter routine
3607    that figures out precision inteligently as opposed to assuming
3608    doubles.  FIXME: fmb  */
3609
3610 struct value *
3611 value_literal_complex (struct value *arg1, 
3612                        struct value *arg2,
3613                        struct type *type)
3614 {
3615   struct value *val;
3616   struct type *real_type = TYPE_TARGET_TYPE (type);
3617
3618   val = allocate_value (type);
3619   arg1 = value_cast (real_type, arg1);
3620   arg2 = value_cast (real_type, arg2);
3621
3622   memcpy (value_contents_raw (val),
3623           value_contents (arg1), TYPE_LENGTH (real_type));
3624   memcpy (value_contents_raw (val) + TYPE_LENGTH (real_type),
3625           value_contents (arg2), TYPE_LENGTH (real_type));
3626   return val;
3627 }
3628
3629 /* Cast a value into the appropriate complex data type.  */
3630
3631 static struct value *
3632 cast_into_complex (struct type *type, struct value *val)
3633 {
3634   struct type *real_type = TYPE_TARGET_TYPE (type);
3635
3636   if (TYPE_CODE (value_type (val)) == TYPE_CODE_COMPLEX)
3637     {
3638       struct type *val_real_type = TYPE_TARGET_TYPE (value_type (val));
3639       struct value *re_val = allocate_value (val_real_type);
3640       struct value *im_val = allocate_value (val_real_type);
3641
3642       memcpy (value_contents_raw (re_val),
3643               value_contents (val), TYPE_LENGTH (val_real_type));
3644       memcpy (value_contents_raw (im_val),
3645               value_contents (val) + TYPE_LENGTH (val_real_type),
3646               TYPE_LENGTH (val_real_type));
3647
3648       return value_literal_complex (re_val, im_val, type);
3649     }
3650   else if (TYPE_CODE (value_type (val)) == TYPE_CODE_FLT
3651            || TYPE_CODE (value_type (val)) == TYPE_CODE_INT)
3652     return value_literal_complex (val, 
3653                                   value_zero (real_type, not_lval), 
3654                                   type);
3655   else
3656     error (_("cannot cast non-number to complex"));
3657 }
3658
3659 void
3660 _initialize_valops (void)
3661 {
3662   add_setshow_boolean_cmd ("overload-resolution", class_support,
3663                            &overload_resolution, _("\
3664 Set overload resolution in evaluating C++ functions."), _("\
3665 Show overload resolution in evaluating C++ functions."), 
3666                            NULL, NULL,
3667                            show_overload_resolution,
3668                            &setlist, &showlist);
3669   overload_resolution = 1;
3670 }