OSDN Git Service

* valops.c (value_struct_elt_for_reference): Do not rely on
[pf3gnuchains/sourceware.git] / gdb / valops.c
1 /* Perform non-arithmetic operations on values, for GDB.
2
3    Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4    1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
5    2008, 2009 Free Software Foundation, Inc.
6
7    This file is part of GDB.
8
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3 of the License, or
12    (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
22 #include "defs.h"
23 #include "symtab.h"
24 #include "gdbtypes.h"
25 #include "value.h"
26 #include "frame.h"
27 #include "inferior.h"
28 #include "gdbcore.h"
29 #include "target.h"
30 #include "demangle.h"
31 #include "language.h"
32 #include "gdbcmd.h"
33 #include "regcache.h"
34 #include "cp-abi.h"
35 #include "block.h"
36 #include "infcall.h"
37 #include "dictionary.h"
38 #include "cp-support.h"
39 #include "dfp.h"
40 #include "user-regs.h"
41
42 #include <errno.h>
43 #include "gdb_string.h"
44 #include "gdb_assert.h"
45 #include "cp-support.h"
46 #include "observer.h"
47 #include "objfiles.h"
48 #include "symtab.h"
49
50 extern int overload_debug;
51 /* Local functions.  */
52
53 static int typecmp (int staticp, int varargs, int nargs,
54                     struct field t1[], struct value *t2[]);
55
56 static struct value *search_struct_field (char *, struct value *, 
57                                           int, struct type *, int);
58
59 static struct value *search_struct_method (char *, struct value **,
60                                        struct value **,
61                                        int, int *, struct type *);
62
63 static int find_oload_champ_namespace (struct type **, int,
64                                        const char *, const char *,
65                                        struct symbol ***,
66                                        struct badness_vector **);
67
68 static
69 int find_oload_champ_namespace_loop (struct type **, int,
70                                      const char *, const char *,
71                                      int, struct symbol ***,
72                                      struct badness_vector **, int *);
73
74 static int find_oload_champ (struct type **, int, int, int,
75                              struct fn_field *, struct symbol **,
76                              struct badness_vector **);
77
78 static int oload_method_static (int, struct fn_field *, int);
79
80 enum oload_classification { STANDARD, NON_STANDARD, INCOMPATIBLE };
81
82 static enum
83 oload_classification classify_oload_match (struct badness_vector *,
84                                            int, int);
85
86 static struct value *value_struct_elt_for_reference (struct type *,
87                                                      int, struct type *,
88                                                      char *,
89                                                      struct type *,
90                                                      int, enum noside);
91
92 static struct value *value_namespace_elt (const struct type *,
93                                           char *, int , enum noside);
94
95 static struct value *value_maybe_namespace_elt (const struct type *,
96                                                 char *, int,
97                                                 enum noside);
98
99 static CORE_ADDR allocate_space_in_inferior (int);
100
101 static struct value *cast_into_complex (struct type *, struct value *);
102
103 static struct fn_field *find_method_list (struct value **, char *,
104                                           int, struct type *, int *,
105                                           struct type **, int *);
106
107 void _initialize_valops (void);
108
109 #if 0
110 /* Flag for whether we want to abandon failed expression evals by
111    default.  */
112
113 static int auto_abandon = 0;
114 #endif
115
116 int overload_resolution = 0;
117 static void
118 show_overload_resolution (struct ui_file *file, int from_tty,
119                           struct cmd_list_element *c, 
120                           const char *value)
121 {
122   fprintf_filtered (file, _("\
123 Overload resolution in evaluating C++ functions is %s.\n"),
124                     value);
125 }
126
127 /* Find the address of function name NAME in the inferior.  If OBJF_P
128    is non-NULL, *OBJF_P will be set to the OBJFILE where the function
129    is defined.  */
130
131 struct value *
132 find_function_in_inferior (const char *name, struct objfile **objf_p)
133 {
134   struct symbol *sym;
135   sym = lookup_symbol (name, 0, VAR_DOMAIN, 0);
136   if (sym != NULL)
137     {
138       if (SYMBOL_CLASS (sym) != LOC_BLOCK)
139         {
140           error (_("\"%s\" exists in this program but is not a function."),
141                  name);
142         }
143
144       if (objf_p)
145         *objf_p = SYMBOL_SYMTAB (sym)->objfile;
146
147       return value_of_variable (sym, NULL);
148     }
149   else
150     {
151       struct minimal_symbol *msymbol = 
152         lookup_minimal_symbol (name, NULL, NULL);
153       if (msymbol != NULL)
154         {
155           struct objfile *objfile = msymbol_objfile (msymbol);
156           struct gdbarch *gdbarch = get_objfile_arch (objfile);
157
158           struct type *type;
159           CORE_ADDR maddr;
160           type = lookup_pointer_type (builtin_type (gdbarch)->builtin_char);
161           type = lookup_function_type (type);
162           type = lookup_pointer_type (type);
163           maddr = SYMBOL_VALUE_ADDRESS (msymbol);
164
165           if (objf_p)
166             *objf_p = objfile;
167
168           return value_from_pointer (type, maddr);
169         }
170       else
171         {
172           if (!target_has_execution)
173             error (_("evaluation of this expression requires the target program to be active"));
174           else
175             error (_("evaluation of this expression requires the program to have a function \"%s\"."), name);
176         }
177     }
178 }
179
180 /* Allocate NBYTES of space in the inferior using the inferior's
181    malloc and return a value that is a pointer to the allocated
182    space.  */
183
184 struct value *
185 value_allocate_space_in_inferior (int len)
186 {
187   struct objfile *objf;
188   struct value *val = find_function_in_inferior ("malloc", &objf);
189   struct gdbarch *gdbarch = get_objfile_arch (objf);
190   struct value *blocklen;
191
192   blocklen = value_from_longest (builtin_type (gdbarch)->builtin_int, len);
193   val = call_function_by_hand (val, 1, &blocklen);
194   if (value_logical_not (val))
195     {
196       if (!target_has_execution)
197         error (_("No memory available to program now: you need to start the target first"));
198       else
199         error (_("No memory available to program: call to malloc failed"));
200     }
201   return val;
202 }
203
204 static CORE_ADDR
205 allocate_space_in_inferior (int len)
206 {
207   return value_as_long (value_allocate_space_in_inferior (len));
208 }
209
210 /* Cast struct value VAL to type TYPE and return as a value.
211    Both type and val must be of TYPE_CODE_STRUCT or TYPE_CODE_UNION
212    for this to work.  Typedef to one of the codes is permitted.
213    Returns NULL if the cast is neither an upcast nor a downcast.  */
214
215 static struct value *
216 value_cast_structs (struct type *type, struct value *v2)
217 {
218   struct type *t1;
219   struct type *t2;
220   struct value *v;
221
222   gdb_assert (type != NULL && v2 != NULL);
223
224   t1 = check_typedef (type);
225   t2 = check_typedef (value_type (v2));
226
227   /* Check preconditions.  */
228   gdb_assert ((TYPE_CODE (t1) == TYPE_CODE_STRUCT
229                || TYPE_CODE (t1) == TYPE_CODE_UNION)
230               && !!"Precondition is that type is of STRUCT or UNION kind.");
231   gdb_assert ((TYPE_CODE (t2) == TYPE_CODE_STRUCT
232                || TYPE_CODE (t2) == TYPE_CODE_UNION)
233               && !!"Precondition is that value is of STRUCT or UNION kind");
234
235   /* Upcasting: look in the type of the source to see if it contains the
236      type of the target as a superclass.  If so, we'll need to
237      offset the pointer rather than just change its type.  */
238   if (TYPE_NAME (t1) != NULL)
239     {
240       v = search_struct_field (type_name_no_tag (t1),
241                                v2, 0, t2, 1);
242       if (v)
243         return v;
244     }
245
246   /* Downcasting: look in the type of the target to see if it contains the
247      type of the source as a superclass.  If so, we'll need to
248      offset the pointer rather than just change its type.
249      FIXME: This fails silently with virtual inheritance.  */
250   if (TYPE_NAME (t2) != NULL)
251     {
252       v = search_struct_field (type_name_no_tag (t2),
253                                value_zero (t1, not_lval), 0, t1, 1);
254       if (v)
255         {
256           /* Downcasting is possible (t1 is superclass of v2).  */
257           CORE_ADDR addr2 = value_address (v2);
258           addr2 -= value_address (v) + value_embedded_offset (v);
259           return value_at (type, addr2);
260         }
261     }
262
263   return NULL;
264 }
265
266 /* Cast one pointer or reference type to another.  Both TYPE and
267    the type of ARG2 should be pointer types, or else both should be
268    reference types.  Returns the new pointer or reference.  */
269
270 struct value *
271 value_cast_pointers (struct type *type, struct value *arg2)
272 {
273   struct type *type1 = check_typedef (type);
274   struct type *type2 = check_typedef (value_type (arg2));
275   struct type *t1 = check_typedef (TYPE_TARGET_TYPE (type));
276   struct type *t2 = check_typedef (TYPE_TARGET_TYPE (type2));
277
278   if (TYPE_CODE (t1) == TYPE_CODE_STRUCT
279       && TYPE_CODE (t2) == TYPE_CODE_STRUCT
280       && !value_logical_not (arg2))
281     {
282       struct value *v2;
283
284       if (TYPE_CODE (type2) == TYPE_CODE_REF)
285         v2 = coerce_ref (arg2);
286       else
287         v2 = value_ind (arg2);
288       gdb_assert (TYPE_CODE (check_typedef (value_type (v2))) == TYPE_CODE_STRUCT
289                   && !!"Why did coercion fail?");
290       v2 = value_cast_structs (t1, v2);
291       /* At this point we have what we can have, un-dereference if needed.  */
292       if (v2)
293         {
294           struct value *v = value_addr (v2);
295           deprecated_set_value_type (v, type);
296           return v;
297         }
298    }
299
300   /* No superclass found, just change the pointer type.  */
301   arg2 = value_copy (arg2);
302   deprecated_set_value_type (arg2, type);
303   arg2 = value_change_enclosing_type (arg2, type);
304   set_value_pointed_to_offset (arg2, 0);        /* pai: chk_val */
305   return arg2;
306 }
307
308 /* Cast value ARG2 to type TYPE and return as a value.
309    More general than a C cast: accepts any two types of the same length,
310    and if ARG2 is an lvalue it can be cast into anything at all.  */
311 /* In C++, casts may change pointer or object representations.  */
312
313 struct value *
314 value_cast (struct type *type, struct value *arg2)
315 {
316   enum type_code code1;
317   enum type_code code2;
318   int scalar;
319   struct type *type2;
320
321   int convert_to_boolean = 0;
322
323   if (value_type (arg2) == type)
324     return arg2;
325
326   code1 = TYPE_CODE (check_typedef (type));
327
328   /* Check if we are casting struct reference to struct reference.  */
329   if (code1 == TYPE_CODE_REF)
330     {
331       /* We dereference type; then we recurse and finally
332          we generate value of the given reference. Nothing wrong with 
333          that.  */
334       struct type *t1 = check_typedef (type);
335       struct type *dereftype = check_typedef (TYPE_TARGET_TYPE (t1));
336       struct value *val =  value_cast (dereftype, arg2);
337       return value_ref (val); 
338     }
339
340   code2 = TYPE_CODE (check_typedef (value_type (arg2)));
341
342   if (code2 == TYPE_CODE_REF)
343     /* We deref the value and then do the cast.  */
344     return value_cast (type, coerce_ref (arg2)); 
345
346   CHECK_TYPEDEF (type);
347   code1 = TYPE_CODE (type);
348   arg2 = coerce_ref (arg2);
349   type2 = check_typedef (value_type (arg2));
350
351   /* You can't cast to a reference type.  See value_cast_pointers
352      instead.  */
353   gdb_assert (code1 != TYPE_CODE_REF);
354
355   /* A cast to an undetermined-length array_type, such as 
356      (TYPE [])OBJECT, is treated like a cast to (TYPE [N])OBJECT,
357      where N is sizeof(OBJECT)/sizeof(TYPE).  */
358   if (code1 == TYPE_CODE_ARRAY)
359     {
360       struct type *element_type = TYPE_TARGET_TYPE (type);
361       unsigned element_length = TYPE_LENGTH (check_typedef (element_type));
362       if (element_length > 0 && TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
363         {
364           struct type *range_type = TYPE_INDEX_TYPE (type);
365           int val_length = TYPE_LENGTH (type2);
366           LONGEST low_bound, high_bound, new_length;
367           if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
368             low_bound = 0, high_bound = 0;
369           new_length = val_length / element_length;
370           if (val_length % element_length != 0)
371             warning (_("array element type size does not divide object size in cast"));
372           /* FIXME-type-allocation: need a way to free this type when
373              we are done with it.  */
374           range_type = create_range_type ((struct type *) NULL,
375                                           TYPE_TARGET_TYPE (range_type),
376                                           low_bound,
377                                           new_length + low_bound - 1);
378           deprecated_set_value_type (arg2, 
379                                      create_array_type ((struct type *) NULL,
380                                                         element_type, 
381                                                         range_type));
382           return arg2;
383         }
384     }
385
386   if (current_language->c_style_arrays
387       && TYPE_CODE (type2) == TYPE_CODE_ARRAY)
388     arg2 = value_coerce_array (arg2);
389
390   if (TYPE_CODE (type2) == TYPE_CODE_FUNC)
391     arg2 = value_coerce_function (arg2);
392
393   type2 = check_typedef (value_type (arg2));
394   code2 = TYPE_CODE (type2);
395
396   if (code1 == TYPE_CODE_COMPLEX)
397     return cast_into_complex (type, arg2);
398   if (code1 == TYPE_CODE_BOOL)
399     {
400       code1 = TYPE_CODE_INT;
401       convert_to_boolean = 1;
402     }
403   if (code1 == TYPE_CODE_CHAR)
404     code1 = TYPE_CODE_INT;
405   if (code2 == TYPE_CODE_BOOL || code2 == TYPE_CODE_CHAR)
406     code2 = TYPE_CODE_INT;
407
408   scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
409             || code2 == TYPE_CODE_DECFLOAT || code2 == TYPE_CODE_ENUM
410             || code2 == TYPE_CODE_RANGE);
411
412   if ((code1 == TYPE_CODE_STRUCT || code1 == TYPE_CODE_UNION)
413       && (code2 == TYPE_CODE_STRUCT || code2 == TYPE_CODE_UNION)
414       && TYPE_NAME (type) != 0)
415     {
416       struct value *v = value_cast_structs (type, arg2);
417       if (v)
418         return v;
419     }
420
421   if (code1 == TYPE_CODE_FLT && scalar)
422     return value_from_double (type, value_as_double (arg2));
423   else if (code1 == TYPE_CODE_DECFLOAT && scalar)
424     {
425       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         observer_notify_memory_changed (changed_addr, changed_len,
865                                         dest_buffer);
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, char *name,
2540                      struct type *expect_type, 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, expect_type,
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 /* Compares the two method/function types T1 and T2 for "equality" 
2560    with respect to the the methods' parameters.  If the types of the
2561    two parameter lists are the same, returns 1; 0 otherwise.  This
2562    comparison may ignore any artificial parameters in T1 if
2563    SKIP_ARTIFICIAL is non-zero.  This function will ALWAYS skip
2564    the first artificial parameter in T1, assumed to be a 'this' pointer.
2565
2566    The type T2 is expected to have come from make_params (in eval.c).  */
2567
2568 static int
2569 compare_parameters (struct type *t1, struct type *t2, int skip_artificial)
2570 {
2571   int start = 0;
2572
2573   if (TYPE_FIELD_ARTIFICIAL (t1, 0))
2574     ++start;
2575
2576   /* If skipping artificial fields, find the first real field
2577      in T1. */
2578   if (skip_artificial)
2579     {
2580       while (start < TYPE_NFIELDS (t1)
2581              && TYPE_FIELD_ARTIFICIAL (t1, start))
2582         ++start;
2583     }
2584
2585   /* Now compare parameters */
2586
2587   /* Special case: a method taking void.  T1 will contain no
2588      non-artificial fields, and T2 will contain TYPE_CODE_VOID.  */
2589   if ((TYPE_NFIELDS (t1) - start) == 0 && TYPE_NFIELDS (t2) == 1
2590       && TYPE_CODE (TYPE_FIELD_TYPE (t2, 0)) == TYPE_CODE_VOID)
2591     return 1;
2592
2593   if ((TYPE_NFIELDS (t1) - start) == TYPE_NFIELDS (t2))
2594     {
2595       int i;
2596       for (i = 0; i < TYPE_NFIELDS (t2); ++i)
2597         {
2598           if (rank_one_type (TYPE_FIELD_TYPE (t1, start + i),
2599                               TYPE_FIELD_TYPE (t2, i))
2600               != 0)
2601             return 0;
2602         }
2603
2604       return 1;
2605     }
2606
2607   return 0;
2608 }
2609
2610 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
2611    return the address of this member as a "pointer to member" type.
2612    If INTYPE is non-null, then it will be the type of the member we
2613    are looking for.  This will help us resolve "pointers to member
2614    functions".  This function is used to resolve user expressions of
2615    the form "DOMAIN::NAME".  */
2616
2617 static struct value *
2618 value_struct_elt_for_reference (struct type *domain, int offset,
2619                                 struct type *curtype, char *name,
2620                                 struct type *intype, 
2621                                 int want_address,
2622                                 enum noside noside)
2623 {
2624   struct type *t = curtype;
2625   int i;
2626   struct value *v, *result;
2627
2628   if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2629       && TYPE_CODE (t) != TYPE_CODE_UNION)
2630     error (_("Internal error: non-aggregate type to value_struct_elt_for_reference"));
2631
2632   for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
2633     {
2634       char *t_field_name = TYPE_FIELD_NAME (t, i);
2635
2636       if (t_field_name && strcmp (t_field_name, name) == 0)
2637         {
2638           if (field_is_static (&TYPE_FIELD (t, i)))
2639             {
2640               v = value_static_field (t, i);
2641               if (v == NULL)
2642                 error (_("static field %s has been optimized out"),
2643                        name);
2644               if (want_address)
2645                 v = value_addr (v);
2646               return v;
2647             }
2648           if (TYPE_FIELD_PACKED (t, i))
2649             error (_("pointers to bitfield members not allowed"));
2650
2651           if (want_address)
2652             return value_from_longest
2653               (lookup_memberptr_type (TYPE_FIELD_TYPE (t, i), domain),
2654                offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
2655           else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2656             return allocate_value (TYPE_FIELD_TYPE (t, i));
2657           else
2658             error (_("Cannot reference non-static field \"%s\""), name);
2659         }
2660     }
2661
2662   /* C++: If it was not found as a data field, then try to return it
2663      as a pointer to a method.  */
2664
2665   /* Perform all necessary dereferencing.  */
2666   while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
2667     intype = TYPE_TARGET_TYPE (intype);
2668
2669   for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
2670     {
2671       char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
2672       char dem_opname[64];
2673
2674       if (strncmp (t_field_name, "__", 2) == 0 
2675           || strncmp (t_field_name, "op", 2) == 0 
2676           || strncmp (t_field_name, "type", 4) == 0)
2677         {
2678           if (cplus_demangle_opname (t_field_name, 
2679                                      dem_opname, DMGL_ANSI))
2680             t_field_name = dem_opname;
2681           else if (cplus_demangle_opname (t_field_name, 
2682                                           dem_opname, 0))
2683             t_field_name = dem_opname;
2684         }
2685       if (t_field_name && strcmp (t_field_name, name) == 0)
2686         {
2687           int j;
2688           int len = TYPE_FN_FIELDLIST_LENGTH (t, i);
2689           struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
2690
2691           check_stub_method_group (t, i);
2692
2693           if (intype)
2694             {
2695               for (j = 0; j < len; ++j)
2696                 {
2697                   if (compare_parameters (TYPE_FN_FIELD_TYPE (f, j), intype, 0)
2698                       || compare_parameters (TYPE_FN_FIELD_TYPE (f, j), intype, 1))
2699                     break;
2700                 }
2701
2702               if (j == len)
2703                 error (_("no member function matches that type instantiation"));
2704             }
2705           else
2706             {
2707               int ii;
2708
2709               j = -1;
2710               for (ii = 0; ii < TYPE_FN_FIELDLIST_LENGTH (t, i);
2711                    ++ii)
2712                 {
2713                   /* Skip artificial methods.  This is necessary if,
2714                      for example, the user wants to "print
2715                      subclass::subclass" with only one user-defined
2716                      constructor.  There is no ambiguity in this
2717                      case.  */
2718                   if (TYPE_FN_FIELD_ARTIFICIAL (f, ii))
2719                     continue;
2720
2721                   /* Desired method is ambiguous if more than one
2722                      method is defined.  */
2723                   if (j != -1)
2724                     error (_("non-unique member `%s' requires type instantiation"), name);
2725
2726                   j = ii;
2727                 }
2728             }
2729
2730           if (TYPE_FN_FIELD_STATIC_P (f, j))
2731             {
2732               struct symbol *s = 
2733                 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
2734                                0, VAR_DOMAIN, 0);
2735               if (s == NULL)
2736                 return NULL;
2737
2738               if (want_address)
2739                 return value_addr (read_var_value (s, 0));
2740               else
2741                 return read_var_value (s, 0);
2742             }
2743
2744           if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
2745             {
2746               if (want_address)
2747                 {
2748                   result = allocate_value
2749                     (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
2750                   cplus_make_method_ptr (value_type (result),
2751                                          value_contents_writeable (result),
2752                                          TYPE_FN_FIELD_VOFFSET (f, j), 1);
2753                 }
2754               else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2755                 return allocate_value (TYPE_FN_FIELD_TYPE (f, j));
2756               else
2757                 error (_("Cannot reference virtual member function \"%s\""),
2758                        name);
2759             }
2760           else
2761             {
2762               struct symbol *s = 
2763                 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
2764                                0, VAR_DOMAIN, 0);
2765               if (s == NULL)
2766                 return NULL;
2767
2768               v = read_var_value (s, 0);
2769               if (!want_address)
2770                 result = v;
2771               else
2772                 {
2773                   result = allocate_value (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
2774                   cplus_make_method_ptr (value_type (result),
2775                                          value_contents_writeable (result),
2776                                          value_address (v), 0);
2777                 }
2778             }
2779           return result;
2780         }
2781     }
2782   for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
2783     {
2784       struct value *v;
2785       int base_offset;
2786
2787       if (BASETYPE_VIA_VIRTUAL (t, i))
2788         base_offset = 0;
2789       else
2790         base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
2791       v = value_struct_elt_for_reference (domain,
2792                                           offset + base_offset,
2793                                           TYPE_BASECLASS (t, i),
2794                                           name, intype, 
2795                                           want_address, noside);
2796       if (v)
2797         return v;
2798     }
2799
2800   /* As a last chance, pretend that CURTYPE is a namespace, and look
2801      it up that way; this (frequently) works for types nested inside
2802      classes.  */
2803
2804   return value_maybe_namespace_elt (curtype, name, 
2805                                     want_address, noside);
2806 }
2807
2808 /* C++: Return the member NAME of the namespace given by the type
2809    CURTYPE.  */
2810
2811 static struct value *
2812 value_namespace_elt (const struct type *curtype,
2813                      char *name, int want_address,
2814                      enum noside noside)
2815 {
2816   struct value *retval = value_maybe_namespace_elt (curtype, name,
2817                                                     want_address, 
2818                                                     noside);
2819
2820   if (retval == NULL)
2821     error (_("No symbol \"%s\" in namespace \"%s\"."), 
2822            name, TYPE_TAG_NAME (curtype));
2823
2824   return retval;
2825 }
2826
2827 /* A helper function used by value_namespace_elt and
2828    value_struct_elt_for_reference.  It looks up NAME inside the
2829    context CURTYPE; this works if CURTYPE is a namespace or if CURTYPE
2830    is a class and NAME refers to a type in CURTYPE itself (as opposed
2831    to, say, some base class of CURTYPE).  */
2832
2833 static struct value *
2834 value_maybe_namespace_elt (const struct type *curtype,
2835                            char *name, int want_address,
2836                            enum noside noside)
2837 {
2838   const char *namespace_name = TYPE_TAG_NAME (curtype);
2839   struct symbol *sym;
2840   struct value *result;
2841
2842   sym = cp_lookup_symbol_namespace (namespace_name, name, NULL,
2843                                     get_selected_block (0), 
2844                                     VAR_DOMAIN);
2845
2846   if (sym == NULL)
2847     return NULL;
2848   else if ((noside == EVAL_AVOID_SIDE_EFFECTS)
2849            && (SYMBOL_CLASS (sym) == LOC_TYPEDEF))
2850     result = allocate_value (SYMBOL_TYPE (sym));
2851   else
2852     result = value_of_variable (sym, get_selected_block (0));
2853
2854   if (result && want_address)
2855     result = value_addr (result);
2856
2857   return result;
2858 }
2859
2860 /* Given a pointer value V, find the real (RTTI) type of the object it
2861    points to.
2862
2863    Other parameters FULL, TOP, USING_ENC as with value_rtti_type()
2864    and refer to the values computed for the object pointed to.  */
2865
2866 struct type *
2867 value_rtti_target_type (struct value *v, int *full, 
2868                         int *top, int *using_enc)
2869 {
2870   struct value *target;
2871
2872   target = value_ind (v);
2873
2874   return value_rtti_type (target, full, top, using_enc);
2875 }
2876
2877 /* Given a value pointed to by ARGP, check its real run-time type, and
2878    if that is different from the enclosing type, create a new value
2879    using the real run-time type as the enclosing type (and of the same
2880    type as ARGP) and return it, with the embedded offset adjusted to
2881    be the correct offset to the enclosed object.  RTYPE is the type,
2882    and XFULL, XTOP, and XUSING_ENC are the other parameters, computed
2883    by value_rtti_type().  If these are available, they can be supplied
2884    and a second call to value_rtti_type() is avoided.  (Pass RTYPE ==
2885    NULL if they're not available.  */
2886
2887 struct value *
2888 value_full_object (struct value *argp, 
2889                    struct type *rtype, 
2890                    int xfull, int xtop,
2891                    int xusing_enc)
2892 {
2893   struct type *real_type;
2894   int full = 0;
2895   int top = -1;
2896   int using_enc = 0;
2897   struct value *new_val;
2898
2899   if (rtype)
2900     {
2901       real_type = rtype;
2902       full = xfull;
2903       top = xtop;
2904       using_enc = xusing_enc;
2905     }
2906   else
2907     real_type = value_rtti_type (argp, &full, &top, &using_enc);
2908
2909   /* If no RTTI data, or if object is already complete, do nothing.  */
2910   if (!real_type || real_type == value_enclosing_type (argp))
2911     return argp;
2912
2913   /* If we have the full object, but for some reason the enclosing
2914      type is wrong, set it.  */
2915   /* pai: FIXME -- sounds iffy */
2916   if (full)
2917     {
2918       argp = value_change_enclosing_type (argp, real_type);
2919       return argp;
2920     }
2921
2922   /* Check if object is in memory */
2923   if (VALUE_LVAL (argp) != lval_memory)
2924     {
2925       warning (_("Couldn't retrieve complete object of RTTI type %s; object may be in register(s)."), 
2926                TYPE_NAME (real_type));
2927
2928       return argp;
2929     }
2930
2931   /* All other cases -- retrieve the complete object.  */
2932   /* Go back by the computed top_offset from the beginning of the
2933      object, adjusting for the embedded offset of argp if that's what
2934      value_rtti_type used for its computation.  */
2935   new_val = value_at_lazy (real_type, value_address (argp) - top +
2936                            (using_enc ? 0 : value_embedded_offset (argp)));
2937   deprecated_set_value_type (new_val, value_type (argp));
2938   set_value_embedded_offset (new_val, (using_enc
2939                                        ? top + value_embedded_offset (argp)
2940                                        : top));
2941   return new_val;
2942 }
2943
2944
2945 /* Return the value of the local variable, if one exists.
2946    Flag COMPLAIN signals an error if the request is made in an
2947    inappropriate context.  */
2948
2949 struct value *
2950 value_of_local (const char *name, int complain)
2951 {
2952   struct symbol *func, *sym;
2953   struct block *b;
2954   struct value * ret;
2955   struct frame_info *frame;
2956
2957   if (complain)
2958     frame = get_selected_frame (_("no frame selected"));
2959   else
2960     {
2961       frame = deprecated_safe_get_selected_frame ();
2962       if (frame == 0)
2963         return 0;
2964     }
2965
2966   func = get_frame_function (frame);
2967   if (!func)
2968     {
2969       if (complain)
2970         error (_("no `%s' in nameless context"), name);
2971       else
2972         return 0;
2973     }
2974
2975   b = SYMBOL_BLOCK_VALUE (func);
2976   if (dict_empty (BLOCK_DICT (b)))
2977     {
2978       if (complain)
2979         error (_("no args, no `%s'"), name);
2980       else
2981         return 0;
2982     }
2983
2984   /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
2985      symbol instead of the LOC_ARG one (if both exist).  */
2986   sym = lookup_block_symbol (b, name, NULL, VAR_DOMAIN);
2987   if (sym == NULL)
2988     {
2989       if (complain)
2990         error (_("current stack frame does not contain a variable named `%s'"), 
2991                name);
2992       else
2993         return NULL;
2994     }
2995
2996   ret = read_var_value (sym, frame);
2997   if (ret == 0 && complain)
2998     error (_("`%s' argument unreadable"), name);
2999   return ret;
3000 }
3001
3002 /* C++/Objective-C: return the value of the class instance variable,
3003    if one exists.  Flag COMPLAIN signals an error if the request is
3004    made in an inappropriate context.  */
3005
3006 struct value *
3007 value_of_this (int complain)
3008 {
3009   if (!current_language->la_name_of_this)
3010     return 0;
3011   return value_of_local (current_language->la_name_of_this, complain);
3012 }
3013
3014 /* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH
3015    elements long, starting at LOWBOUND.  The result has the same lower
3016    bound as the original ARRAY.  */
3017
3018 struct value *
3019 value_slice (struct value *array, int lowbound, int length)
3020 {
3021   struct type *slice_range_type, *slice_type, *range_type;
3022   LONGEST lowerbound, upperbound;
3023   struct value *slice;
3024   struct type *array_type;
3025
3026   array_type = check_typedef (value_type (array));
3027   if (TYPE_CODE (array_type) != TYPE_CODE_ARRAY
3028       && TYPE_CODE (array_type) != TYPE_CODE_STRING
3029       && TYPE_CODE (array_type) != TYPE_CODE_BITSTRING)
3030     error (_("cannot take slice of non-array"));
3031
3032   range_type = TYPE_INDEX_TYPE (array_type);
3033   if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
3034     error (_("slice from bad array or bitstring"));
3035
3036   if (lowbound < lowerbound || length < 0
3037       || lowbound + length - 1 > upperbound)
3038     error (_("slice out of range"));
3039
3040   /* FIXME-type-allocation: need a way to free this type when we are
3041      done with it.  */
3042   slice_range_type = create_range_type ((struct type *) NULL,
3043                                         TYPE_TARGET_TYPE (range_type),
3044                                         lowbound, 
3045                                         lowbound + length - 1);
3046   if (TYPE_CODE (array_type) == TYPE_CODE_BITSTRING)
3047     {
3048       int i;
3049
3050       slice_type = create_set_type ((struct type *) NULL,
3051                                     slice_range_type);
3052       TYPE_CODE (slice_type) = TYPE_CODE_BITSTRING;
3053       slice = value_zero (slice_type, not_lval);
3054
3055       for (i = 0; i < length; i++)
3056         {
3057           int element = value_bit_index (array_type,
3058                                          value_contents (array),
3059                                          lowbound + i);
3060           if (element < 0)
3061             error (_("internal error accessing bitstring"));
3062           else if (element > 0)
3063             {
3064               int j = i % TARGET_CHAR_BIT;
3065               if (gdbarch_bits_big_endian (get_type_arch (array_type)))
3066                 j = TARGET_CHAR_BIT - 1 - j;
3067               value_contents_raw (slice)[i / TARGET_CHAR_BIT] |= (1 << j);
3068             }
3069         }
3070       /* We should set the address, bitssize, and bitspos, so the
3071          slice can be used on the LHS, but that may require extensions
3072          to value_assign.  For now, just leave as a non_lval.
3073          FIXME.  */
3074     }
3075   else
3076     {
3077       struct type *element_type = TYPE_TARGET_TYPE (array_type);
3078       LONGEST offset =
3079         (lowbound - lowerbound) * TYPE_LENGTH (check_typedef (element_type));
3080
3081       slice_type = create_array_type ((struct type *) NULL, 
3082                                       element_type,
3083                                       slice_range_type);
3084       TYPE_CODE (slice_type) = TYPE_CODE (array_type);
3085
3086       if (VALUE_LVAL (array) == lval_memory && value_lazy (array))
3087         slice = allocate_value_lazy (slice_type);
3088       else
3089         {
3090           slice = allocate_value (slice_type);
3091           memcpy (value_contents_writeable (slice),
3092                   value_contents (array) + offset,
3093                   TYPE_LENGTH (slice_type));
3094         }
3095
3096       set_value_component_location (slice, array);
3097       VALUE_FRAME_ID (slice) = VALUE_FRAME_ID (array);
3098       set_value_offset (slice, value_offset (array) + offset);
3099     }
3100   return slice;
3101 }
3102
3103 /* Create a value for a FORTRAN complex number.  Currently most of the
3104    time values are coerced to COMPLEX*16 (i.e. a complex number
3105    composed of 2 doubles.  This really should be a smarter routine
3106    that figures out precision inteligently as opposed to assuming
3107    doubles.  FIXME: fmb  */
3108
3109 struct value *
3110 value_literal_complex (struct value *arg1, 
3111                        struct value *arg2,
3112                        struct type *type)
3113 {
3114   struct value *val;
3115   struct type *real_type = TYPE_TARGET_TYPE (type);
3116
3117   val = allocate_value (type);
3118   arg1 = value_cast (real_type, arg1);
3119   arg2 = value_cast (real_type, arg2);
3120
3121   memcpy (value_contents_raw (val),
3122           value_contents (arg1), TYPE_LENGTH (real_type));
3123   memcpy (value_contents_raw (val) + TYPE_LENGTH (real_type),
3124           value_contents (arg2), TYPE_LENGTH (real_type));
3125   return val;
3126 }
3127
3128 /* Cast a value into the appropriate complex data type.  */
3129
3130 static struct value *
3131 cast_into_complex (struct type *type, struct value *val)
3132 {
3133   struct type *real_type = TYPE_TARGET_TYPE (type);
3134
3135   if (TYPE_CODE (value_type (val)) == TYPE_CODE_COMPLEX)
3136     {
3137       struct type *val_real_type = TYPE_TARGET_TYPE (value_type (val));
3138       struct value *re_val = allocate_value (val_real_type);
3139       struct value *im_val = allocate_value (val_real_type);
3140
3141       memcpy (value_contents_raw (re_val),
3142               value_contents (val), TYPE_LENGTH (val_real_type));
3143       memcpy (value_contents_raw (im_val),
3144               value_contents (val) + TYPE_LENGTH (val_real_type),
3145               TYPE_LENGTH (val_real_type));
3146
3147       return value_literal_complex (re_val, im_val, type);
3148     }
3149   else if (TYPE_CODE (value_type (val)) == TYPE_CODE_FLT
3150            || TYPE_CODE (value_type (val)) == TYPE_CODE_INT)
3151     return value_literal_complex (val, 
3152                                   value_zero (real_type, not_lval), 
3153                                   type);
3154   else
3155     error (_("cannot cast non-number to complex"));
3156 }
3157
3158 void
3159 _initialize_valops (void)
3160 {
3161   add_setshow_boolean_cmd ("overload-resolution", class_support,
3162                            &overload_resolution, _("\
3163 Set overload resolution in evaluating C++ functions."), _("\
3164 Show overload resolution in evaluating C++ functions."), 
3165                            NULL, NULL,
3166                            show_overload_resolution,
3167                            &setlist, &showlist);
3168   overload_resolution = 1;
3169 }