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