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