OSDN Git Service

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