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