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