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