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