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