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