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