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