]> Git Repo - binutils.git/blob - gdb/valops.c
gdb: handle case where type alignment is unknown
[binutils.git] / gdb / valops.c
1 /* Perform non-arithmetic operations on values, for GDB.
2
3    Copyright (C) 1986-2021 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "symtab.h"
22 #include "gdbtypes.h"
23 #include "value.h"
24 #include "frame.h"
25 #include "inferior.h"
26 #include "gdbcore.h"
27 #include "target.h"
28 #include "demangle.h"
29 #include "language.h"
30 #include "gdbcmd.h"
31 #include "regcache.h"
32 #include "cp-abi.h"
33 #include "block.h"
34 #include "infcall.h"
35 #include "dictionary.h"
36 #include "cp-support.h"
37 #include "target-float.h"
38 #include "tracepoint.h"
39 #include "observable.h"
40 #include "objfiles.h"
41 #include "extension.h"
42 #include "gdbtypes.h"
43 #include "gdbsupport/byte-vector.h"
44
45 /* Local functions.  */
46
47 static int typecmp (int staticp, int varargs, int nargs,
48                     struct field t1[], struct value *t2[]);
49
50 static struct value *search_struct_field (const char *, struct value *, 
51                                           struct type *, int);
52
53 static struct value *search_struct_method (const char *, struct value **,
54                                            struct value **,
55                                            LONGEST, int *, struct type *);
56
57 static int find_oload_champ_namespace (gdb::array_view<value *> args,
58                                        const char *, const char *,
59                                        std::vector<symbol *> *oload_syms,
60                                        badness_vector *,
61                                        const int no_adl);
62
63 static int find_oload_champ_namespace_loop (gdb::array_view<value *> args,
64                                             const char *, const char *,
65                                             int, std::vector<symbol *> *oload_syms,
66                                             badness_vector *, int *,
67                                             const int no_adl);
68
69 static int find_oload_champ (gdb::array_view<value *> args,
70                              size_t num_fns,
71                              fn_field *methods,
72                              xmethod_worker_up *xmethods,
73                              symbol **functions,
74                              badness_vector *oload_champ_bv);
75
76 static int oload_method_static_p (struct fn_field *, int);
77
78 enum oload_classification { STANDARD, NON_STANDARD, INCOMPATIBLE };
79
80 static enum oload_classification classify_oload_match
81   (const badness_vector &, int, int);
82
83 static struct value *value_struct_elt_for_reference (struct type *,
84                                                      int, struct type *,
85                                                      const char *,
86                                                      struct type *,
87                                                      int, enum noside);
88
89 static struct value *value_namespace_elt (const struct type *,
90                                           const char *, int , enum noside);
91
92 static struct value *value_maybe_namespace_elt (const struct type *,
93                                                 const char *, int,
94                                                 enum noside);
95
96 static CORE_ADDR allocate_space_in_inferior (int);
97
98 static struct value *cast_into_complex (struct type *, struct value *);
99
100 bool overload_resolution = false;
101 static void
102 show_overload_resolution (struct ui_file *file, int from_tty,
103                           struct cmd_list_element *c, 
104                           const char *value)
105 {
106   fprintf_filtered (file, _("Overload resolution in evaluating "
107                             "C++ functions is %s.\n"),
108                     value);
109 }
110
111 /* Find the address of function name NAME in the inferior.  If OBJF_P
112    is non-NULL, *OBJF_P will be set to the OBJFILE where the function
113    is defined.  */
114
115 struct value *
116 find_function_in_inferior (const char *name, struct objfile **objf_p)
117 {
118   struct block_symbol sym;
119
120   sym = lookup_symbol (name, 0, VAR_DOMAIN, 0);
121   if (sym.symbol != NULL)
122     {
123       if (SYMBOL_CLASS (sym.symbol) != LOC_BLOCK)
124         {
125           error (_("\"%s\" exists in this program but is not a function."),
126                  name);
127         }
128
129       if (objf_p)
130         *objf_p = symbol_objfile (sym.symbol);
131
132       return value_of_variable (sym.symbol, sym.block);
133     }
134   else
135     {
136       struct bound_minimal_symbol msymbol = 
137         lookup_bound_minimal_symbol (name);
138
139       if (msymbol.minsym != NULL)
140         {
141           struct objfile *objfile = msymbol.objfile;
142           struct gdbarch *gdbarch = objfile->arch ();
143
144           struct type *type;
145           CORE_ADDR maddr;
146           type = lookup_pointer_type (builtin_type (gdbarch)->builtin_char);
147           type = lookup_function_type (type);
148           type = lookup_pointer_type (type);
149           maddr = BMSYMBOL_VALUE_ADDRESS (msymbol);
150
151           if (objf_p)
152             *objf_p = objfile;
153
154           return value_from_pointer (type, maddr);
155         }
156       else
157         {
158           if (!target_has_execution ())
159             error (_("evaluation of this expression "
160                      "requires the target program to be active"));
161           else
162             error (_("evaluation of this expression requires the "
163                      "program to have a function \"%s\"."),
164                    name);
165         }
166     }
167 }
168
169 /* Allocate NBYTES of space in the inferior using the inferior's
170    malloc and return a value that is a pointer to the allocated
171    space.  */
172
173 struct value *
174 value_allocate_space_in_inferior (int len)
175 {
176   struct objfile *objf;
177   struct value *val = find_function_in_inferior ("malloc", &objf);
178   struct gdbarch *gdbarch = objf->arch ();
179   struct value *blocklen;
180
181   blocklen = value_from_longest (builtin_type (gdbarch)->builtin_int, len);
182   val = call_function_by_hand (val, NULL, blocklen);
183   if (value_logical_not (val))
184     {
185       if (!target_has_execution ())
186         error (_("No memory available to program now: "
187                  "you need to start the target first"));
188       else
189         error (_("No memory available to program: call to malloc failed"));
190     }
191   return val;
192 }
193
194 static CORE_ADDR
195 allocate_space_in_inferior (int len)
196 {
197   return value_as_long (value_allocate_space_in_inferior (len));
198 }
199
200 /* Cast struct value VAL to type TYPE and return as a value.
201    Both type and val must be of TYPE_CODE_STRUCT or TYPE_CODE_UNION
202    for this to work.  Typedef to one of the codes is permitted.
203    Returns NULL if the cast is neither an upcast nor a downcast.  */
204
205 static struct value *
206 value_cast_structs (struct type *type, struct value *v2)
207 {
208   struct type *t1;
209   struct type *t2;
210   struct value *v;
211
212   gdb_assert (type != NULL && v2 != NULL);
213
214   t1 = check_typedef (type);
215   t2 = check_typedef (value_type (v2));
216
217   /* Check preconditions.  */
218   gdb_assert ((t1->code () == TYPE_CODE_STRUCT
219                || t1->code () == TYPE_CODE_UNION)
220               && !!"Precondition is that type is of STRUCT or UNION kind.");
221   gdb_assert ((t2->code () == TYPE_CODE_STRUCT
222                || t2->code () == TYPE_CODE_UNION)
223               && !!"Precondition is that value is of STRUCT or UNION kind");
224
225   if (t1->name () != NULL
226       && t2->name () != NULL
227       && !strcmp (t1->name (), t2->name ()))
228     return NULL;
229
230   /* Upcasting: look in the type of the source to see if it contains the
231      type of the target as a superclass.  If so, we'll need to
232      offset the pointer rather than just change its type.  */
233   if (t1->name () != NULL)
234     {
235       v = search_struct_field (t1->name (),
236                                v2, t2, 1);
237       if (v)
238         return v;
239     }
240
241   /* Downcasting: look in the type of the target to see if it contains the
242      type of the source as a superclass.  If so, we'll need to
243      offset the pointer rather than just change its type.  */
244   if (t2->name () != NULL)
245     {
246       /* Try downcasting using the run-time type of the value.  */
247       int full, using_enc;
248       LONGEST top;
249       struct type *real_type;
250
251       real_type = value_rtti_type (v2, &full, &top, &using_enc);
252       if (real_type)
253         {
254           v = value_full_object (v2, real_type, full, top, using_enc);
255           v = value_at_lazy (real_type, value_address (v));
256           real_type = value_type (v);
257
258           /* We might be trying to cast to the outermost enclosing
259              type, in which case search_struct_field won't work.  */
260           if (real_type->name () != NULL
261               && !strcmp (real_type->name (), t1->name ()))
262             return v;
263
264           v = search_struct_field (t2->name (), v, real_type, 1);
265           if (v)
266             return v;
267         }
268
269       /* Try downcasting using information from the destination type
270          T2.  This wouldn't work properly for classes with virtual
271          bases, but those were handled above.  */
272       v = search_struct_field (t2->name (),
273                                value_zero (t1, not_lval), t1, 1);
274       if (v)
275         {
276           /* Downcasting is possible (t1 is superclass of v2).  */
277           CORE_ADDR addr2 = value_address (v2);
278
279           addr2 -= value_address (v) + value_embedded_offset (v);
280           return value_at (type, addr2);
281         }
282     }
283
284   return NULL;
285 }
286
287 /* Cast one pointer or reference type to another.  Both TYPE and
288    the type of ARG2 should be pointer types, or else both should be
289    reference types.  If SUBCLASS_CHECK is non-zero, this will force a
290    check to see whether TYPE is a superclass of ARG2's type.  If
291    SUBCLASS_CHECK is zero, then the subclass check is done only when
292    ARG2 is itself non-zero.  Returns the new pointer or reference.  */
293
294 struct value *
295 value_cast_pointers (struct type *type, struct value *arg2,
296                      int subclass_check)
297 {
298   struct type *type1 = check_typedef (type);
299   struct type *type2 = check_typedef (value_type (arg2));
300   struct type *t1 = check_typedef (TYPE_TARGET_TYPE (type1));
301   struct type *t2 = check_typedef (TYPE_TARGET_TYPE (type2));
302
303   if (t1->code () == TYPE_CODE_STRUCT
304       && t2->code () == TYPE_CODE_STRUCT
305       && (subclass_check || !value_logical_not (arg2)))
306     {
307       struct value *v2;
308
309       if (TYPE_IS_REFERENCE (type2))
310         v2 = coerce_ref (arg2);
311       else
312         v2 = value_ind (arg2);
313       gdb_assert (check_typedef (value_type (v2))->code ()
314                   == TYPE_CODE_STRUCT && !!"Why did coercion fail?");
315       v2 = value_cast_structs (t1, v2);
316       /* At this point we have what we can have, un-dereference if needed.  */
317       if (v2)
318         {
319           struct value *v = value_addr (v2);
320
321           deprecated_set_value_type (v, type);
322           return v;
323         }
324     }
325
326   /* No superclass found, just change the pointer type.  */
327   arg2 = value_copy (arg2);
328   deprecated_set_value_type (arg2, type);
329   set_value_enclosing_type (arg2, type);
330   set_value_pointed_to_offset (arg2, 0);        /* pai: chk_val */
331   return arg2;
332 }
333
334 /* See value.h.  */
335
336 gdb_mpq
337 value_to_gdb_mpq (struct value *value)
338 {
339   struct type *type = check_typedef (value_type (value));
340
341   gdb_mpq result;
342   if (is_floating_type (type))
343     {
344       double d = target_float_to_host_double (value_contents (value),
345                                               type);
346       mpq_set_d (result.val, d);
347     }
348   else
349     {
350       gdb_assert (is_integral_type (type)
351                   || is_fixed_point_type (type));
352
353       gdb_mpz vz;
354       vz.read (gdb::make_array_view (value_contents (value),
355                                      TYPE_LENGTH (type)),
356                type_byte_order (type), type->is_unsigned ());
357       mpq_set_z (result.val, vz.val);
358
359       if (is_fixed_point_type (type))
360         mpq_mul (result.val, result.val,
361                  type->fixed_point_scaling_factor ().val);
362     }
363
364   return result;
365 }
366
367 /* Assuming that TO_TYPE is a fixed point type, return a value
368    corresponding to the cast of FROM_VAL to that type.  */
369
370 static struct value *
371 value_cast_to_fixed_point (struct type *to_type, struct value *from_val)
372 {
373   struct type *from_type = value_type (from_val);
374
375   if (from_type == to_type)
376     return from_val;
377
378   if (!is_floating_type (from_type)
379       && !is_integral_type (from_type)
380       && !is_fixed_point_type (from_type))
381     error (_("Invalid conversion from type %s to fixed point type %s"),
382            from_type->name (), to_type->name ());
383
384   gdb_mpq vq = value_to_gdb_mpq (from_val);
385
386   /* Divide that value by the scaling factor to obtain the unscaled
387      value, first in rational form, and then in integer form.  */
388
389   mpq_div (vq.val, vq.val, to_type->fixed_point_scaling_factor ().val);
390   gdb_mpz unscaled = vq.get_rounded ();
391
392   /* Finally, create the result value, and pack the unscaled value
393      in it.  */
394   struct value *result = allocate_value (to_type);
395   unscaled.write (gdb::make_array_view (value_contents_raw (result),
396                                         TYPE_LENGTH (to_type)),
397                   type_byte_order (to_type),
398                   to_type->is_unsigned ());
399
400   return result;
401 }
402
403 /* Cast value ARG2 to type TYPE and return as a value.
404    More general than a C cast: accepts any two types of the same length,
405    and if ARG2 is an lvalue it can be cast into anything at all.  */
406 /* In C++, casts may change pointer or object representations.  */
407
408 struct value *
409 value_cast (struct type *type, struct value *arg2)
410 {
411   enum type_code code1;
412   enum type_code code2;
413   int scalar;
414   struct type *type2;
415
416   int convert_to_boolean = 0;
417
418   /* TYPE might be equal in meaning to the existing type of ARG2, but for
419      many reasons, might be a different type object (e.g. TYPE might be a
420      gdbarch owned type, while VALUE_TYPE (ARG2) could be an objfile owned
421      type).
422
423      In this case we want to preserve the LVAL of ARG2 as this allows the
424      resulting value to be used in more places.  We do this by calling
425      VALUE_COPY if appropriate.  */
426   if (types_deeply_equal (value_type (arg2), type))
427     {
428       /* If the types are exactly equal then we can avoid creating a new
429          value completely.  */
430       if (value_type (arg2) != type)
431         {
432           arg2 = value_copy (arg2);
433           deprecated_set_value_type (arg2, type);
434         }
435       return arg2;
436     }
437
438   if (is_fixed_point_type (type))
439     return value_cast_to_fixed_point (type, arg2);
440
441   /* Check if we are casting struct reference to struct reference.  */
442   if (TYPE_IS_REFERENCE (check_typedef (type)))
443     {
444       /* We dereference type; then we recurse and finally
445          we generate value of the given reference.  Nothing wrong with 
446          that.  */
447       struct type *t1 = check_typedef (type);
448       struct type *dereftype = check_typedef (TYPE_TARGET_TYPE (t1));
449       struct value *val = value_cast (dereftype, arg2);
450
451       return value_ref (val, t1->code ());
452     }
453
454   if (TYPE_IS_REFERENCE (check_typedef (value_type (arg2))))
455     /* We deref the value and then do the cast.  */
456     return value_cast (type, coerce_ref (arg2)); 
457
458   /* Strip typedefs / resolve stubs in order to get at the type's
459      code/length, but remember the original type, to use as the
460      resulting type of the cast, in case it was a typedef.  */
461   struct type *to_type = type;
462
463   type = check_typedef (type);
464   code1 = type->code ();
465   arg2 = coerce_ref (arg2);
466   type2 = check_typedef (value_type (arg2));
467
468   /* You can't cast to a reference type.  See value_cast_pointers
469      instead.  */
470   gdb_assert (!TYPE_IS_REFERENCE (type));
471
472   /* A cast to an undetermined-length array_type, such as 
473      (TYPE [])OBJECT, is treated like a cast to (TYPE [N])OBJECT,
474      where N is sizeof(OBJECT)/sizeof(TYPE).  */
475   if (code1 == TYPE_CODE_ARRAY)
476     {
477       struct type *element_type = TYPE_TARGET_TYPE (type);
478       unsigned element_length = TYPE_LENGTH (check_typedef (element_type));
479
480       if (element_length > 0 && type->bounds ()->high.kind () == PROP_UNDEFINED)
481         {
482           struct type *range_type = type->index_type ();
483           int val_length = TYPE_LENGTH (type2);
484           LONGEST low_bound, high_bound, new_length;
485
486           if (!get_discrete_bounds (range_type, &low_bound, &high_bound))
487             low_bound = 0, high_bound = 0;
488           new_length = val_length / element_length;
489           if (val_length % element_length != 0)
490             warning (_("array element type size does not "
491                        "divide object size in cast"));
492           /* FIXME-type-allocation: need a way to free this type when
493              we are done with it.  */
494           range_type = create_static_range_type (NULL,
495                                                  TYPE_TARGET_TYPE (range_type),
496                                                  low_bound,
497                                                  new_length + low_bound - 1);
498           deprecated_set_value_type (arg2, 
499                                      create_array_type (NULL,
500                                                         element_type, 
501                                                         range_type));
502           return arg2;
503         }
504     }
505
506   if (current_language->c_style_arrays_p ()
507       && type2->code () == TYPE_CODE_ARRAY
508       && !type2->is_vector ())
509     arg2 = value_coerce_array (arg2);
510
511   if (type2->code () == TYPE_CODE_FUNC)
512     arg2 = value_coerce_function (arg2);
513
514   type2 = check_typedef (value_type (arg2));
515   code2 = type2->code ();
516
517   if (code1 == TYPE_CODE_COMPLEX)
518     return cast_into_complex (to_type, arg2);
519   if (code1 == TYPE_CODE_BOOL)
520     {
521       code1 = TYPE_CODE_INT;
522       convert_to_boolean = 1;
523     }
524   if (code1 == TYPE_CODE_CHAR)
525     code1 = TYPE_CODE_INT;
526   if (code2 == TYPE_CODE_BOOL || code2 == TYPE_CODE_CHAR)
527     code2 = TYPE_CODE_INT;
528
529   scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
530             || code2 == TYPE_CODE_DECFLOAT || code2 == TYPE_CODE_ENUM
531             || code2 == TYPE_CODE_RANGE
532             || is_fixed_point_type (type2));
533
534   if ((code1 == TYPE_CODE_STRUCT || code1 == TYPE_CODE_UNION)
535       && (code2 == TYPE_CODE_STRUCT || code2 == TYPE_CODE_UNION)
536       && type->name () != 0)
537     {
538       struct value *v = value_cast_structs (to_type, arg2);
539
540       if (v)
541         return v;
542     }
543
544   if (is_floating_type (type) && scalar)
545     {
546       if (is_floating_value (arg2))
547         {
548           struct value *v = allocate_value (to_type);
549           target_float_convert (value_contents (arg2), type2,
550                                 value_contents_raw (v), type);
551           return v;
552         }
553       else if (is_fixed_point_type (type2))
554         {
555           gdb_mpq fp_val;
556
557           fp_val.read_fixed_point
558             (gdb::make_array_view (value_contents (arg2), TYPE_LENGTH (type2)),
559              type_byte_order (type2), type2->is_unsigned (),
560              type2->fixed_point_scaling_factor ());
561
562           struct value *v = allocate_value (to_type);
563           target_float_from_host_double (value_contents_raw (v),
564                                          to_type, mpq_get_d (fp_val.val));
565           return v;
566         }
567
568       /* The only option left is an integral type.  */
569       if (type2->is_unsigned ())
570         return value_from_ulongest (to_type, value_as_long (arg2));
571       else
572         return value_from_longest (to_type, value_as_long (arg2));
573     }
574   else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM
575             || code1 == TYPE_CODE_RANGE)
576            && (scalar || code2 == TYPE_CODE_PTR
577                || code2 == TYPE_CODE_MEMBERPTR))
578     {
579       LONGEST longest;
580
581       /* When we cast pointers to integers, we mustn't use
582          gdbarch_pointer_to_address to find the address the pointer
583          represents, as value_as_long would.  GDB should evaluate
584          expressions just as the compiler would --- and the compiler
585          sees a cast as a simple reinterpretation of the pointer's
586          bits.  */
587       if (code2 == TYPE_CODE_PTR)
588         longest = extract_unsigned_integer
589                     (value_contents (arg2), TYPE_LENGTH (type2),
590                      type_byte_order (type2));
591       else
592         longest = value_as_long (arg2);
593       return value_from_longest (to_type, convert_to_boolean ?
594                                  (LONGEST) (longest ? 1 : 0) : longest);
595     }
596   else if (code1 == TYPE_CODE_PTR && (code2 == TYPE_CODE_INT  
597                                       || code2 == TYPE_CODE_ENUM 
598                                       || code2 == TYPE_CODE_RANGE))
599     {
600       /* TYPE_LENGTH (type) is the length of a pointer, but we really
601          want the length of an address! -- we are really dealing with
602          addresses (i.e., gdb representations) not pointers (i.e.,
603          target representations) here.
604
605          This allows things like "print *(int *)0x01000234" to work
606          without printing a misleading message -- which would
607          otherwise occur when dealing with a target having two byte
608          pointers and four byte addresses.  */
609
610       int addr_bit = gdbarch_addr_bit (type2->arch ());
611       LONGEST longest = value_as_long (arg2);
612
613       if (addr_bit < sizeof (LONGEST) * HOST_CHAR_BIT)
614         {
615           if (longest >= ((LONGEST) 1 << addr_bit)
616               || longest <= -((LONGEST) 1 << addr_bit))
617             warning (_("value truncated"));
618         }
619       return value_from_longest (to_type, longest);
620     }
621   else if (code1 == TYPE_CODE_METHODPTR && code2 == TYPE_CODE_INT
622            && value_as_long (arg2) == 0)
623     {
624       struct value *result = allocate_value (to_type);
625
626       cplus_make_method_ptr (to_type, value_contents_writeable (result), 0, 0);
627       return result;
628     }
629   else if (code1 == TYPE_CODE_MEMBERPTR && code2 == TYPE_CODE_INT
630            && value_as_long (arg2) == 0)
631     {
632       /* The Itanium C++ ABI represents NULL pointers to members as
633          minus one, instead of biasing the normal case.  */
634       return value_from_longest (to_type, -1);
635     }
636   else if (code1 == TYPE_CODE_ARRAY && type->is_vector ()
637            && code2 == TYPE_CODE_ARRAY && type2->is_vector ()
638            && TYPE_LENGTH (type) != TYPE_LENGTH (type2))
639     error (_("Cannot convert between vector values of different sizes"));
640   else if (code1 == TYPE_CODE_ARRAY && type->is_vector () && scalar
641            && TYPE_LENGTH (type) != TYPE_LENGTH (type2))
642     error (_("can only cast scalar to vector of same size"));
643   else if (code1 == TYPE_CODE_VOID)
644     {
645       return value_zero (to_type, not_lval);
646     }
647   else if (TYPE_LENGTH (type) == TYPE_LENGTH (type2))
648     {
649       if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
650         return value_cast_pointers (to_type, arg2, 0);
651
652       arg2 = value_copy (arg2);
653       deprecated_set_value_type (arg2, to_type);
654       set_value_enclosing_type (arg2, to_type);
655       set_value_pointed_to_offset (arg2, 0);    /* pai: chk_val */
656       return arg2;
657     }
658   else if (VALUE_LVAL (arg2) == lval_memory)
659     return value_at_lazy (to_type, value_address (arg2));
660   else
661     {
662       if (current_language->la_language == language_ada)
663         error (_("Invalid type conversion."));
664       error (_("Invalid cast."));
665     }
666 }
667
668 /* The C++ reinterpret_cast operator.  */
669
670 struct value *
671 value_reinterpret_cast (struct type *type, struct value *arg)
672 {
673   struct value *result;
674   struct type *real_type = check_typedef (type);
675   struct type *arg_type, *dest_type;
676   int is_ref = 0;
677   enum type_code dest_code, arg_code;
678
679   /* Do reference, function, and array conversion.  */
680   arg = coerce_array (arg);
681
682   /* Attempt to preserve the type the user asked for.  */
683   dest_type = type;
684
685   /* If we are casting to a reference type, transform
686      reinterpret_cast<T&[&]>(V) to *reinterpret_cast<T*>(&V).  */
687   if (TYPE_IS_REFERENCE (real_type))
688     {
689       is_ref = 1;
690       arg = value_addr (arg);
691       dest_type = lookup_pointer_type (TYPE_TARGET_TYPE (dest_type));
692       real_type = lookup_pointer_type (real_type);
693     }
694
695   arg_type = value_type (arg);
696
697   dest_code = real_type->code ();
698   arg_code = arg_type->code ();
699
700   /* We can convert pointer types, or any pointer type to int, or int
701      type to pointer.  */
702   if ((dest_code == TYPE_CODE_PTR && arg_code == TYPE_CODE_INT)
703       || (dest_code == TYPE_CODE_INT && arg_code == TYPE_CODE_PTR)
704       || (dest_code == TYPE_CODE_METHODPTR && arg_code == TYPE_CODE_INT)
705       || (dest_code == TYPE_CODE_INT && arg_code == TYPE_CODE_METHODPTR)
706       || (dest_code == TYPE_CODE_MEMBERPTR && arg_code == TYPE_CODE_INT)
707       || (dest_code == TYPE_CODE_INT && arg_code == TYPE_CODE_MEMBERPTR)
708       || (dest_code == arg_code
709           && (dest_code == TYPE_CODE_PTR
710               || dest_code == TYPE_CODE_METHODPTR
711               || dest_code == TYPE_CODE_MEMBERPTR)))
712     result = value_cast (dest_type, arg);
713   else
714     error (_("Invalid reinterpret_cast"));
715
716   if (is_ref)
717     result = value_cast (type, value_ref (value_ind (result),
718                                           type->code ()));
719
720   return result;
721 }
722
723 /* A helper for value_dynamic_cast.  This implements the first of two
724    runtime checks: we iterate over all the base classes of the value's
725    class which are equal to the desired class; if only one of these
726    holds the value, then it is the answer.  */
727
728 static int
729 dynamic_cast_check_1 (struct type *desired_type,
730                       const gdb_byte *valaddr,
731                       LONGEST embedded_offset,
732                       CORE_ADDR address,
733                       struct value *val,
734                       struct type *search_type,
735                       CORE_ADDR arg_addr,
736                       struct type *arg_type,
737                       struct value **result)
738 {
739   int i, result_count = 0;
740
741   for (i = 0; i < TYPE_N_BASECLASSES (search_type) && result_count < 2; ++i)
742     {
743       LONGEST offset = baseclass_offset (search_type, i, valaddr,
744                                          embedded_offset,
745                                          address, val);
746
747       if (class_types_same_p (desired_type, TYPE_BASECLASS (search_type, i)))
748         {
749           if (address + embedded_offset + offset >= arg_addr
750               && address + embedded_offset + offset < arg_addr + TYPE_LENGTH (arg_type))
751             {
752               ++result_count;
753               if (!*result)
754                 *result = value_at_lazy (TYPE_BASECLASS (search_type, i),
755                                          address + embedded_offset + offset);
756             }
757         }
758       else
759         result_count += dynamic_cast_check_1 (desired_type,
760                                               valaddr,
761                                               embedded_offset + offset,
762                                               address, val,
763                                               TYPE_BASECLASS (search_type, i),
764                                               arg_addr,
765                                               arg_type,
766                                               result);
767     }
768
769   return result_count;
770 }
771
772 /* A helper for value_dynamic_cast.  This implements the second of two
773    runtime checks: we look for a unique public sibling class of the
774    argument's declared class.  */
775
776 static int
777 dynamic_cast_check_2 (struct type *desired_type,
778                       const gdb_byte *valaddr,
779                       LONGEST embedded_offset,
780                       CORE_ADDR address,
781                       struct value *val,
782                       struct type *search_type,
783                       struct value **result)
784 {
785   int i, result_count = 0;
786
787   for (i = 0; i < TYPE_N_BASECLASSES (search_type) && result_count < 2; ++i)
788     {
789       LONGEST offset;
790
791       if (! BASETYPE_VIA_PUBLIC (search_type, i))
792         continue;
793
794       offset = baseclass_offset (search_type, i, valaddr, embedded_offset,
795                                  address, val);
796       if (class_types_same_p (desired_type, TYPE_BASECLASS (search_type, i)))
797         {
798           ++result_count;
799           if (*result == NULL)
800             *result = value_at_lazy (TYPE_BASECLASS (search_type, i),
801                                      address + embedded_offset + offset);
802         }
803       else
804         result_count += dynamic_cast_check_2 (desired_type,
805                                               valaddr,
806                                               embedded_offset + offset,
807                                               address, val,
808                                               TYPE_BASECLASS (search_type, i),
809                                               result);
810     }
811
812   return result_count;
813 }
814
815 /* The C++ dynamic_cast operator.  */
816
817 struct value *
818 value_dynamic_cast (struct type *type, struct value *arg)
819 {
820   int full, using_enc;
821   LONGEST top;
822   struct type *resolved_type = check_typedef (type);
823   struct type *arg_type = check_typedef (value_type (arg));
824   struct type *class_type, *rtti_type;
825   struct value *result, *tem, *original_arg = arg;
826   CORE_ADDR addr;
827   int is_ref = TYPE_IS_REFERENCE (resolved_type);
828
829   if (resolved_type->code () != TYPE_CODE_PTR
830       && !TYPE_IS_REFERENCE (resolved_type))
831     error (_("Argument to dynamic_cast must be a pointer or reference type"));
832   if (TYPE_TARGET_TYPE (resolved_type)->code () != TYPE_CODE_VOID
833       && TYPE_TARGET_TYPE (resolved_type)->code () != TYPE_CODE_STRUCT)
834     error (_("Argument to dynamic_cast must be pointer to class or `void *'"));
835
836   class_type = check_typedef (TYPE_TARGET_TYPE (resolved_type));
837   if (resolved_type->code () == TYPE_CODE_PTR)
838     {
839       if (arg_type->code () != TYPE_CODE_PTR
840           && ! (arg_type->code () == TYPE_CODE_INT
841                 && value_as_long (arg) == 0))
842         error (_("Argument to dynamic_cast does not have pointer type"));
843       if (arg_type->code () == TYPE_CODE_PTR)
844         {
845           arg_type = check_typedef (TYPE_TARGET_TYPE (arg_type));
846           if (arg_type->code () != TYPE_CODE_STRUCT)
847             error (_("Argument to dynamic_cast does "
848                      "not have pointer to class type"));
849         }
850
851       /* Handle NULL pointers.  */
852       if (value_as_long (arg) == 0)
853         return value_zero (type, not_lval);
854
855       arg = value_ind (arg);
856     }
857   else
858     {
859       if (arg_type->code () != TYPE_CODE_STRUCT)
860         error (_("Argument to dynamic_cast does not have class type"));
861     }
862
863   /* If the classes are the same, just return the argument.  */
864   if (class_types_same_p (class_type, arg_type))
865     return value_cast (type, arg);
866
867   /* If the target type is a unique base class of the argument's
868      declared type, just cast it.  */
869   if (is_ancestor (class_type, arg_type))
870     {
871       if (is_unique_ancestor (class_type, arg))
872         return value_cast (type, original_arg);
873       error (_("Ambiguous dynamic_cast"));
874     }
875
876   rtti_type = value_rtti_type (arg, &full, &top, &using_enc);
877   if (! rtti_type)
878     error (_("Couldn't determine value's most derived type for dynamic_cast"));
879
880   /* Compute the most derived object's address.  */
881   addr = value_address (arg);
882   if (full)
883     {
884       /* Done.  */
885     }
886   else if (using_enc)
887     addr += top;
888   else
889     addr += top + value_embedded_offset (arg);
890
891   /* dynamic_cast<void *> means to return a pointer to the
892      most-derived object.  */
893   if (resolved_type->code () == TYPE_CODE_PTR
894       && TYPE_TARGET_TYPE (resolved_type)->code () == TYPE_CODE_VOID)
895     return value_at_lazy (type, addr);
896
897   tem = value_at (type, addr);
898   type = value_type (tem);
899
900   /* The first dynamic check specified in 5.2.7.  */
901   if (is_public_ancestor (arg_type, TYPE_TARGET_TYPE (resolved_type)))
902     {
903       if (class_types_same_p (rtti_type, TYPE_TARGET_TYPE (resolved_type)))
904         return tem;
905       result = NULL;
906       if (dynamic_cast_check_1 (TYPE_TARGET_TYPE (resolved_type),
907                                 value_contents_for_printing (tem),
908                                 value_embedded_offset (tem),
909                                 value_address (tem), tem,
910                                 rtti_type, addr,
911                                 arg_type,
912                                 &result) == 1)
913         return value_cast (type,
914                            is_ref
915                            ? value_ref (result, resolved_type->code ())
916                            : value_addr (result));
917     }
918
919   /* The second dynamic check specified in 5.2.7.  */
920   result = NULL;
921   if (is_public_ancestor (arg_type, rtti_type)
922       && dynamic_cast_check_2 (TYPE_TARGET_TYPE (resolved_type),
923                                value_contents_for_printing (tem),
924                                value_embedded_offset (tem),
925                                value_address (tem), tem,
926                                rtti_type, &result) == 1)
927     return value_cast (type,
928                        is_ref
929                        ? value_ref (result, resolved_type->code ())
930                        : value_addr (result));
931
932   if (resolved_type->code () == TYPE_CODE_PTR)
933     return value_zero (type, not_lval);
934
935   error (_("dynamic_cast failed"));
936 }
937
938 /* Create a value of type TYPE that is zero, and return it.  */
939
940 struct value *
941 value_zero (struct type *type, enum lval_type lv)
942 {
943   struct value *val = allocate_value (type);
944
945   VALUE_LVAL (val) = (lv == lval_computed ? not_lval : lv);
946   return val;
947 }
948
949 /* Create a not_lval value of numeric type TYPE that is one, and return it.  */
950
951 struct value *
952 value_one (struct type *type)
953 {
954   struct type *type1 = check_typedef (type);
955   struct value *val;
956
957   if (is_integral_type (type1) || is_floating_type (type1))
958     {
959       val = value_from_longest (type, (LONGEST) 1);
960     }
961   else if (type1->code () == TYPE_CODE_ARRAY && type1->is_vector ())
962     {
963       struct type *eltype = check_typedef (TYPE_TARGET_TYPE (type1));
964       int i;
965       LONGEST low_bound, high_bound;
966       struct value *tmp;
967
968       if (!get_array_bounds (type1, &low_bound, &high_bound))
969         error (_("Could not determine the vector bounds"));
970
971       val = allocate_value (type);
972       for (i = 0; i < high_bound - low_bound + 1; i++)
973         {
974           tmp = value_one (eltype);
975           memcpy (value_contents_writeable (val) + i * TYPE_LENGTH (eltype),
976                   value_contents_all (tmp), TYPE_LENGTH (eltype));
977         }
978     }
979   else
980     {
981       error (_("Not a numeric type."));
982     }
983
984   /* value_one result is never used for assignments to.  */
985   gdb_assert (VALUE_LVAL (val) == not_lval);
986
987   return val;
988 }
989
990 /* Helper function for value_at, value_at_lazy, and value_at_lazy_stack.
991    The type of the created value may differ from the passed type TYPE.
992    Make sure to retrieve the returned values's new type after this call
993    e.g. in case the type is a variable length array.  */
994
995 static struct value *
996 get_value_at (struct type *type, CORE_ADDR addr, int lazy)
997 {
998   struct value *val;
999
1000   if (check_typedef (type)->code () == TYPE_CODE_VOID)
1001     error (_("Attempt to dereference a generic pointer."));
1002
1003   val = value_from_contents_and_address (type, NULL, addr);
1004
1005   if (!lazy)
1006     value_fetch_lazy (val);
1007
1008   return val;
1009 }
1010
1011 /* Return a value with type TYPE located at ADDR.
1012
1013    Call value_at only if the data needs to be fetched immediately;
1014    if we can be 'lazy' and defer the fetch, perhaps indefinitely, call
1015    value_at_lazy instead.  value_at_lazy simply records the address of
1016    the data and sets the lazy-evaluation-required flag.  The lazy flag
1017    is tested in the value_contents macro, which is used if and when
1018    the contents are actually required.  The type of the created value
1019    may differ from the passed type TYPE.  Make sure to retrieve the
1020    returned values's new type after this call e.g. in case the type
1021    is a variable length array.
1022
1023    Note: value_at does *NOT* handle embedded offsets; perform such
1024    adjustments before or after calling it.  */
1025
1026 struct value *
1027 value_at (struct type *type, CORE_ADDR addr)
1028 {
1029   return get_value_at (type, addr, 0);
1030 }
1031
1032 /* Return a lazy value with type TYPE located at ADDR (cf. value_at).
1033    The type of the created value may differ from the passed type TYPE.
1034    Make sure to retrieve the returned values's new type after this call
1035    e.g. in case the type is a variable length array.  */
1036
1037 struct value *
1038 value_at_lazy (struct type *type, CORE_ADDR addr)
1039 {
1040   return get_value_at (type, addr, 1);
1041 }
1042
1043 void
1044 read_value_memory (struct value *val, LONGEST bit_offset,
1045                    int stack, CORE_ADDR memaddr,
1046                    gdb_byte *buffer, size_t length)
1047 {
1048   ULONGEST xfered_total = 0;
1049   struct gdbarch *arch = get_value_arch (val);
1050   int unit_size = gdbarch_addressable_memory_unit_size (arch);
1051   enum target_object object;
1052
1053   object = stack ? TARGET_OBJECT_STACK_MEMORY : TARGET_OBJECT_MEMORY;
1054
1055   while (xfered_total < length)
1056     {
1057       enum target_xfer_status status;
1058       ULONGEST xfered_partial;
1059
1060       status = target_xfer_partial (current_inferior ()->top_target (),
1061                                     object, NULL,
1062                                     buffer + xfered_total * unit_size, NULL,
1063                                     memaddr + xfered_total,
1064                                     length - xfered_total,
1065                                     &xfered_partial);
1066
1067       if (status == TARGET_XFER_OK)
1068         /* nothing */;
1069       else if (status == TARGET_XFER_UNAVAILABLE)
1070         mark_value_bits_unavailable (val, (xfered_total * HOST_CHAR_BIT
1071                                            + bit_offset),
1072                                      xfered_partial * HOST_CHAR_BIT);
1073       else if (status == TARGET_XFER_EOF)
1074         memory_error (TARGET_XFER_E_IO, memaddr + xfered_total);
1075       else
1076         memory_error (status, memaddr + xfered_total);
1077
1078       xfered_total += xfered_partial;
1079       QUIT;
1080     }
1081 }
1082
1083 /* Store the contents of FROMVAL into the location of TOVAL.
1084    Return a new value with the location of TOVAL and contents of FROMVAL.  */
1085
1086 struct value *
1087 value_assign (struct value *toval, struct value *fromval)
1088 {
1089   struct type *type;
1090   struct value *val;
1091   struct frame_id old_frame;
1092
1093   if (!deprecated_value_modifiable (toval))
1094     error (_("Left operand of assignment is not a modifiable lvalue."));
1095
1096   toval = coerce_ref (toval);
1097
1098   type = value_type (toval);
1099   if (VALUE_LVAL (toval) != lval_internalvar)
1100     fromval = value_cast (type, fromval);
1101   else
1102     {
1103       /* Coerce arrays and functions to pointers, except for arrays
1104          which only live in GDB's storage.  */
1105       if (!value_must_coerce_to_target (fromval))
1106         fromval = coerce_array (fromval);
1107     }
1108
1109   type = check_typedef (type);
1110
1111   /* Since modifying a register can trash the frame chain, and
1112      modifying memory can trash the frame cache, we save the old frame
1113      and then restore the new frame afterwards.  */
1114   old_frame = get_frame_id (deprecated_safe_get_selected_frame ());
1115
1116   switch (VALUE_LVAL (toval))
1117     {
1118     case lval_internalvar:
1119       set_internalvar (VALUE_INTERNALVAR (toval), fromval);
1120       return value_of_internalvar (type->arch (),
1121                                    VALUE_INTERNALVAR (toval));
1122
1123     case lval_internalvar_component:
1124       {
1125         LONGEST offset = value_offset (toval);
1126
1127         /* Are we dealing with a bitfield?
1128
1129            It is important to mention that `value_parent (toval)' is
1130            non-NULL iff `value_bitsize (toval)' is non-zero.  */
1131         if (value_bitsize (toval))
1132           {
1133             /* VALUE_INTERNALVAR below refers to the parent value, while
1134                the offset is relative to this parent value.  */
1135             gdb_assert (value_parent (value_parent (toval)) == NULL);
1136             offset += value_offset (value_parent (toval));
1137           }
1138
1139         set_internalvar_component (VALUE_INTERNALVAR (toval),
1140                                    offset,
1141                                    value_bitpos (toval),
1142                                    value_bitsize (toval),
1143                                    fromval);
1144       }
1145       break;
1146
1147     case lval_memory:
1148       {
1149         const gdb_byte *dest_buffer;
1150         CORE_ADDR changed_addr;
1151         int changed_len;
1152         gdb_byte buffer[sizeof (LONGEST)];
1153
1154         if (value_bitsize (toval))
1155           {
1156             struct value *parent = value_parent (toval);
1157
1158             changed_addr = value_address (parent) + value_offset (toval);
1159             changed_len = (value_bitpos (toval)
1160                            + value_bitsize (toval)
1161                            + HOST_CHAR_BIT - 1)
1162               / HOST_CHAR_BIT;
1163
1164             /* If we can read-modify-write exactly the size of the
1165                containing type (e.g. short or int) then do so.  This
1166                is safer for volatile bitfields mapped to hardware
1167                registers.  */
1168             if (changed_len < TYPE_LENGTH (type)
1169                 && TYPE_LENGTH (type) <= (int) sizeof (LONGEST)
1170                 && ((LONGEST) changed_addr % TYPE_LENGTH (type)) == 0)
1171               changed_len = TYPE_LENGTH (type);
1172
1173             if (changed_len > (int) sizeof (LONGEST))
1174               error (_("Can't handle bitfields which "
1175                        "don't fit in a %d bit word."),
1176                      (int) sizeof (LONGEST) * HOST_CHAR_BIT);
1177
1178             read_memory (changed_addr, buffer, changed_len);
1179             modify_field (type, buffer, value_as_long (fromval),
1180                           value_bitpos (toval), value_bitsize (toval));
1181             dest_buffer = buffer;
1182           }
1183         else
1184           {
1185             changed_addr = value_address (toval);
1186             changed_len = type_length_units (type);
1187             dest_buffer = value_contents (fromval);
1188           }
1189
1190         write_memory_with_notification (changed_addr, dest_buffer, changed_len);
1191       }
1192       break;
1193
1194     case lval_register:
1195       {
1196         struct frame_info *frame;
1197         struct gdbarch *gdbarch;
1198         int value_reg;
1199
1200         /* Figure out which frame this is in currently.
1201         
1202            We use VALUE_FRAME_ID for obtaining the value's frame id instead of
1203            VALUE_NEXT_FRAME_ID due to requiring a frame which may be passed to
1204            put_frame_register_bytes() below.  That function will (eventually)
1205            perform the necessary unwind operation by first obtaining the next
1206            frame.  */
1207         frame = frame_find_by_id (VALUE_FRAME_ID (toval));
1208
1209         value_reg = VALUE_REGNUM (toval);
1210
1211         if (!frame)
1212           error (_("Value being assigned to is no longer active."));
1213
1214         gdbarch = get_frame_arch (frame);
1215
1216         if (value_bitsize (toval))
1217           {
1218             struct value *parent = value_parent (toval);
1219             LONGEST offset = value_offset (parent) + value_offset (toval);
1220             size_t changed_len;
1221             gdb_byte buffer[sizeof (LONGEST)];
1222             int optim, unavail;
1223
1224             changed_len = (value_bitpos (toval)
1225                            + value_bitsize (toval)
1226                            + HOST_CHAR_BIT - 1)
1227                           / HOST_CHAR_BIT;
1228
1229             if (changed_len > sizeof (LONGEST))
1230               error (_("Can't handle bitfields which "
1231                        "don't fit in a %d bit word."),
1232                      (int) sizeof (LONGEST) * HOST_CHAR_BIT);
1233
1234             if (!get_frame_register_bytes (frame, value_reg, offset,
1235                                            {buffer, changed_len},
1236                                            &optim, &unavail))
1237               {
1238                 if (optim)
1239                   throw_error (OPTIMIZED_OUT_ERROR,
1240                                _("value has been optimized out"));
1241                 if (unavail)
1242                   throw_error (NOT_AVAILABLE_ERROR,
1243                                _("value is not available"));
1244               }
1245
1246             modify_field (type, buffer, value_as_long (fromval),
1247                           value_bitpos (toval), value_bitsize (toval));
1248
1249             put_frame_register_bytes (frame, value_reg, offset,
1250                                       {buffer, changed_len});
1251           }
1252         else
1253           {
1254             if (gdbarch_convert_register_p (gdbarch, VALUE_REGNUM (toval),
1255                                             type))
1256               {
1257                 /* If TOVAL is a special machine register requiring
1258                    conversion of program values to a special raw
1259                    format.  */
1260                 gdbarch_value_to_register (gdbarch, frame,
1261                                            VALUE_REGNUM (toval), type,
1262                                            value_contents (fromval));
1263               }
1264             else
1265               {
1266                 gdb::array_view<const gdb_byte> contents
1267                   = gdb::make_array_view (value_contents (fromval),
1268                                           TYPE_LENGTH (type));
1269                 put_frame_register_bytes (frame, value_reg,
1270                                           value_offset (toval),
1271                                           contents);
1272               }
1273           }
1274
1275         gdb::observers::register_changed.notify (frame, value_reg);
1276         break;
1277       }
1278
1279     case lval_computed:
1280       {
1281         const struct lval_funcs *funcs = value_computed_funcs (toval);
1282
1283         if (funcs->write != NULL)
1284           {
1285             funcs->write (toval, fromval);
1286             break;
1287           }
1288       }
1289       /* Fall through.  */
1290
1291     default:
1292       error (_("Left operand of assignment is not an lvalue."));
1293     }
1294
1295   /* Assigning to the stack pointer, frame pointer, and other
1296      (architecture and calling convention specific) registers may
1297      cause the frame cache and regcache to be out of date.  Assigning to memory
1298      also can.  We just do this on all assignments to registers or
1299      memory, for simplicity's sake; I doubt the slowdown matters.  */
1300   switch (VALUE_LVAL (toval))
1301     {
1302     case lval_memory:
1303     case lval_register:
1304     case lval_computed:
1305
1306       gdb::observers::target_changed.notify
1307         (current_inferior ()->top_target ());
1308
1309       /* Having destroyed the frame cache, restore the selected
1310          frame.  */
1311
1312       /* FIXME: cagney/2002-11-02: There has to be a better way of
1313          doing this.  Instead of constantly saving/restoring the
1314          frame.  Why not create a get_selected_frame() function that,
1315          having saved the selected frame's ID can automatically
1316          re-find the previously selected frame automatically.  */
1317
1318       {
1319         struct frame_info *fi = frame_find_by_id (old_frame);
1320
1321         if (fi != NULL)
1322           select_frame (fi);
1323       }
1324
1325       break;
1326     default:
1327       break;
1328     }
1329   
1330   /* If the field does not entirely fill a LONGEST, then zero the sign
1331      bits.  If the field is signed, and is negative, then sign
1332      extend.  */
1333   if ((value_bitsize (toval) > 0)
1334       && (value_bitsize (toval) < 8 * (int) sizeof (LONGEST)))
1335     {
1336       LONGEST fieldval = value_as_long (fromval);
1337       LONGEST valmask = (((ULONGEST) 1) << value_bitsize (toval)) - 1;
1338
1339       fieldval &= valmask;
1340       if (!type->is_unsigned () 
1341           && (fieldval & (valmask ^ (valmask >> 1))))
1342         fieldval |= ~valmask;
1343
1344       fromval = value_from_longest (type, fieldval);
1345     }
1346
1347   /* The return value is a copy of TOVAL so it shares its location
1348      information, but its contents are updated from FROMVAL.  This
1349      implies the returned value is not lazy, even if TOVAL was.  */
1350   val = value_copy (toval);
1351   set_value_lazy (val, 0);
1352   memcpy (value_contents_raw (val), value_contents (fromval),
1353           TYPE_LENGTH (type));
1354
1355   /* We copy over the enclosing type and pointed-to offset from FROMVAL
1356      in the case of pointer types.  For object types, the enclosing type
1357      and embedded offset must *not* be copied: the target object refered
1358      to by TOVAL retains its original dynamic type after assignment.  */
1359   if (type->code () == TYPE_CODE_PTR)
1360     {
1361       set_value_enclosing_type (val, value_enclosing_type (fromval));
1362       set_value_pointed_to_offset (val, value_pointed_to_offset (fromval));
1363     }
1364
1365   return val;
1366 }
1367
1368 /* Extend a value ARG1 to COUNT repetitions of its type.  */
1369
1370 struct value *
1371 value_repeat (struct value *arg1, int count)
1372 {
1373   struct value *val;
1374
1375   if (VALUE_LVAL (arg1) != lval_memory)
1376     error (_("Only values in memory can be extended with '@'."));
1377   if (count < 1)
1378     error (_("Invalid number %d of repetitions."), count);
1379
1380   val = allocate_repeat_value (value_enclosing_type (arg1), count);
1381
1382   VALUE_LVAL (val) = lval_memory;
1383   set_value_address (val, value_address (arg1));
1384
1385   read_value_memory (val, 0, value_stack (val), value_address (val),
1386                      value_contents_all_raw (val),
1387                      type_length_units (value_enclosing_type (val)));
1388
1389   return val;
1390 }
1391
1392 struct value *
1393 value_of_variable (struct symbol *var, const struct block *b)
1394 {
1395   struct frame_info *frame = NULL;
1396
1397   if (symbol_read_needs_frame (var))
1398     frame = get_selected_frame (_("No frame selected."));
1399
1400   return read_var_value (var, b, frame);
1401 }
1402
1403 struct value *
1404 address_of_variable (struct symbol *var, const struct block *b)
1405 {
1406   struct type *type = SYMBOL_TYPE (var);
1407   struct value *val;
1408
1409   /* Evaluate it first; if the result is a memory address, we're fine.
1410      Lazy evaluation pays off here.  */
1411
1412   val = value_of_variable (var, b);
1413   type = value_type (val);
1414
1415   if ((VALUE_LVAL (val) == lval_memory && value_lazy (val))
1416       || type->code () == TYPE_CODE_FUNC)
1417     {
1418       CORE_ADDR addr = value_address (val);
1419
1420       return value_from_pointer (lookup_pointer_type (type), addr);
1421     }
1422
1423   /* Not a memory address; check what the problem was.  */
1424   switch (VALUE_LVAL (val))
1425     {
1426     case lval_register:
1427       {
1428         struct frame_info *frame;
1429         const char *regname;
1430
1431         frame = frame_find_by_id (VALUE_NEXT_FRAME_ID (val));
1432         gdb_assert (frame);
1433
1434         regname = gdbarch_register_name (get_frame_arch (frame),
1435                                          VALUE_REGNUM (val));
1436         gdb_assert (regname && *regname);
1437
1438         error (_("Address requested for identifier "
1439                  "\"%s\" which is in register $%s"),
1440                var->print_name (), regname);
1441         break;
1442       }
1443
1444     default:
1445       error (_("Can't take address of \"%s\" which isn't an lvalue."),
1446              var->print_name ());
1447       break;
1448     }
1449
1450   return val;
1451 }
1452
1453 /* See value.h.  */
1454
1455 bool
1456 value_must_coerce_to_target (struct value *val)
1457 {
1458   struct type *valtype;
1459
1460   /* The only lval kinds which do not live in target memory.  */
1461   if (VALUE_LVAL (val) != not_lval
1462       && VALUE_LVAL (val) != lval_internalvar
1463       && VALUE_LVAL (val) != lval_xcallable)
1464     return false;
1465
1466   valtype = check_typedef (value_type (val));
1467
1468   switch (valtype->code ())
1469     {
1470     case TYPE_CODE_ARRAY:
1471       return valtype->is_vector () ? 0 : 1;
1472     case TYPE_CODE_STRING:
1473       return true;
1474     default:
1475       return false;
1476     }
1477 }
1478
1479 /* Make sure that VAL lives in target memory if it's supposed to.  For
1480    instance, strings are constructed as character arrays in GDB's
1481    storage, and this function copies them to the target.  */
1482
1483 struct value *
1484 value_coerce_to_target (struct value *val)
1485 {
1486   LONGEST length;
1487   CORE_ADDR addr;
1488
1489   if (!value_must_coerce_to_target (val))
1490     return val;
1491
1492   length = TYPE_LENGTH (check_typedef (value_type (val)));
1493   addr = allocate_space_in_inferior (length);
1494   write_memory (addr, value_contents (val), length);
1495   return value_at_lazy (value_type (val), addr);
1496 }
1497
1498 /* Given a value which is an array, return a value which is a pointer
1499    to its first element, regardless of whether or not the array has a
1500    nonzero lower bound.
1501
1502    FIXME: A previous comment here indicated that this routine should
1503    be substracting the array's lower bound.  It's not clear to me that
1504    this is correct.  Given an array subscripting operation, it would
1505    certainly work to do the adjustment here, essentially computing:
1506
1507    (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
1508
1509    However I believe a more appropriate and logical place to account
1510    for the lower bound is to do so in value_subscript, essentially
1511    computing:
1512
1513    (&array[0] + ((index - lowerbound) * sizeof array[0]))
1514
1515    As further evidence consider what would happen with operations
1516    other than array subscripting, where the caller would get back a
1517    value that had an address somewhere before the actual first element
1518    of the array, and the information about the lower bound would be
1519    lost because of the coercion to pointer type.  */
1520
1521 struct value *
1522 value_coerce_array (struct value *arg1)
1523 {
1524   struct type *type = check_typedef (value_type (arg1));
1525
1526   /* If the user tries to do something requiring a pointer with an
1527      array that has not yet been pushed to the target, then this would
1528      be a good time to do so.  */
1529   arg1 = value_coerce_to_target (arg1);
1530
1531   if (VALUE_LVAL (arg1) != lval_memory)
1532     error (_("Attempt to take address of value not located in memory."));
1533
1534   return value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
1535                              value_address (arg1));
1536 }
1537
1538 /* Given a value which is a function, return a value which is a pointer
1539    to it.  */
1540
1541 struct value *
1542 value_coerce_function (struct value *arg1)
1543 {
1544   struct value *retval;
1545
1546   if (VALUE_LVAL (arg1) != lval_memory)
1547     error (_("Attempt to take address of value not located in memory."));
1548
1549   retval = value_from_pointer (lookup_pointer_type (value_type (arg1)),
1550                                value_address (arg1));
1551   return retval;
1552 }
1553
1554 /* Return a pointer value for the object for which ARG1 is the
1555    contents.  */
1556
1557 struct value *
1558 value_addr (struct value *arg1)
1559 {
1560   struct value *arg2;
1561   struct type *type = check_typedef (value_type (arg1));
1562
1563   if (TYPE_IS_REFERENCE (type))
1564     {
1565       if (value_bits_synthetic_pointer (arg1, value_embedded_offset (arg1),
1566           TARGET_CHAR_BIT * TYPE_LENGTH (type)))
1567         arg1 = coerce_ref (arg1);
1568       else
1569         {
1570           /* Copy the value, but change the type from (T&) to (T*).  We
1571              keep the same location information, which is efficient, and
1572              allows &(&X) to get the location containing the reference.
1573              Do the same to its enclosing type for consistency.  */
1574           struct type *type_ptr
1575             = lookup_pointer_type (TYPE_TARGET_TYPE (type));
1576           struct type *enclosing_type
1577             = check_typedef (value_enclosing_type (arg1));
1578           struct type *enclosing_type_ptr
1579             = lookup_pointer_type (TYPE_TARGET_TYPE (enclosing_type));
1580
1581           arg2 = value_copy (arg1);
1582           deprecated_set_value_type (arg2, type_ptr);
1583           set_value_enclosing_type (arg2, enclosing_type_ptr);
1584
1585           return arg2;
1586         }
1587     }
1588   if (type->code () == TYPE_CODE_FUNC)
1589     return value_coerce_function (arg1);
1590
1591   /* If this is an array that has not yet been pushed to the target,
1592      then this would be a good time to force it to memory.  */
1593   arg1 = value_coerce_to_target (arg1);
1594
1595   if (VALUE_LVAL (arg1) != lval_memory)
1596     error (_("Attempt to take address of value not located in memory."));
1597
1598   /* Get target memory address.  */
1599   arg2 = value_from_pointer (lookup_pointer_type (value_type (arg1)),
1600                              (value_address (arg1)
1601                               + value_embedded_offset (arg1)));
1602
1603   /* This may be a pointer to a base subobject; so remember the
1604      full derived object's type ...  */
1605   set_value_enclosing_type (arg2,
1606                             lookup_pointer_type (value_enclosing_type (arg1)));
1607   /* ... and also the relative position of the subobject in the full
1608      object.  */
1609   set_value_pointed_to_offset (arg2, value_embedded_offset (arg1));
1610   return arg2;
1611 }
1612
1613 /* Return a reference value for the object for which ARG1 is the
1614    contents.  */
1615
1616 struct value *
1617 value_ref (struct value *arg1, enum type_code refcode)
1618 {
1619   struct value *arg2;
1620   struct type *type = check_typedef (value_type (arg1));
1621
1622   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
1623
1624   if ((type->code () == TYPE_CODE_REF
1625        || type->code () == TYPE_CODE_RVALUE_REF)
1626       && type->code () == refcode)
1627     return arg1;
1628
1629   arg2 = value_addr (arg1);
1630   deprecated_set_value_type (arg2, lookup_reference_type (type, refcode));
1631   return arg2;
1632 }
1633
1634 /* Given a value of a pointer type, apply the C unary * operator to
1635    it.  */
1636
1637 struct value *
1638 value_ind (struct value *arg1)
1639 {
1640   struct type *base_type;
1641   struct value *arg2;
1642
1643   arg1 = coerce_array (arg1);
1644
1645   base_type = check_typedef (value_type (arg1));
1646
1647   if (VALUE_LVAL (arg1) == lval_computed)
1648     {
1649       const struct lval_funcs *funcs = value_computed_funcs (arg1);
1650
1651       if (funcs->indirect)
1652         {
1653           struct value *result = funcs->indirect (arg1);
1654
1655           if (result)
1656             return result;
1657         }
1658     }
1659
1660   if (base_type->code () == TYPE_CODE_PTR)
1661     {
1662       struct type *enc_type;
1663
1664       /* We may be pointing to something embedded in a larger object.
1665          Get the real type of the enclosing object.  */
1666       enc_type = check_typedef (value_enclosing_type (arg1));
1667       enc_type = TYPE_TARGET_TYPE (enc_type);
1668
1669       CORE_ADDR base_addr;
1670       if (check_typedef (enc_type)->code () == TYPE_CODE_FUNC
1671           || check_typedef (enc_type)->code () == TYPE_CODE_METHOD)
1672         {
1673           /* For functions, go through find_function_addr, which knows
1674              how to handle function descriptors.  */
1675           base_addr = find_function_addr (arg1, NULL);
1676         }
1677       else
1678         {
1679           /* Retrieve the enclosing object pointed to.  */
1680           base_addr = (value_as_address (arg1)
1681                        - value_pointed_to_offset (arg1));
1682         }
1683       arg2 = value_at_lazy (enc_type, base_addr);
1684       enc_type = value_type (arg2);
1685       return readjust_indirect_value_type (arg2, enc_type, base_type,
1686                                            arg1, base_addr);
1687     }
1688
1689   error (_("Attempt to take contents of a non-pointer value."));
1690 }
1691 \f
1692 /* Create a value for an array by allocating space in GDB, copying the
1693    data into that space, and then setting up an array value.
1694
1695    The array bounds are set from LOWBOUND and HIGHBOUND, and the array
1696    is populated from the values passed in ELEMVEC.
1697
1698    The element type of the array is inherited from the type of the
1699    first element, and all elements must have the same size (though we
1700    don't currently enforce any restriction on their types).  */
1701
1702 struct value *
1703 value_array (int lowbound, int highbound, struct value **elemvec)
1704 {
1705   int nelem;
1706   int idx;
1707   ULONGEST typelength;
1708   struct value *val;
1709   struct type *arraytype;
1710
1711   /* Validate that the bounds are reasonable and that each of the
1712      elements have the same size.  */
1713
1714   nelem = highbound - lowbound + 1;
1715   if (nelem <= 0)
1716     {
1717       error (_("bad array bounds (%d, %d)"), lowbound, highbound);
1718     }
1719   typelength = type_length_units (value_enclosing_type (elemvec[0]));
1720   for (idx = 1; idx < nelem; idx++)
1721     {
1722       if (type_length_units (value_enclosing_type (elemvec[idx]))
1723           != typelength)
1724         {
1725           error (_("array elements must all be the same size"));
1726         }
1727     }
1728
1729   arraytype = lookup_array_range_type (value_enclosing_type (elemvec[0]),
1730                                        lowbound, highbound);
1731
1732   if (!current_language->c_style_arrays_p ())
1733     {
1734       val = allocate_value (arraytype);
1735       for (idx = 0; idx < nelem; idx++)
1736         value_contents_copy (val, idx * typelength, elemvec[idx], 0,
1737                              typelength);
1738       return val;
1739     }
1740
1741   /* Allocate space to store the array, and then initialize it by
1742      copying in each element.  */
1743
1744   val = allocate_value (arraytype);
1745   for (idx = 0; idx < nelem; idx++)
1746     value_contents_copy (val, idx * typelength, elemvec[idx], 0, typelength);
1747   return val;
1748 }
1749
1750 struct value *
1751 value_cstring (const char *ptr, ssize_t len, struct type *char_type)
1752 {
1753   struct value *val;
1754   int lowbound = current_language->string_lower_bound ();
1755   ssize_t highbound = len / TYPE_LENGTH (char_type);
1756   struct type *stringtype
1757     = lookup_array_range_type (char_type, lowbound, highbound + lowbound - 1);
1758
1759   val = allocate_value (stringtype);
1760   memcpy (value_contents_raw (val), ptr, len);
1761   return val;
1762 }
1763
1764 /* Create a value for a string constant by allocating space in the
1765    inferior, copying the data into that space, and returning the
1766    address with type TYPE_CODE_STRING.  PTR points to the string
1767    constant data; LEN is number of characters.
1768
1769    Note that string types are like array of char types with a lower
1770    bound of zero and an upper bound of LEN - 1.  Also note that the
1771    string may contain embedded null bytes.  */
1772
1773 struct value *
1774 value_string (const char *ptr, ssize_t len, struct type *char_type)
1775 {
1776   struct value *val;
1777   int lowbound = current_language->string_lower_bound ();
1778   ssize_t highbound = len / TYPE_LENGTH (char_type);
1779   struct type *stringtype
1780     = lookup_string_range_type (char_type, lowbound, highbound + lowbound - 1);
1781
1782   val = allocate_value (stringtype);
1783   memcpy (value_contents_raw (val), ptr, len);
1784   return val;
1785 }
1786
1787 \f
1788 /* See if we can pass arguments in T2 to a function which takes
1789    arguments of types T1.  T1 is a list of NARGS arguments, and T2 is
1790    a NULL-terminated vector.  If some arguments need coercion of some
1791    sort, then the coerced values are written into T2.  Return value is
1792    0 if the arguments could be matched, or the position at which they
1793    differ if not.
1794
1795    STATICP is nonzero if the T1 argument list came from a static
1796    member function.  T2 will still include the ``this'' pointer, but
1797    it will be skipped.
1798
1799    For non-static member functions, we ignore the first argument,
1800    which is the type of the instance variable.  This is because we
1801    want to handle calls with objects from derived classes.  This is
1802    not entirely correct: we should actually check to make sure that a
1803    requested operation is type secure, shouldn't we?  FIXME.  */
1804
1805 static int
1806 typecmp (int staticp, int varargs, int nargs,
1807          struct field t1[], struct value *t2[])
1808 {
1809   int i;
1810
1811   if (t2 == 0)
1812     internal_error (__FILE__, __LINE__, 
1813                     _("typecmp: no argument list"));
1814
1815   /* Skip ``this'' argument if applicable.  T2 will always include
1816      THIS.  */
1817   if (staticp)
1818     t2 ++;
1819
1820   for (i = 0;
1821        (i < nargs) && t1[i].type ()->code () != TYPE_CODE_VOID;
1822        i++)
1823     {
1824       struct type *tt1, *tt2;
1825
1826       if (!t2[i])
1827         return i + 1;
1828
1829       tt1 = check_typedef (t1[i].type ());
1830       tt2 = check_typedef (value_type (t2[i]));
1831
1832       if (TYPE_IS_REFERENCE (tt1)
1833           /* We should be doing hairy argument matching, as below.  */
1834           && (check_typedef (TYPE_TARGET_TYPE (tt1))->code ()
1835               == tt2->code ()))
1836         {
1837           if (tt2->code () == TYPE_CODE_ARRAY)
1838             t2[i] = value_coerce_array (t2[i]);
1839           else
1840             t2[i] = value_ref (t2[i], tt1->code ());
1841           continue;
1842         }
1843
1844       /* djb - 20000715 - Until the new type structure is in the
1845          place, and we can attempt things like implicit conversions,
1846          we need to do this so you can take something like a map<const
1847          char *>, and properly access map["hello"], because the
1848          argument to [] will be a reference to a pointer to a char,
1849          and the argument will be a pointer to a char.  */
1850       while (TYPE_IS_REFERENCE (tt1) || tt1->code () == TYPE_CODE_PTR)
1851         {
1852           tt1 = check_typedef ( TYPE_TARGET_TYPE (tt1) );
1853         }
1854       while (tt2->code () == TYPE_CODE_ARRAY
1855              || tt2->code () == TYPE_CODE_PTR
1856              || TYPE_IS_REFERENCE (tt2))
1857         {
1858           tt2 = check_typedef (TYPE_TARGET_TYPE (tt2));
1859         }
1860       if (tt1->code () == tt2->code ())
1861         continue;
1862       /* Array to pointer is a `trivial conversion' according to the
1863          ARM.  */
1864
1865       /* We should be doing much hairier argument matching (see
1866          section 13.2 of the ARM), but as a quick kludge, just check
1867          for the same type code.  */
1868       if (t1[i].type ()->code () != value_type (t2[i])->code ())
1869         return i + 1;
1870     }
1871   if (varargs || t2[i] == NULL)
1872     return 0;
1873   return i + 1;
1874 }
1875
1876 /* Helper class for search_struct_field that keeps track of found
1877    results and possibly throws an exception if the search yields
1878    ambiguous results.  See search_struct_field for description of
1879    LOOKING_FOR_BASECLASS.  */
1880
1881 struct struct_field_searcher
1882 {
1883   /* A found field.  */
1884   struct found_field
1885   {
1886     /* Path to the structure where the field was found.  */
1887     std::vector<struct type *> path;
1888
1889     /* The field found.  */
1890     struct value *field_value;
1891   };
1892
1893   /* See corresponding fields for description of parameters.  */
1894   struct_field_searcher (const char *name,
1895                          struct type *outermost_type,
1896                          bool looking_for_baseclass)
1897     : m_name (name),
1898       m_looking_for_baseclass (looking_for_baseclass),
1899       m_outermost_type (outermost_type)
1900   {
1901   }
1902
1903   /* The search entry point.  If LOOKING_FOR_BASECLASS is true and the
1904      base class search yields ambiguous results, this throws an
1905      exception.  If LOOKING_FOR_BASECLASS is false, the found fields
1906      are accumulated and the caller (search_struct_field) takes care
1907      of throwing an error if the field search yields ambiguous
1908      results.  The latter is done that way so that the error message
1909      can include a list of all the found candidates.  */
1910   void search (struct value *arg, LONGEST offset, struct type *type);
1911
1912   const std::vector<found_field> &fields ()
1913   {
1914     return m_fields;
1915   }
1916
1917   struct value *baseclass ()
1918   {
1919     return m_baseclass;
1920   }
1921
1922 private:
1923   /* Update results to include V, a found field/baseclass.  */
1924   void update_result (struct value *v, LONGEST boffset);
1925
1926   /* The name of the field/baseclass we're searching for.  */
1927   const char *m_name;
1928
1929   /* Whether we're looking for a baseclass, or a field.  */
1930   const bool m_looking_for_baseclass;
1931
1932   /* The offset of the baseclass containing the field/baseclass we
1933      last recorded.  */
1934   LONGEST m_last_boffset = 0;
1935
1936   /* If looking for a baseclass, then the result is stored here.  */
1937   struct value *m_baseclass = nullptr;
1938
1939   /* When looking for fields, the found candidates are stored
1940      here.  */
1941   std::vector<found_field> m_fields;
1942
1943   /* The type of the initial type passed to search_struct_field; this
1944      is used for error reporting when the lookup is ambiguous.  */
1945   struct type *m_outermost_type;
1946
1947   /* The full path to the struct being inspected.  E.g. for field 'x'
1948      defined in class B inherited by class A, we have A and B pushed
1949      on the path.  */
1950   std::vector <struct type *> m_struct_path;
1951 };
1952
1953 void
1954 struct_field_searcher::update_result (struct value *v, LONGEST boffset)
1955 {
1956   if (v != NULL)
1957     {
1958       if (m_looking_for_baseclass)
1959         {
1960           if (m_baseclass != nullptr
1961               /* The result is not ambiguous if all the classes that are
1962                  found occupy the same space.  */
1963               && m_last_boffset != boffset)
1964             error (_("base class '%s' is ambiguous in type '%s'"),
1965                    m_name, TYPE_SAFE_NAME (m_outermost_type));
1966
1967           m_baseclass = v;
1968           m_last_boffset = boffset;
1969         }
1970       else
1971         {
1972           /* The field is not ambiguous if it occupies the same
1973              space.  */
1974           if (m_fields.empty () || m_last_boffset != boffset)
1975             m_fields.push_back ({m_struct_path, v});
1976         }
1977     }
1978 }
1979
1980 /* A helper for search_struct_field.  This does all the work; most
1981    arguments are as passed to search_struct_field.  */
1982
1983 void
1984 struct_field_searcher::search (struct value *arg1, LONGEST offset,
1985                                struct type *type)
1986 {
1987   int i;
1988   int nbases;
1989
1990   m_struct_path.push_back (type);
1991   SCOPE_EXIT { m_struct_path.pop_back (); };
1992
1993   type = check_typedef (type);
1994   nbases = TYPE_N_BASECLASSES (type);
1995
1996   if (!m_looking_for_baseclass)
1997     for (i = type->num_fields () - 1; i >= nbases; i--)
1998       {
1999         const char *t_field_name = TYPE_FIELD_NAME (type, i);
2000
2001         if (t_field_name && (strcmp_iw (t_field_name, m_name) == 0))
2002           {
2003             struct value *v;
2004
2005             if (field_is_static (&type->field (i)))
2006               v = value_static_field (type, i);
2007             else
2008               v = value_primitive_field (arg1, offset, i, type);
2009
2010             update_result (v, offset);
2011             return;
2012           }
2013
2014         if (t_field_name
2015             && t_field_name[0] == '\0')
2016           {
2017             struct type *field_type = type->field (i).type ();
2018
2019             if (field_type->code () == TYPE_CODE_UNION
2020                 || field_type->code () == TYPE_CODE_STRUCT)
2021               {
2022                 /* Look for a match through the fields of an anonymous
2023                    union, or anonymous struct.  C++ provides anonymous
2024                    unions.
2025
2026                    In the GNU Chill (now deleted from GDB)
2027                    implementation of variant record types, each
2028                    <alternative field> has an (anonymous) union type,
2029                    each member of the union represents a <variant
2030                    alternative>.  Each <variant alternative> is
2031                    represented as a struct, with a member for each
2032                    <variant field>.  */
2033
2034                 LONGEST new_offset = offset;
2035
2036                 /* This is pretty gross.  In G++, the offset in an
2037                    anonymous union is relative to the beginning of the
2038                    enclosing struct.  In the GNU Chill (now deleted
2039                    from GDB) implementation of variant records, the
2040                    bitpos is zero in an anonymous union field, so we
2041                    have to add the offset of the union here.  */
2042                 if (field_type->code () == TYPE_CODE_STRUCT
2043                     || (field_type->num_fields () > 0
2044                         && TYPE_FIELD_BITPOS (field_type, 0) == 0))
2045                   new_offset += TYPE_FIELD_BITPOS (type, i) / 8;
2046
2047                 search (arg1, new_offset, field_type);
2048               }
2049           }
2050       }
2051
2052   for (i = 0; i < nbases; i++)
2053     {
2054       struct value *v = NULL;
2055       struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
2056       /* If we are looking for baseclasses, this is what we get when
2057          we hit them.  But it could happen that the base part's member
2058          name is not yet filled in.  */
2059       int found_baseclass = (m_looking_for_baseclass
2060                              && TYPE_BASECLASS_NAME (type, i) != NULL
2061                              && (strcmp_iw (m_name,
2062                                             TYPE_BASECLASS_NAME (type,
2063                                                                  i)) == 0));
2064       LONGEST boffset = value_embedded_offset (arg1) + offset;
2065
2066       if (BASETYPE_VIA_VIRTUAL (type, i))
2067         {
2068           struct value *v2;
2069
2070           boffset = baseclass_offset (type, i,
2071                                       value_contents_for_printing (arg1),
2072                                       value_embedded_offset (arg1) + offset,
2073                                       value_address (arg1),
2074                                       arg1);
2075
2076           /* The virtual base class pointer might have been clobbered
2077              by the user program.  Make sure that it still points to a
2078              valid memory location.  */
2079
2080           boffset += value_embedded_offset (arg1) + offset;
2081           if (boffset < 0
2082               || boffset >= TYPE_LENGTH (value_enclosing_type (arg1)))
2083             {
2084               CORE_ADDR base_addr;
2085
2086               base_addr = value_address (arg1) + boffset;
2087               v2 = value_at_lazy (basetype, base_addr);
2088               if (target_read_memory (base_addr, 
2089                                       value_contents_raw (v2),
2090                                       TYPE_LENGTH (value_type (v2))) != 0)
2091                 error (_("virtual baseclass botch"));
2092             }
2093           else
2094             {
2095               v2 = value_copy (arg1);
2096               deprecated_set_value_type (v2, basetype);
2097               set_value_embedded_offset (v2, boffset);
2098             }
2099
2100           if (found_baseclass)
2101             v = v2;
2102           else
2103             search (v2, 0, TYPE_BASECLASS (type, i));
2104         }
2105       else if (found_baseclass)
2106         v = value_primitive_field (arg1, offset, i, type);
2107       else
2108         {
2109           search (arg1, offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
2110                   basetype);
2111         }
2112
2113       update_result (v, boffset);
2114     }
2115 }
2116
2117 /* Helper function used by value_struct_elt to recurse through
2118    baseclasses.  Look for a field NAME in ARG1.  Search in it assuming
2119    it has (class) type TYPE.  If found, return value, else return NULL.
2120
2121    If LOOKING_FOR_BASECLASS, then instead of looking for struct
2122    fields, look for a baseclass named NAME.  */
2123
2124 static struct value *
2125 search_struct_field (const char *name, struct value *arg1,
2126                      struct type *type, int looking_for_baseclass)
2127 {
2128   struct_field_searcher searcher (name, type, looking_for_baseclass);
2129
2130   searcher.search (arg1, 0, type);
2131
2132   if (!looking_for_baseclass)
2133     {
2134       const auto &fields = searcher.fields ();
2135
2136       if (fields.empty ())
2137         return nullptr;
2138       else if (fields.size () == 1)
2139         return fields[0].field_value;
2140       else
2141         {
2142           std::string candidates;
2143
2144           for (auto &&candidate : fields)
2145             {
2146               gdb_assert (!candidate.path.empty ());
2147
2148               struct type *field_type = value_type (candidate.field_value);
2149               struct type *struct_type = candidate.path.back ();
2150
2151               std::string path;
2152               bool first = true;
2153               for (struct type *t : candidate.path)
2154                 {
2155                   if (first)
2156                     first = false;
2157                   else
2158                     path += " -> ";
2159                   path += t->name ();
2160                 }
2161
2162               candidates += string_printf ("\n  '%s %s::%s' (%s)",
2163                                            TYPE_SAFE_NAME (field_type),
2164                                            TYPE_SAFE_NAME (struct_type),
2165                                            name,
2166                                            path.c_str ());
2167             }
2168
2169           error (_("Request for member '%s' is ambiguous in type '%s'."
2170                    " Candidates are:%s"),
2171                  name, TYPE_SAFE_NAME (type),
2172                  candidates.c_str ());
2173         }
2174     }
2175   else
2176     return searcher.baseclass ();
2177 }
2178
2179 /* Helper function used by value_struct_elt to recurse through
2180    baseclasses.  Look for a field NAME in ARG1.  Adjust the address of
2181    ARG1 by OFFSET bytes, and search in it assuming it has (class) type
2182    TYPE.
2183
2184    If found, return value, else if name matched and args not return
2185    (value) -1, else return NULL.  */
2186
2187 static struct value *
2188 search_struct_method (const char *name, struct value **arg1p,
2189                       struct value **args, LONGEST offset,
2190                       int *static_memfuncp, struct type *type)
2191 {
2192   int i;
2193   struct value *v;
2194   int name_matched = 0;
2195
2196   type = check_typedef (type);
2197   for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2198     {
2199       const char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2200
2201       if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2202         {
2203           int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
2204           struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
2205
2206           name_matched = 1;
2207           check_stub_method_group (type, i);
2208           if (j > 0 && args == 0)
2209             error (_("cannot resolve overloaded method "
2210                      "`%s': no arguments supplied"), name);
2211           else if (j == 0 && args == 0)
2212             {
2213               v = value_fn_field (arg1p, f, j, type, offset);
2214               if (v != NULL)
2215                 return v;
2216             }
2217           else
2218             while (j >= 0)
2219               {
2220                 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
2221                               TYPE_FN_FIELD_TYPE (f, j)->has_varargs (),
2222                               TYPE_FN_FIELD_TYPE (f, j)->num_fields (),
2223                               TYPE_FN_FIELD_ARGS (f, j), args))
2224                   {
2225                     if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
2226                       return value_virtual_fn_field (arg1p, f, j, 
2227                                                      type, offset);
2228                     if (TYPE_FN_FIELD_STATIC_P (f, j) 
2229                         && static_memfuncp)
2230                       *static_memfuncp = 1;
2231                     v = value_fn_field (arg1p, f, j, type, offset);
2232                     if (v != NULL)
2233                       return v;       
2234                   }
2235                 j--;
2236               }
2237         }
2238     }
2239
2240   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2241     {
2242       LONGEST base_offset;
2243       LONGEST this_offset;
2244
2245       if (BASETYPE_VIA_VIRTUAL (type, i))
2246         {
2247           struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
2248           struct value *base_val;
2249           const gdb_byte *base_valaddr;
2250
2251           /* The virtual base class pointer might have been
2252              clobbered by the user program.  Make sure that it
2253              still points to a valid memory location.  */
2254
2255           if (offset < 0 || offset >= TYPE_LENGTH (type))
2256             {
2257               CORE_ADDR address;
2258
2259               gdb::byte_vector tmp (TYPE_LENGTH (baseclass));
2260               address = value_address (*arg1p);
2261
2262               if (target_read_memory (address + offset,
2263                                       tmp.data (), TYPE_LENGTH (baseclass)) != 0)
2264                 error (_("virtual baseclass botch"));
2265
2266               base_val = value_from_contents_and_address (baseclass,
2267                                                           tmp.data (),
2268                                                           address + offset);
2269               base_valaddr = value_contents_for_printing (base_val);
2270               this_offset = 0;
2271             }
2272           else
2273             {
2274               base_val = *arg1p;
2275               base_valaddr = value_contents_for_printing (*arg1p);
2276               this_offset = offset;
2277             }
2278
2279           base_offset = baseclass_offset (type, i, base_valaddr,
2280                                           this_offset, value_address (base_val),
2281                                           base_val);
2282         }
2283       else
2284         {
2285           base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2286         }
2287       v = search_struct_method (name, arg1p, args, base_offset + offset,
2288                                 static_memfuncp, TYPE_BASECLASS (type, i));
2289       if (v == (struct value *) - 1)
2290         {
2291           name_matched = 1;
2292         }
2293       else if (v)
2294         {
2295           /* FIXME-bothner:  Why is this commented out?  Why is it here?  */
2296           /* *arg1p = arg1_tmp; */
2297           return v;
2298         }
2299     }
2300   if (name_matched)
2301     return (struct value *) - 1;
2302   else
2303     return NULL;
2304 }
2305
2306 /* Given *ARGP, a value of type (pointer to a)* structure/union,
2307    extract the component named NAME from the ultimate target
2308    structure/union and return it as a value with its appropriate type.
2309    ERR is used in the error message if *ARGP's type is wrong.
2310
2311    C++: ARGS is a list of argument types to aid in the selection of
2312    an appropriate method.  Also, handle derived types.
2313
2314    STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
2315    where the truthvalue of whether the function that was resolved was
2316    a static member function or not is stored.
2317
2318    ERR is an error message to be printed in case the field is not
2319    found.  */
2320
2321 struct value *
2322 value_struct_elt (struct value **argp, struct value **args,
2323                   const char *name, int *static_memfuncp, const char *err)
2324 {
2325   struct type *t;
2326   struct value *v;
2327
2328   *argp = coerce_array (*argp);
2329
2330   t = check_typedef (value_type (*argp));
2331
2332   /* Follow pointers until we get to a non-pointer.  */
2333
2334   while (t->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
2335     {
2336       *argp = value_ind (*argp);
2337       /* Don't coerce fn pointer to fn and then back again!  */
2338       if (check_typedef (value_type (*argp))->code () != TYPE_CODE_FUNC)
2339         *argp = coerce_array (*argp);
2340       t = check_typedef (value_type (*argp));
2341     }
2342
2343   if (t->code () != TYPE_CODE_STRUCT
2344       && t->code () != TYPE_CODE_UNION)
2345     error (_("Attempt to extract a component of a value that is not a %s."),
2346            err);
2347
2348   /* Assume it's not, unless we see that it is.  */
2349   if (static_memfuncp)
2350     *static_memfuncp = 0;
2351
2352   if (!args)
2353     {
2354       /* if there are no arguments ...do this...  */
2355
2356       /* Try as a field first, because if we succeed, there is less
2357          work to be done.  */
2358       v = search_struct_field (name, *argp, t, 0);
2359       if (v)
2360         return v;
2361
2362       /* C++: If it was not found as a data field, then try to
2363          return it as a pointer to a method.  */
2364       v = search_struct_method (name, argp, args, 0, 
2365                                 static_memfuncp, t);
2366
2367       if (v == (struct value *) - 1)
2368         error (_("Cannot take address of method %s."), name);
2369       else if (v == 0)
2370         {
2371           if (TYPE_NFN_FIELDS (t))
2372             error (_("There is no member or method named %s."), name);
2373           else
2374             error (_("There is no member named %s."), name);
2375         }
2376       return v;
2377     }
2378
2379   v = search_struct_method (name, argp, args, 0, 
2380                             static_memfuncp, t);
2381   
2382   if (v == (struct value *) - 1)
2383     {
2384       error (_("One of the arguments you tried to pass to %s could not "
2385                "be converted to what the function wants."), name);
2386     }
2387   else if (v == 0)
2388     {
2389       /* See if user tried to invoke data as function.  If so, hand it
2390          back.  If it's not callable (i.e., a pointer to function),
2391          gdb should give an error.  */
2392       v = search_struct_field (name, *argp, t, 0);
2393       /* If we found an ordinary field, then it is not a method call.
2394          So, treat it as if it were a static member function.  */
2395       if (v && static_memfuncp)
2396         *static_memfuncp = 1;
2397     }
2398
2399   if (!v)
2400     throw_error (NOT_FOUND_ERROR,
2401                  _("Structure has no component named %s."), name);
2402   return v;
2403 }
2404
2405 /* Given *ARGP, a value of type structure or union, or a pointer/reference
2406    to a structure or union, extract and return its component (field) of
2407    type FTYPE at the specified BITPOS.
2408    Throw an exception on error.  */
2409
2410 struct value *
2411 value_struct_elt_bitpos (struct value **argp, int bitpos, struct type *ftype,
2412                          const char *err)
2413 {
2414   struct type *t;
2415   int i;
2416
2417   *argp = coerce_array (*argp);
2418
2419   t = check_typedef (value_type (*argp));
2420
2421   while (t->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
2422     {
2423       *argp = value_ind (*argp);
2424       if (check_typedef (value_type (*argp))->code () != TYPE_CODE_FUNC)
2425         *argp = coerce_array (*argp);
2426       t = check_typedef (value_type (*argp));
2427     }
2428
2429   if (t->code () != TYPE_CODE_STRUCT
2430       && t->code () != TYPE_CODE_UNION)
2431     error (_("Attempt to extract a component of a value that is not a %s."),
2432            err);
2433
2434   for (i = TYPE_N_BASECLASSES (t); i < t->num_fields (); i++)
2435     {
2436       if (!field_is_static (&t->field (i))
2437           && bitpos == TYPE_FIELD_BITPOS (t, i)
2438           && types_equal (ftype, t->field (i).type ()))
2439         return value_primitive_field (*argp, 0, i, t);
2440     }
2441
2442   error (_("No field with matching bitpos and type."));
2443
2444   /* Never hit.  */
2445   return NULL;
2446 }
2447
2448 /* Search through the methods of an object (and its bases) to find a
2449    specified method.  Return a reference to the fn_field list METHODS of
2450    overloaded instances defined in the source language.  If available
2451    and matching, a vector of matching xmethods defined in extension
2452    languages are also returned in XMETHODS.
2453
2454    Helper function for value_find_oload_list.
2455    ARGP is a pointer to a pointer to a value (the object).
2456    METHOD is a string containing the method name.
2457    OFFSET is the offset within the value.
2458    TYPE is the assumed type of the object.
2459    METHODS is a pointer to the matching overloaded instances defined
2460       in the source language.  Since this is a recursive function,
2461       *METHODS should be set to NULL when calling this function.
2462    NUM_FNS is the number of overloaded instances.  *NUM_FNS should be set to
2463       0 when calling this function.
2464    XMETHODS is the vector of matching xmethod workers.  *XMETHODS
2465       should also be set to NULL when calling this function.
2466    BASETYPE is set to the actual type of the subobject where the
2467       method is found.
2468    BOFFSET is the offset of the base subobject where the method is found.  */
2469
2470 static void
2471 find_method_list (struct value **argp, const char *method,
2472                   LONGEST offset, struct type *type,
2473                   gdb::array_view<fn_field> *methods,
2474                   std::vector<xmethod_worker_up> *xmethods,
2475                   struct type **basetype, LONGEST *boffset)
2476 {
2477   int i;
2478   struct fn_field *f = NULL;
2479
2480   gdb_assert (methods != NULL && xmethods != NULL);
2481   type = check_typedef (type);
2482
2483   /* First check in object itself.
2484      This function is called recursively to search through base classes.
2485      If there is a source method match found at some stage, then we need not
2486      look for source methods in consequent recursive calls.  */
2487   if (methods->empty ())
2488     {
2489       for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2490         {
2491           /* pai: FIXME What about operators and type conversions?  */
2492           const char *fn_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2493
2494           if (fn_field_name && (strcmp_iw (fn_field_name, method) == 0))
2495             {
2496               int len = TYPE_FN_FIELDLIST_LENGTH (type, i);
2497               f = TYPE_FN_FIELDLIST1 (type, i);
2498               *methods = gdb::make_array_view (f, len);
2499
2500               *basetype = type;
2501               *boffset = offset;
2502
2503               /* Resolve any stub methods.  */
2504               check_stub_method_group (type, i);
2505
2506               break;
2507             }
2508         }
2509     }
2510
2511   /* Unlike source methods, xmethods can be accumulated over successive
2512      recursive calls.  In other words, an xmethod named 'm' in a class
2513      will not hide an xmethod named 'm' in its base class(es).  We want
2514      it to be this way because xmethods are after all convenience functions
2515      and hence there is no point restricting them with something like method
2516      hiding.  Moreover, if hiding is done for xmethods as well, then we will
2517      have to provide a mechanism to un-hide (like the 'using' construct).  */
2518   get_matching_xmethod_workers (type, method, xmethods);
2519
2520   /* If source methods are not found in current class, look for them in the
2521      base classes.  We also have to go through the base classes to gather
2522      extension methods.  */
2523   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2524     {
2525       LONGEST base_offset;
2526
2527       if (BASETYPE_VIA_VIRTUAL (type, i))
2528         {
2529           base_offset = baseclass_offset (type, i,
2530                                           value_contents_for_printing (*argp),
2531                                           value_offset (*argp) + offset,
2532                                           value_address (*argp), *argp);
2533         }
2534       else /* Non-virtual base, simply use bit position from debug
2535               info.  */
2536         {
2537           base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2538         }
2539
2540       find_method_list (argp, method, base_offset + offset,
2541                         TYPE_BASECLASS (type, i), methods,
2542                         xmethods, basetype, boffset);
2543     }
2544 }
2545
2546 /* Return the list of overloaded methods of a specified name.  The methods
2547    could be those GDB finds in the binary, or xmethod.  Methods found in
2548    the binary are returned in METHODS, and xmethods are returned in
2549    XMETHODS.
2550
2551    ARGP is a pointer to a pointer to a value (the object).
2552    METHOD is the method name.
2553    OFFSET is the offset within the value contents.
2554    METHODS is the list of matching overloaded instances defined in
2555       the source language.
2556    XMETHODS is the vector of matching xmethod workers defined in
2557       extension languages.
2558    BASETYPE is set to the type of the base subobject that defines the
2559       method.
2560    BOFFSET is the offset of the base subobject which defines the method.  */
2561
2562 static void
2563 value_find_oload_method_list (struct value **argp, const char *method,
2564                               LONGEST offset,
2565                               gdb::array_view<fn_field> *methods,
2566                               std::vector<xmethod_worker_up> *xmethods,
2567                               struct type **basetype, LONGEST *boffset)
2568 {
2569   struct type *t;
2570
2571   t = check_typedef (value_type (*argp));
2572
2573   /* Code snarfed from value_struct_elt.  */
2574   while (t->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
2575     {
2576       *argp = value_ind (*argp);
2577       /* Don't coerce fn pointer to fn and then back again!  */
2578       if (check_typedef (value_type (*argp))->code () != TYPE_CODE_FUNC)
2579         *argp = coerce_array (*argp);
2580       t = check_typedef (value_type (*argp));
2581     }
2582
2583   if (t->code () != TYPE_CODE_STRUCT
2584       && t->code () != TYPE_CODE_UNION)
2585     error (_("Attempt to extract a component of a "
2586              "value that is not a struct or union"));
2587
2588   gdb_assert (methods != NULL && xmethods != NULL);
2589
2590   /* Clear the lists.  */
2591   *methods = {};
2592   xmethods->clear ();
2593
2594   find_method_list (argp, method, 0, t, methods, xmethods,
2595                     basetype, boffset);
2596 }
2597
2598 /* Given an array of arguments (ARGS) (which includes an entry for
2599    "this" in the case of C++ methods), the NAME of a function, and
2600    whether it's a method or not (METHOD), find the best function that
2601    matches on the argument types according to the overload resolution
2602    rules.
2603
2604    METHOD can be one of three values:
2605      NON_METHOD for non-member functions.
2606      METHOD: for member functions.
2607      BOTH: used for overload resolution of operators where the
2608        candidates are expected to be either member or non member
2609        functions.  In this case the first argument ARGTYPES
2610        (representing 'this') is expected to be a reference to the
2611        target object, and will be dereferenced when attempting the
2612        non-member search.
2613
2614    In the case of class methods, the parameter OBJ is an object value
2615    in which to search for overloaded methods.
2616
2617    In the case of non-method functions, the parameter FSYM is a symbol
2618    corresponding to one of the overloaded functions.
2619
2620    Return value is an integer: 0 -> good match, 10 -> debugger applied
2621    non-standard coercions, 100 -> incompatible.
2622
2623    If a method is being searched for, VALP will hold the value.
2624    If a non-method is being searched for, SYMP will hold the symbol 
2625    for it.
2626
2627    If a method is being searched for, and it is a static method,
2628    then STATICP will point to a non-zero value.
2629
2630    If NO_ADL argument dependent lookup is disabled.  This is used to prevent
2631    ADL overload candidates when performing overload resolution for a fully
2632    qualified name.
2633
2634    If NOSIDE is EVAL_AVOID_SIDE_EFFECTS, then OBJP's memory cannot be
2635    read while picking the best overload match (it may be all zeroes and thus
2636    not have a vtable pointer), in which case skip virtual function lookup.
2637    This is ok as typically EVAL_AVOID_SIDE_EFFECTS is only used to determine
2638    the result type.
2639
2640    Note: This function does *not* check the value of
2641    overload_resolution.  Caller must check it to see whether overload
2642    resolution is permitted.  */
2643
2644 int
2645 find_overload_match (gdb::array_view<value *> args,
2646                      const char *name, enum oload_search_type method,
2647                      struct value **objp, struct symbol *fsym,
2648                      struct value **valp, struct symbol **symp, 
2649                      int *staticp, const int no_adl,
2650                      const enum noside noside)
2651 {
2652   struct value *obj = (objp ? *objp : NULL);
2653   struct type *obj_type = obj ? value_type (obj) : NULL;
2654   /* Index of best overloaded function.  */
2655   int func_oload_champ = -1;
2656   int method_oload_champ = -1;
2657   int src_method_oload_champ = -1;
2658   int ext_method_oload_champ = -1;
2659
2660   /* The measure for the current best match.  */
2661   badness_vector method_badness;
2662   badness_vector func_badness;
2663   badness_vector ext_method_badness;
2664   badness_vector src_method_badness;
2665
2666   struct value *temp = obj;
2667   /* For methods, the list of overloaded methods.  */
2668   gdb::array_view<fn_field> methods;
2669   /* For non-methods, the list of overloaded function symbols.  */
2670   std::vector<symbol *> functions;
2671   /* For xmethods, the vector of xmethod workers.  */
2672   std::vector<xmethod_worker_up> xmethods;
2673   struct type *basetype = NULL;
2674   LONGEST boffset;
2675
2676   const char *obj_type_name = NULL;
2677   const char *func_name = NULL;
2678   gdb::unique_xmalloc_ptr<char> temp_func;
2679   enum oload_classification match_quality;
2680   enum oload_classification method_match_quality = INCOMPATIBLE;
2681   enum oload_classification src_method_match_quality = INCOMPATIBLE;
2682   enum oload_classification ext_method_match_quality = INCOMPATIBLE;
2683   enum oload_classification func_match_quality = INCOMPATIBLE;
2684
2685   /* Get the list of overloaded methods or functions.  */
2686   if (method == METHOD || method == BOTH)
2687     {
2688       gdb_assert (obj);
2689
2690       /* OBJ may be a pointer value rather than the object itself.  */
2691       obj = coerce_ref (obj);
2692       while (check_typedef (value_type (obj))->code () == TYPE_CODE_PTR)
2693         obj = coerce_ref (value_ind (obj));
2694       obj_type_name = value_type (obj)->name ();
2695
2696       /* First check whether this is a data member, e.g. a pointer to
2697          a function.  */
2698       if (check_typedef (value_type (obj))->code () == TYPE_CODE_STRUCT)
2699         {
2700           *valp = search_struct_field (name, obj,
2701                                        check_typedef (value_type (obj)), 0);
2702           if (*valp)
2703             {
2704               *staticp = 1;
2705               return 0;
2706             }
2707         }
2708
2709       /* Retrieve the list of methods with the name NAME.  */
2710       value_find_oload_method_list (&temp, name, 0, &methods,
2711                                     &xmethods, &basetype, &boffset);
2712       /* If this is a method only search, and no methods were found
2713          the search has failed.  */
2714       if (method == METHOD && methods.empty () && xmethods.empty ())
2715         error (_("Couldn't find method %s%s%s"),
2716                obj_type_name,
2717                (obj_type_name && *obj_type_name) ? "::" : "",
2718                name);
2719       /* If we are dealing with stub method types, they should have
2720          been resolved by find_method_list via
2721          value_find_oload_method_list above.  */
2722       if (!methods.empty ())
2723         {
2724           gdb_assert (TYPE_SELF_TYPE (methods[0].type) != NULL);
2725
2726           src_method_oload_champ
2727             = find_oload_champ (args,
2728                                 methods.size (),
2729                                 methods.data (), NULL, NULL,
2730                                 &src_method_badness);
2731
2732           src_method_match_quality = classify_oload_match
2733             (src_method_badness, args.size (),
2734              oload_method_static_p (methods.data (), src_method_oload_champ));
2735         }
2736
2737       if (!xmethods.empty ())
2738         {
2739           ext_method_oload_champ
2740             = find_oload_champ (args,
2741                                 xmethods.size (),
2742                                 NULL, xmethods.data (), NULL,
2743                                 &ext_method_badness);
2744           ext_method_match_quality = classify_oload_match (ext_method_badness,
2745                                                            args.size (), 0);
2746         }
2747
2748       if (src_method_oload_champ >= 0 && ext_method_oload_champ >= 0)
2749         {
2750           switch (compare_badness (ext_method_badness, src_method_badness))
2751             {
2752               case 0: /* Src method and xmethod are equally good.  */
2753                 /* If src method and xmethod are equally good, then
2754                    xmethod should be the winner.  Hence, fall through to the
2755                    case where a xmethod is better than the source
2756                    method, except when the xmethod match quality is
2757                    non-standard.  */
2758                 /* FALLTHROUGH */
2759               case 1: /* Src method and ext method are incompatible.  */
2760                 /* If ext method match is not standard, then let source method
2761                    win.  Otherwise, fallthrough to let xmethod win.  */
2762                 if (ext_method_match_quality != STANDARD)
2763                   {
2764                     method_oload_champ = src_method_oload_champ;
2765                     method_badness = src_method_badness;
2766                     ext_method_oload_champ = -1;
2767                     method_match_quality = src_method_match_quality;
2768                     break;
2769                   }
2770                 /* FALLTHROUGH */
2771               case 2: /* Ext method is champion.  */
2772                 method_oload_champ = ext_method_oload_champ;
2773                 method_badness = ext_method_badness;
2774                 src_method_oload_champ = -1;
2775                 method_match_quality = ext_method_match_quality;
2776                 break;
2777               case 3: /* Src method is champion.  */
2778                 method_oload_champ = src_method_oload_champ;
2779                 method_badness = src_method_badness;
2780                 ext_method_oload_champ = -1;
2781                 method_match_quality = src_method_match_quality;
2782                 break;
2783               default:
2784                 gdb_assert_not_reached ("Unexpected overload comparison "
2785                                         "result");
2786                 break;
2787             }
2788         }
2789       else if (src_method_oload_champ >= 0)
2790         {
2791           method_oload_champ = src_method_oload_champ;
2792           method_badness = src_method_badness;
2793           method_match_quality = src_method_match_quality;
2794         }
2795       else if (ext_method_oload_champ >= 0)
2796         {
2797           method_oload_champ = ext_method_oload_champ;
2798           method_badness = ext_method_badness;
2799           method_match_quality = ext_method_match_quality;
2800         }
2801     }
2802
2803   if (method == NON_METHOD || method == BOTH)
2804     {
2805       const char *qualified_name = NULL;
2806
2807       /* If the overload match is being search for both as a method
2808          and non member function, the first argument must now be
2809          dereferenced.  */
2810       if (method == BOTH)
2811         args[0] = value_ind (args[0]);
2812
2813       if (fsym)
2814         {
2815           qualified_name = fsym->natural_name ();
2816
2817           /* If we have a function with a C++ name, try to extract just
2818              the function part.  Do not try this for non-functions (e.g.
2819              function pointers).  */
2820           if (qualified_name
2821               && (check_typedef (SYMBOL_TYPE (fsym))->code ()
2822                   == TYPE_CODE_FUNC))
2823             {
2824               temp_func = cp_func_name (qualified_name);
2825
2826               /* If cp_func_name did not remove anything, the name of the
2827                  symbol did not include scope or argument types - it was
2828                  probably a C-style function.  */
2829               if (temp_func != nullptr)
2830                 {
2831                   if (strcmp (temp_func.get (), qualified_name) == 0)
2832                     func_name = NULL;
2833                   else
2834                     func_name = temp_func.get ();
2835                 }
2836             }
2837         }
2838       else
2839         {
2840           func_name = name;
2841           qualified_name = name;
2842         }
2843
2844       /* If there was no C++ name, this must be a C-style function or
2845          not a function at all.  Just return the same symbol.  Do the
2846          same if cp_func_name fails for some reason.  */
2847       if (func_name == NULL)
2848         {
2849           *symp = fsym;
2850           return 0;
2851         }
2852
2853       func_oload_champ = find_oload_champ_namespace (args,
2854                                                      func_name,
2855                                                      qualified_name,
2856                                                      &functions,
2857                                                      &func_badness,
2858                                                      no_adl);
2859
2860       if (func_oload_champ >= 0)
2861         func_match_quality = classify_oload_match (func_badness,
2862                                                    args.size (), 0);
2863     }
2864
2865   /* Did we find a match ?  */
2866   if (method_oload_champ == -1 && func_oload_champ == -1)
2867     throw_error (NOT_FOUND_ERROR,
2868                  _("No symbol \"%s\" in current context."),
2869                  name);
2870
2871   /* If we have found both a method match and a function
2872      match, find out which one is better, and calculate match
2873      quality.  */
2874   if (method_oload_champ >= 0 && func_oload_champ >= 0)
2875     {
2876       switch (compare_badness (func_badness, method_badness))
2877         {
2878           case 0: /* Top two contenders are equally good.  */
2879             /* FIXME: GDB does not support the general ambiguous case.
2880              All candidates should be collected and presented the
2881              user.  */
2882             error (_("Ambiguous overload resolution"));
2883             break;
2884           case 1: /* Incomparable top contenders.  */
2885             /* This is an error incompatible candidates
2886                should not have been proposed.  */
2887             error (_("Internal error: incompatible "
2888                      "overload candidates proposed"));
2889             break;
2890           case 2: /* Function champion.  */
2891             method_oload_champ = -1;
2892             match_quality = func_match_quality;
2893             break;
2894           case 3: /* Method champion.  */
2895             func_oload_champ = -1;
2896             match_quality = method_match_quality;
2897             break;
2898           default:
2899             error (_("Internal error: unexpected overload comparison result"));
2900             break;
2901         }
2902     }
2903   else
2904     {
2905       /* We have either a method match or a function match.  */
2906       if (method_oload_champ >= 0)
2907         match_quality = method_match_quality;
2908       else
2909         match_quality = func_match_quality;
2910     }
2911
2912   if (match_quality == INCOMPATIBLE)
2913     {
2914       if (method == METHOD)
2915         error (_("Cannot resolve method %s%s%s to any overloaded instance"),
2916                obj_type_name,
2917                (obj_type_name && *obj_type_name) ? "::" : "",
2918                name);
2919       else
2920         error (_("Cannot resolve function %s to any overloaded instance"),
2921                func_name);
2922     }
2923   else if (match_quality == NON_STANDARD)
2924     {
2925       if (method == METHOD)
2926         warning (_("Using non-standard conversion to match "
2927                    "method %s%s%s to supplied arguments"),
2928                  obj_type_name,
2929                  (obj_type_name && *obj_type_name) ? "::" : "",
2930                  name);
2931       else
2932         warning (_("Using non-standard conversion to match "
2933                    "function %s to supplied arguments"),
2934                  func_name);
2935     }
2936
2937   if (staticp != NULL)
2938     *staticp = oload_method_static_p (methods.data (), method_oload_champ);
2939
2940   if (method_oload_champ >= 0)
2941     {
2942       if (src_method_oload_champ >= 0)
2943         {
2944           if (TYPE_FN_FIELD_VIRTUAL_P (methods, method_oload_champ)
2945               && noside != EVAL_AVOID_SIDE_EFFECTS)
2946             {
2947               *valp = value_virtual_fn_field (&temp, methods.data (),
2948                                               method_oload_champ, basetype,
2949                                               boffset);
2950             }
2951           else
2952             *valp = value_fn_field (&temp, methods.data (),
2953                                     method_oload_champ, basetype, boffset);
2954         }
2955       else
2956         *valp = value_from_xmethod
2957           (std::move (xmethods[ext_method_oload_champ]));
2958     }
2959   else
2960     *symp = functions[func_oload_champ];
2961
2962   if (objp)
2963     {
2964       struct type *temp_type = check_typedef (value_type (temp));
2965       struct type *objtype = check_typedef (obj_type);
2966
2967       if (temp_type->code () != TYPE_CODE_PTR
2968           && (objtype->code () == TYPE_CODE_PTR
2969               || TYPE_IS_REFERENCE (objtype)))
2970         {
2971           temp = value_addr (temp);
2972         }
2973       *objp = temp;
2974     }
2975
2976   switch (match_quality)
2977     {
2978     case INCOMPATIBLE:
2979       return 100;
2980     case NON_STANDARD:
2981       return 10;
2982     default:                            /* STANDARD */
2983       return 0;
2984     }
2985 }
2986
2987 /* Find the best overload match, searching for FUNC_NAME in namespaces
2988    contained in QUALIFIED_NAME until it either finds a good match or
2989    runs out of namespaces.  It stores the overloaded functions in
2990    *OLOAD_SYMS, and the badness vector in *OLOAD_CHAMP_BV.  If NO_ADL,
2991    argument dependent lookup is not performed.  */
2992
2993 static int
2994 find_oload_champ_namespace (gdb::array_view<value *> args,
2995                             const char *func_name,
2996                             const char *qualified_name,
2997                             std::vector<symbol *> *oload_syms,
2998                             badness_vector *oload_champ_bv,
2999                             const int no_adl)
3000 {
3001   int oload_champ;
3002
3003   find_oload_champ_namespace_loop (args,
3004                                    func_name,
3005                                    qualified_name, 0,
3006                                    oload_syms, oload_champ_bv,
3007                                    &oload_champ,
3008                                    no_adl);
3009
3010   return oload_champ;
3011 }
3012
3013 /* Helper function for find_oload_champ_namespace; NAMESPACE_LEN is
3014    how deep we've looked for namespaces, and the champ is stored in
3015    OLOAD_CHAMP.  The return value is 1 if the champ is a good one, 0
3016    if it isn't.  Other arguments are the same as in
3017    find_oload_champ_namespace.  */
3018
3019 static int
3020 find_oload_champ_namespace_loop (gdb::array_view<value *> args,
3021                                  const char *func_name,
3022                                  const char *qualified_name,
3023                                  int namespace_len,
3024                                  std::vector<symbol *> *oload_syms,
3025                                  badness_vector *oload_champ_bv,
3026                                  int *oload_champ,
3027                                  const int no_adl)
3028 {
3029   int next_namespace_len = namespace_len;
3030   int searched_deeper = 0;
3031   int new_oload_champ;
3032   char *new_namespace;
3033
3034   if (next_namespace_len != 0)
3035     {
3036       gdb_assert (qualified_name[next_namespace_len] == ':');
3037       next_namespace_len +=  2;
3038     }
3039   next_namespace_len +=
3040     cp_find_first_component (qualified_name + next_namespace_len);
3041
3042   /* First, see if we have a deeper namespace we can search in.
3043      If we get a good match there, use it.  */
3044
3045   if (qualified_name[next_namespace_len] == ':')
3046     {
3047       searched_deeper = 1;
3048
3049       if (find_oload_champ_namespace_loop (args,
3050                                            func_name, qualified_name,
3051                                            next_namespace_len,
3052                                            oload_syms, oload_champ_bv,
3053                                            oload_champ, no_adl))
3054         {
3055           return 1;
3056         }
3057     };
3058
3059   /* If we reach here, either we're in the deepest namespace or we
3060      didn't find a good match in a deeper namespace.  But, in the
3061      latter case, we still have a bad match in a deeper namespace;
3062      note that we might not find any match at all in the current
3063      namespace.  (There's always a match in the deepest namespace,
3064      because this overload mechanism only gets called if there's a
3065      function symbol to start off with.)  */
3066
3067   new_namespace = (char *) alloca (namespace_len + 1);
3068   strncpy (new_namespace, qualified_name, namespace_len);
3069   new_namespace[namespace_len] = '\0';
3070
3071   std::vector<symbol *> new_oload_syms
3072     = make_symbol_overload_list (func_name, new_namespace);
3073
3074   /* If we have reached the deepest level perform argument
3075      determined lookup.  */
3076   if (!searched_deeper && !no_adl)
3077     {
3078       int ix;
3079       struct type **arg_types;
3080
3081       /* Prepare list of argument types for overload resolution.  */
3082       arg_types = (struct type **)
3083         alloca (args.size () * (sizeof (struct type *)));
3084       for (ix = 0; ix < args.size (); ix++)
3085         arg_types[ix] = value_type (args[ix]);
3086       add_symbol_overload_list_adl ({arg_types, args.size ()}, func_name,
3087                                     &new_oload_syms);
3088     }
3089
3090   badness_vector new_oload_champ_bv;
3091   new_oload_champ = find_oload_champ (args,
3092                                       new_oload_syms.size (),
3093                                       NULL, NULL, new_oload_syms.data (),
3094                                       &new_oload_champ_bv);
3095
3096   /* Case 1: We found a good match.  Free earlier matches (if any),
3097      and return it.  Case 2: We didn't find a good match, but we're
3098      not the deepest function.  Then go with the bad match that the
3099      deeper function found.  Case 3: We found a bad match, and we're
3100      the deepest function.  Then return what we found, even though
3101      it's a bad match.  */
3102
3103   if (new_oload_champ != -1
3104       && classify_oload_match (new_oload_champ_bv, args.size (), 0) == STANDARD)
3105     {
3106       *oload_syms = std::move (new_oload_syms);
3107       *oload_champ = new_oload_champ;
3108       *oload_champ_bv = std::move (new_oload_champ_bv);
3109       return 1;
3110     }
3111   else if (searched_deeper)
3112     {
3113       return 0;
3114     }
3115   else
3116     {
3117       *oload_syms = std::move (new_oload_syms);
3118       *oload_champ = new_oload_champ;
3119       *oload_champ_bv = std::move (new_oload_champ_bv);
3120       return 0;
3121     }
3122 }
3123
3124 /* Look for a function to take ARGS.  Find the best match from among
3125    the overloaded methods or functions given by METHODS or FUNCTIONS
3126    or XMETHODS, respectively.  One, and only one of METHODS, FUNCTIONS
3127    and XMETHODS can be non-NULL.
3128
3129    NUM_FNS is the length of the array pointed at by METHODS, FUNCTIONS
3130    or XMETHODS, whichever is non-NULL.
3131
3132    Return the index of the best match; store an indication of the
3133    quality of the match in OLOAD_CHAMP_BV.  */
3134
3135 static int
3136 find_oload_champ (gdb::array_view<value *> args,
3137                   size_t num_fns,
3138                   fn_field *methods,
3139                   xmethod_worker_up *xmethods,
3140                   symbol **functions,
3141                   badness_vector *oload_champ_bv)
3142 {
3143   /* A measure of how good an overloaded instance is.  */
3144   badness_vector bv;
3145   /* Index of best overloaded function.  */
3146   int oload_champ = -1;
3147   /* Current ambiguity state for overload resolution.  */
3148   int oload_ambiguous = 0;
3149   /* 0 => no ambiguity, 1 => two good funcs, 2 => incomparable funcs.  */
3150
3151   /* A champion can be found among methods alone, or among functions
3152      alone, or in xmethods alone, but not in more than one of these
3153      groups.  */
3154   gdb_assert ((methods != NULL) + (functions != NULL) + (xmethods != NULL)
3155               == 1);
3156
3157   /* Consider each candidate in turn.  */
3158   for (size_t ix = 0; ix < num_fns; ix++)
3159     {
3160       int jj;
3161       int static_offset = 0;
3162       std::vector<type *> parm_types;
3163
3164       if (xmethods != NULL)
3165         parm_types = xmethods[ix]->get_arg_types ();
3166       else
3167         {
3168           size_t nparms;
3169
3170           if (methods != NULL)
3171             {
3172               nparms = TYPE_FN_FIELD_TYPE (methods, ix)->num_fields ();
3173               static_offset = oload_method_static_p (methods, ix);
3174             }
3175           else
3176             nparms = SYMBOL_TYPE (functions[ix])->num_fields ();
3177
3178           parm_types.reserve (nparms);
3179           for (jj = 0; jj < nparms; jj++)
3180             {
3181               type *t = (methods != NULL
3182                          ? (TYPE_FN_FIELD_ARGS (methods, ix)[jj].type ())
3183                          : SYMBOL_TYPE (functions[ix])->field (jj).type ());
3184               parm_types.push_back (t);
3185             }
3186         }
3187
3188       /* Compare parameter types to supplied argument types.  Skip
3189          THIS for static methods.  */
3190       bv = rank_function (parm_types,
3191                           args.slice (static_offset));
3192
3193       if (overload_debug)
3194         {
3195           if (methods != NULL)
3196             fprintf_filtered (gdb_stderr,
3197                               "Overloaded method instance %s, # of parms %d\n",
3198                               methods[ix].physname, (int) parm_types.size ());
3199           else if (xmethods != NULL)
3200             fprintf_filtered (gdb_stderr,
3201                               "Xmethod worker, # of parms %d\n",
3202                               (int) parm_types.size ());
3203           else
3204             fprintf_filtered (gdb_stderr,
3205                               "Overloaded function instance "
3206                               "%s # of parms %d\n",
3207                               functions[ix]->demangled_name (),
3208                               (int) parm_types.size ());
3209
3210           fprintf_filtered (gdb_stderr,
3211                             "...Badness of length : {%d, %d}\n",
3212                             bv[0].rank, bv[0].subrank);
3213
3214           for (jj = 1; jj < bv.size (); jj++)
3215             fprintf_filtered (gdb_stderr,
3216                               "...Badness of arg %d : {%d, %d}\n",
3217                               jj, bv[jj].rank, bv[jj].subrank);
3218         }
3219
3220       if (oload_champ_bv->empty ())
3221         {
3222           *oload_champ_bv = std::move (bv);
3223           oload_champ = 0;
3224         }
3225       else /* See whether current candidate is better or worse than
3226               previous best.  */
3227         switch (compare_badness (bv, *oload_champ_bv))
3228           {
3229           case 0:               /* Top two contenders are equally good.  */
3230             oload_ambiguous = 1;
3231             break;
3232           case 1:               /* Incomparable top contenders.  */
3233             oload_ambiguous = 2;
3234             break;
3235           case 2:               /* New champion, record details.  */
3236             *oload_champ_bv = std::move (bv);
3237             oload_ambiguous = 0;
3238             oload_champ = ix;
3239             break;
3240           case 3:
3241           default:
3242             break;
3243           }
3244       if (overload_debug)
3245         fprintf_filtered (gdb_stderr, "Overload resolution "
3246                           "champion is %d, ambiguous? %d\n",
3247                           oload_champ, oload_ambiguous);
3248     }
3249
3250   return oload_champ;
3251 }
3252
3253 /* Return 1 if we're looking at a static method, 0 if we're looking at
3254    a non-static method or a function that isn't a method.  */
3255
3256 static int
3257 oload_method_static_p (struct fn_field *fns_ptr, int index)
3258 {
3259   if (fns_ptr && index >= 0 && TYPE_FN_FIELD_STATIC_P (fns_ptr, index))
3260     return 1;
3261   else
3262     return 0;
3263 }
3264
3265 /* Check how good an overload match OLOAD_CHAMP_BV represents.  */
3266
3267 static enum oload_classification
3268 classify_oload_match (const badness_vector &oload_champ_bv,
3269                       int nargs,
3270                       int static_offset)
3271 {
3272   int ix;
3273   enum oload_classification worst = STANDARD;
3274
3275   for (ix = 1; ix <= nargs - static_offset; ix++)
3276     {
3277       /* If this conversion is as bad as INCOMPATIBLE_TYPE_BADNESS
3278          or worse return INCOMPATIBLE.  */
3279       if (compare_ranks (oload_champ_bv[ix],
3280                          INCOMPATIBLE_TYPE_BADNESS) <= 0)
3281         return INCOMPATIBLE;    /* Truly mismatched types.  */
3282       /* Otherwise If this conversion is as bad as
3283          NS_POINTER_CONVERSION_BADNESS or worse return NON_STANDARD.  */
3284       else if (compare_ranks (oload_champ_bv[ix],
3285                               NS_POINTER_CONVERSION_BADNESS) <= 0)
3286         worst = NON_STANDARD;   /* Non-standard type conversions
3287                                    needed.  */
3288     }
3289
3290   /* If no INCOMPATIBLE classification was found, return the worst one
3291      that was found (if any).  */
3292   return worst;
3293 }
3294
3295 /* C++: return 1 is NAME is a legitimate name for the destructor of
3296    type TYPE.  If TYPE does not have a destructor, or if NAME is
3297    inappropriate for TYPE, an error is signaled.  Parameter TYPE should not yet
3298    have CHECK_TYPEDEF applied, this function will apply it itself.  */
3299
3300 int
3301 destructor_name_p (const char *name, struct type *type)
3302 {
3303   if (name[0] == '~')
3304     {
3305       const char *dname = type_name_or_error (type);
3306       const char *cp = strchr (dname, '<');
3307       unsigned int len;
3308
3309       /* Do not compare the template part for template classes.  */
3310       if (cp == NULL)
3311         len = strlen (dname);
3312       else
3313         len = cp - dname;
3314       if (strlen (name + 1) != len || strncmp (dname, name + 1, len) != 0)
3315         error (_("name of destructor must equal name of class"));
3316       else
3317         return 1;
3318     }
3319   return 0;
3320 }
3321
3322 /* Find an enum constant named NAME in TYPE.  TYPE must be an "enum
3323    class".  If the name is found, return a value representing it;
3324    otherwise throw an exception.  */
3325
3326 static struct value *
3327 enum_constant_from_type (struct type *type, const char *name)
3328 {
3329   int i;
3330   int name_len = strlen (name);
3331
3332   gdb_assert (type->code () == TYPE_CODE_ENUM
3333               && type->is_declared_class ());
3334
3335   for (i = TYPE_N_BASECLASSES (type); i < type->num_fields (); ++i)
3336     {
3337       const char *fname = TYPE_FIELD_NAME (type, i);
3338       int len;
3339
3340       if (TYPE_FIELD_LOC_KIND (type, i) != FIELD_LOC_KIND_ENUMVAL
3341           || fname == NULL)
3342         continue;
3343
3344       /* Look for the trailing "::NAME", since enum class constant
3345          names are qualified here.  */
3346       len = strlen (fname);
3347       if (len + 2 >= name_len
3348           && fname[len - name_len - 2] == ':'
3349           && fname[len - name_len - 1] == ':'
3350           && strcmp (&fname[len - name_len], name) == 0)
3351         return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, i));
3352     }
3353
3354   error (_("no constant named \"%s\" in enum \"%s\""),
3355          name, type->name ());
3356 }
3357
3358 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
3359    return the appropriate member (or the address of the member, if
3360    WANT_ADDRESS).  This function is used to resolve user expressions
3361    of the form "DOMAIN::NAME".  For more details on what happens, see
3362    the comment before value_struct_elt_for_reference.  */
3363
3364 struct value *
3365 value_aggregate_elt (struct type *curtype, const char *name,
3366                      struct type *expect_type, int want_address,
3367                      enum noside noside)
3368 {
3369   switch (curtype->code ())
3370     {
3371     case TYPE_CODE_STRUCT:
3372     case TYPE_CODE_UNION:
3373       return value_struct_elt_for_reference (curtype, 0, curtype, 
3374                                              name, expect_type,
3375                                              want_address, noside);
3376     case TYPE_CODE_NAMESPACE:
3377       return value_namespace_elt (curtype, name, 
3378                                   want_address, noside);
3379
3380     case TYPE_CODE_ENUM:
3381       return enum_constant_from_type (curtype, name);
3382
3383     default:
3384       internal_error (__FILE__, __LINE__,
3385                       _("non-aggregate type in value_aggregate_elt"));
3386     }
3387 }
3388
3389 /* Compares the two method/function types T1 and T2 for "equality" 
3390    with respect to the methods' parameters.  If the types of the
3391    two parameter lists are the same, returns 1; 0 otherwise.  This
3392    comparison may ignore any artificial parameters in T1 if
3393    SKIP_ARTIFICIAL is non-zero.  This function will ALWAYS skip
3394    the first artificial parameter in T1, assumed to be a 'this' pointer.
3395
3396    The type T2 is expected to have come from make_params (in eval.c).  */
3397
3398 static int
3399 compare_parameters (struct type *t1, struct type *t2, int skip_artificial)
3400 {
3401   int start = 0;
3402
3403   if (t1->num_fields () > 0 && TYPE_FIELD_ARTIFICIAL (t1, 0))
3404     ++start;
3405
3406   /* If skipping artificial fields, find the first real field
3407      in T1.  */
3408   if (skip_artificial)
3409     {
3410       while (start < t1->num_fields ()
3411              && TYPE_FIELD_ARTIFICIAL (t1, start))
3412         ++start;
3413     }
3414
3415   /* Now compare parameters.  */
3416
3417   /* Special case: a method taking void.  T1 will contain no
3418      non-artificial fields, and T2 will contain TYPE_CODE_VOID.  */
3419   if ((t1->num_fields () - start) == 0 && t2->num_fields () == 1
3420       && t2->field (0).type ()->code () == TYPE_CODE_VOID)
3421     return 1;
3422
3423   if ((t1->num_fields () - start) == t2->num_fields ())
3424     {
3425       int i;
3426
3427       for (i = 0; i < t2->num_fields (); ++i)
3428         {
3429           if (compare_ranks (rank_one_type (t1->field (start + i).type (),
3430                                             t2->field (i).type (), NULL),
3431                              EXACT_MATCH_BADNESS) != 0)
3432             return 0;
3433         }
3434
3435       return 1;
3436     }
3437
3438   return 0;
3439 }
3440
3441 /* C++: Given an aggregate type VT, and a class type CLS, search
3442    recursively for CLS using value V; If found, store the offset
3443    which is either fetched from the virtual base pointer if CLS
3444    is virtual or accumulated offset of its parent classes if
3445    CLS is non-virtual in *BOFFS, set ISVIRT to indicate if CLS
3446    is virtual, and return true.  If not found, return false.  */
3447
3448 static bool
3449 get_baseclass_offset (struct type *vt, struct type *cls,
3450                       struct value *v, int *boffs, bool *isvirt)
3451 {
3452   for (int i = 0; i < TYPE_N_BASECLASSES (vt); i++)
3453     {
3454       struct type *t = vt->field (i).type ();
3455       if (types_equal (t, cls))
3456         {
3457           if (BASETYPE_VIA_VIRTUAL (vt, i))
3458             {
3459               const gdb_byte *adr = value_contents_for_printing (v);
3460               *boffs = baseclass_offset (vt, i, adr, value_offset (v),
3461                                          value_as_long (v), v);
3462               *isvirt = true;
3463             }
3464           else
3465             *isvirt = false;
3466           return true;
3467         }
3468
3469       if (get_baseclass_offset (check_typedef (t), cls, v, boffs, isvirt))
3470         {
3471           if (*isvirt == false) /* Add non-virtual base offset.  */
3472             {
3473               const gdb_byte *adr = value_contents_for_printing (v);
3474               *boffs += baseclass_offset (vt, i, adr, value_offset (v),
3475                                           value_as_long (v), v);
3476             }
3477           return true;
3478         }
3479     }
3480
3481   return false;
3482 }
3483
3484 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
3485    return the address of this member as a "pointer to member" type.
3486    If INTYPE is non-null, then it will be the type of the member we
3487    are looking for.  This will help us resolve "pointers to member
3488    functions".  This function is used to resolve user expressions of
3489    the form "DOMAIN::NAME".  */
3490
3491 static struct value *
3492 value_struct_elt_for_reference (struct type *domain, int offset,
3493                                 struct type *curtype, const char *name,
3494                                 struct type *intype, 
3495                                 int want_address,
3496                                 enum noside noside)
3497 {
3498   struct type *t = check_typedef (curtype);
3499   int i;
3500   struct value *result;
3501
3502   if (t->code () != TYPE_CODE_STRUCT
3503       && t->code () != TYPE_CODE_UNION)
3504     error (_("Internal error: non-aggregate type "
3505              "to value_struct_elt_for_reference"));
3506
3507   for (i = t->num_fields () - 1; i >= TYPE_N_BASECLASSES (t); i--)
3508     {
3509       const char *t_field_name = TYPE_FIELD_NAME (t, i);
3510
3511       if (t_field_name && strcmp (t_field_name, name) == 0)
3512         {
3513           if (field_is_static (&t->field (i)))
3514             {
3515               struct value *v = value_static_field (t, i);
3516               if (want_address)
3517                 v = value_addr (v);
3518               return v;
3519             }
3520           if (TYPE_FIELD_PACKED (t, i))
3521             error (_("pointers to bitfield members not allowed"));
3522
3523           if (want_address)
3524             return value_from_longest
3525               (lookup_memberptr_type (t->field (i).type (), domain),
3526                offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
3527           else if (noside != EVAL_NORMAL)
3528             return allocate_value (t->field (i).type ());
3529           else
3530             {
3531               /* Try to evaluate NAME as a qualified name with implicit
3532                  this pointer.  In this case, attempt to return the
3533                  equivalent to `this->*(&TYPE::NAME)'.  */
3534               struct value *v = value_of_this_silent (current_language);
3535               if (v != NULL)
3536                 {
3537                   struct value *ptr, *this_v = v;
3538                   long mem_offset;
3539                   struct type *type, *tmp;
3540
3541                   ptr = value_aggregate_elt (domain, name, NULL, 1, noside);
3542                   type = check_typedef (value_type (ptr));
3543                   gdb_assert (type != NULL
3544                               && type->code () == TYPE_CODE_MEMBERPTR);
3545                   tmp = lookup_pointer_type (TYPE_SELF_TYPE (type));
3546                   v = value_cast_pointers (tmp, v, 1);
3547                   mem_offset = value_as_long (ptr);
3548                   if (domain != curtype)
3549                     {
3550                       /* Find class offset of type CURTYPE from either its
3551                          parent type DOMAIN or the type of implied this.  */
3552                       int boff = 0;
3553                       bool isvirt = false;
3554                       if (get_baseclass_offset (domain, curtype, v, &boff,
3555                                                 &isvirt))
3556                         mem_offset += boff;
3557                       else
3558                         {
3559                           struct type *p = check_typedef (value_type (this_v));
3560                           p = check_typedef (TYPE_TARGET_TYPE (p));
3561                           if (get_baseclass_offset (p, curtype, this_v,
3562                                                     &boff, &isvirt))
3563                             mem_offset += boff;
3564                         }
3565                     }
3566                   tmp = lookup_pointer_type (TYPE_TARGET_TYPE (type));
3567                   result = value_from_pointer (tmp,
3568                                                value_as_long (v) + mem_offset);
3569                   return value_ind (result);
3570                 }
3571
3572               error (_("Cannot reference non-static field \"%s\""), name);
3573             }
3574         }
3575     }
3576
3577   /* C++: If it was not found as a data field, then try to return it
3578      as a pointer to a method.  */
3579
3580   /* Perform all necessary dereferencing.  */
3581   while (intype && intype->code () == TYPE_CODE_PTR)
3582     intype = TYPE_TARGET_TYPE (intype);
3583
3584   for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
3585     {
3586       const char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
3587
3588       if (t_field_name && strcmp (t_field_name, name) == 0)
3589         {
3590           int j;
3591           int len = TYPE_FN_FIELDLIST_LENGTH (t, i);
3592           struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
3593
3594           check_stub_method_group (t, i);
3595
3596           if (intype)
3597             {
3598               for (j = 0; j < len; ++j)
3599                 {
3600                   if (TYPE_CONST (intype) != TYPE_FN_FIELD_CONST (f, j))
3601                     continue;
3602                   if (TYPE_VOLATILE (intype) != TYPE_FN_FIELD_VOLATILE (f, j))
3603                     continue;
3604
3605                   if (compare_parameters (TYPE_FN_FIELD_TYPE (f, j), intype, 0)
3606                       || compare_parameters (TYPE_FN_FIELD_TYPE (f, j),
3607                                              intype, 1))
3608                     break;
3609                 }
3610
3611               if (j == len)
3612                 error (_("no member function matches "
3613                          "that type instantiation"));
3614             }
3615           else
3616             {
3617               int ii;
3618
3619               j = -1;
3620               for (ii = 0; ii < len; ++ii)
3621                 {
3622                   /* Skip artificial methods.  This is necessary if,
3623                      for example, the user wants to "print
3624                      subclass::subclass" with only one user-defined
3625                      constructor.  There is no ambiguity in this case.
3626                      We are careful here to allow artificial methods
3627                      if they are the unique result.  */
3628                   if (TYPE_FN_FIELD_ARTIFICIAL (f, ii))
3629                     {
3630                       if (j == -1)
3631                         j = ii;
3632                       continue;
3633                     }
3634
3635                   /* Desired method is ambiguous if more than one
3636                      method is defined.  */
3637                   if (j != -1 && !TYPE_FN_FIELD_ARTIFICIAL (f, j))
3638                     error (_("non-unique member `%s' requires "
3639                              "type instantiation"), name);
3640
3641                   j = ii;
3642                 }
3643
3644               if (j == -1)
3645                 error (_("no matching member function"));
3646             }
3647
3648           if (TYPE_FN_FIELD_STATIC_P (f, j))
3649             {
3650               struct symbol *s = 
3651                 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
3652                                0, VAR_DOMAIN, 0).symbol;
3653
3654               if (s == NULL)
3655                 return NULL;
3656
3657               if (want_address)
3658                 return value_addr (read_var_value (s, 0, 0));
3659               else
3660                 return read_var_value (s, 0, 0);
3661             }
3662
3663           if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
3664             {
3665               if (want_address)
3666                 {
3667                   result = allocate_value
3668                     (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
3669                   cplus_make_method_ptr (value_type (result),
3670                                          value_contents_writeable (result),
3671                                          TYPE_FN_FIELD_VOFFSET (f, j), 1);
3672                 }
3673               else if (noside == EVAL_AVOID_SIDE_EFFECTS)
3674                 return allocate_value (TYPE_FN_FIELD_TYPE (f, j));
3675               else
3676                 error (_("Cannot reference virtual member function \"%s\""),
3677                        name);
3678             }
3679           else
3680             {
3681               struct symbol *s = 
3682                 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
3683                                0, VAR_DOMAIN, 0).symbol;
3684
3685               if (s == NULL)
3686                 return NULL;
3687
3688               struct value *v = read_var_value (s, 0, 0);
3689               if (!want_address)
3690                 result = v;
3691               else
3692                 {
3693                   result = allocate_value (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
3694                   cplus_make_method_ptr (value_type (result),
3695                                          value_contents_writeable (result),
3696                                          value_address (v), 0);
3697                 }
3698             }
3699           return result;
3700         }
3701     }
3702   for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
3703     {
3704       struct value *v;
3705       int base_offset;
3706
3707       if (BASETYPE_VIA_VIRTUAL (t, i))
3708         base_offset = 0;
3709       else
3710         base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
3711       v = value_struct_elt_for_reference (domain,
3712                                           offset + base_offset,
3713                                           TYPE_BASECLASS (t, i),
3714                                           name, intype, 
3715                                           want_address, noside);
3716       if (v)
3717         return v;
3718     }
3719
3720   /* As a last chance, pretend that CURTYPE is a namespace, and look
3721      it up that way; this (frequently) works for types nested inside
3722      classes.  */
3723
3724   return value_maybe_namespace_elt (curtype, name, 
3725                                     want_address, noside);
3726 }
3727
3728 /* C++: Return the member NAME of the namespace given by the type
3729    CURTYPE.  */
3730
3731 static struct value *
3732 value_namespace_elt (const struct type *curtype,
3733                      const char *name, int want_address,
3734                      enum noside noside)
3735 {
3736   struct value *retval = value_maybe_namespace_elt (curtype, name,
3737                                                     want_address, 
3738                                                     noside);
3739
3740   if (retval == NULL)
3741     error (_("No symbol \"%s\" in namespace \"%s\"."), 
3742            name, curtype->name ());
3743
3744   return retval;
3745 }
3746
3747 /* A helper function used by value_namespace_elt and
3748    value_struct_elt_for_reference.  It looks up NAME inside the
3749    context CURTYPE; this works if CURTYPE is a namespace or if CURTYPE
3750    is a class and NAME refers to a type in CURTYPE itself (as opposed
3751    to, say, some base class of CURTYPE).  */
3752
3753 static struct value *
3754 value_maybe_namespace_elt (const struct type *curtype,
3755                            const char *name, int want_address,
3756                            enum noside noside)
3757 {
3758   const char *namespace_name = curtype->name ();
3759   struct block_symbol sym;
3760   struct value *result;
3761
3762   sym = cp_lookup_symbol_namespace (namespace_name, name,
3763                                     get_selected_block (0), VAR_DOMAIN);
3764
3765   if (sym.symbol == NULL)
3766     return NULL;
3767   else if ((noside == EVAL_AVOID_SIDE_EFFECTS)
3768            && (SYMBOL_CLASS (sym.symbol) == LOC_TYPEDEF))
3769     result = allocate_value (SYMBOL_TYPE (sym.symbol));
3770   else
3771     result = value_of_variable (sym.symbol, sym.block);
3772
3773   if (want_address)
3774     result = value_addr (result);
3775
3776   return result;
3777 }
3778
3779 /* Given a pointer or a reference value V, find its real (RTTI) type.
3780
3781    Other parameters FULL, TOP, USING_ENC as with value_rtti_type()
3782    and refer to the values computed for the object pointed to.  */
3783
3784 struct type *
3785 value_rtti_indirect_type (struct value *v, int *full, 
3786                           LONGEST *top, int *using_enc)
3787 {
3788   struct value *target = NULL;
3789   struct type *type, *real_type, *target_type;
3790
3791   type = value_type (v);
3792   type = check_typedef (type);
3793   if (TYPE_IS_REFERENCE (type))
3794     target = coerce_ref (v);
3795   else if (type->code () == TYPE_CODE_PTR)
3796     {
3797
3798       try
3799         {
3800           target = value_ind (v);
3801         }
3802       catch (const gdb_exception_error &except)
3803         {
3804           if (except.error == MEMORY_ERROR)
3805             {
3806               /* value_ind threw a memory error. The pointer is NULL or
3807                  contains an uninitialized value: we can't determine any
3808                  type.  */
3809               return NULL;
3810             }
3811           throw;
3812         }
3813     }
3814   else
3815     return NULL;
3816
3817   real_type = value_rtti_type (target, full, top, using_enc);
3818
3819   if (real_type)
3820     {
3821       /* Copy qualifiers to the referenced object.  */
3822       target_type = value_type (target);
3823       real_type = make_cv_type (TYPE_CONST (target_type),
3824                                 TYPE_VOLATILE (target_type), real_type, NULL);
3825       if (TYPE_IS_REFERENCE (type))
3826         real_type = lookup_reference_type (real_type, type->code ());
3827       else if (type->code () == TYPE_CODE_PTR)
3828         real_type = lookup_pointer_type (real_type);
3829       else
3830         internal_error (__FILE__, __LINE__, _("Unexpected value type."));
3831
3832       /* Copy qualifiers to the pointer/reference.  */
3833       real_type = make_cv_type (TYPE_CONST (type), TYPE_VOLATILE (type),
3834                                 real_type, NULL);
3835     }
3836
3837   return real_type;
3838 }
3839
3840 /* Given a value pointed to by ARGP, check its real run-time type, and
3841    if that is different from the enclosing type, create a new value
3842    using the real run-time type as the enclosing type (and of the same
3843    type as ARGP) and return it, with the embedded offset adjusted to
3844    be the correct offset to the enclosed object.  RTYPE is the type,
3845    and XFULL, XTOP, and XUSING_ENC are the other parameters, computed
3846    by value_rtti_type().  If these are available, they can be supplied
3847    and a second call to value_rtti_type() is avoided.  (Pass RTYPE ==
3848    NULL if they're not available.  */
3849
3850 struct value *
3851 value_full_object (struct value *argp, 
3852                    struct type *rtype, 
3853                    int xfull, int xtop,
3854                    int xusing_enc)
3855 {
3856   struct type *real_type;
3857   int full = 0;
3858   LONGEST top = -1;
3859   int using_enc = 0;
3860   struct value *new_val;
3861
3862   if (rtype)
3863     {
3864       real_type = rtype;
3865       full = xfull;
3866       top = xtop;
3867       using_enc = xusing_enc;
3868     }
3869   else
3870     real_type = value_rtti_type (argp, &full, &top, &using_enc);
3871
3872   /* If no RTTI data, or if object is already complete, do nothing.  */
3873   if (!real_type || real_type == value_enclosing_type (argp))
3874     return argp;
3875
3876   /* In a destructor we might see a real type that is a superclass of
3877      the object's type.  In this case it is better to leave the object
3878      as-is.  */
3879   if (full
3880       && TYPE_LENGTH (real_type) < TYPE_LENGTH (value_enclosing_type (argp)))
3881     return argp;
3882
3883   /* If we have the full object, but for some reason the enclosing
3884      type is wrong, set it.  */
3885   /* pai: FIXME -- sounds iffy */
3886   if (full)
3887     {
3888       argp = value_copy (argp);
3889       set_value_enclosing_type (argp, real_type);
3890       return argp;
3891     }
3892
3893   /* Check if object is in memory.  */
3894   if (VALUE_LVAL (argp) != lval_memory)
3895     {
3896       warning (_("Couldn't retrieve complete object of RTTI "
3897                  "type %s; object may be in register(s)."), 
3898                real_type->name ());
3899
3900       return argp;
3901     }
3902
3903   /* All other cases -- retrieve the complete object.  */
3904   /* Go back by the computed top_offset from the beginning of the
3905      object, adjusting for the embedded offset of argp if that's what
3906      value_rtti_type used for its computation.  */
3907   new_val = value_at_lazy (real_type, value_address (argp) - top +
3908                            (using_enc ? 0 : value_embedded_offset (argp)));
3909   deprecated_set_value_type (new_val, value_type (argp));
3910   set_value_embedded_offset (new_val, (using_enc
3911                                        ? top + value_embedded_offset (argp)
3912                                        : top));
3913   return new_val;
3914 }
3915
3916
3917 /* Return the value of the local variable, if one exists.  Throw error
3918    otherwise, such as if the request is made in an inappropriate context.  */
3919
3920 struct value *
3921 value_of_this (const struct language_defn *lang)
3922 {
3923   struct block_symbol sym;
3924   const struct block *b;
3925   struct frame_info *frame;
3926
3927   if (lang->name_of_this () == NULL)
3928     error (_("no `this' in current language"));
3929
3930   frame = get_selected_frame (_("no frame selected"));
3931
3932   b = get_frame_block (frame, NULL);
3933
3934   sym = lookup_language_this (lang, b);
3935   if (sym.symbol == NULL)
3936     error (_("current stack frame does not contain a variable named `%s'"),
3937            lang->name_of_this ());
3938
3939   return read_var_value (sym.symbol, sym.block, frame);
3940 }
3941
3942 /* Return the value of the local variable, if one exists.  Return NULL
3943    otherwise.  Never throw error.  */
3944
3945 struct value *
3946 value_of_this_silent (const struct language_defn *lang)
3947 {
3948   struct value *ret = NULL;
3949
3950   try
3951     {
3952       ret = value_of_this (lang);
3953     }
3954   catch (const gdb_exception_error &except)
3955     {
3956     }
3957
3958   return ret;
3959 }
3960
3961 /* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH
3962    elements long, starting at LOWBOUND.  The result has the same lower
3963    bound as the original ARRAY.  */
3964
3965 struct value *
3966 value_slice (struct value *array, int lowbound, int length)
3967 {
3968   struct type *slice_range_type, *slice_type, *range_type;
3969   LONGEST lowerbound, upperbound;
3970   struct value *slice;
3971   struct type *array_type;
3972
3973   array_type = check_typedef (value_type (array));
3974   if (array_type->code () != TYPE_CODE_ARRAY
3975       && array_type->code () != TYPE_CODE_STRING)
3976     error (_("cannot take slice of non-array"));
3977
3978   if (type_not_allocated (array_type))
3979     error (_("array not allocated"));
3980   if (type_not_associated (array_type))
3981     error (_("array not associated"));
3982
3983   range_type = array_type->index_type ();
3984   if (!get_discrete_bounds (range_type, &lowerbound, &upperbound))
3985     error (_("slice from bad array or bitstring"));
3986
3987   if (lowbound < lowerbound || length < 0
3988       || lowbound + length - 1 > upperbound)
3989     error (_("slice out of range"));
3990
3991   /* FIXME-type-allocation: need a way to free this type when we are
3992      done with it.  */
3993   slice_range_type = create_static_range_type (NULL,
3994                                                TYPE_TARGET_TYPE (range_type),
3995                                                lowbound,
3996                                                lowbound + length - 1);
3997
3998   {
3999     struct type *element_type = TYPE_TARGET_TYPE (array_type);
4000     LONGEST offset
4001       = (lowbound - lowerbound) * TYPE_LENGTH (check_typedef (element_type));
4002
4003     slice_type = create_array_type (NULL,
4004                                     element_type,
4005                                     slice_range_type);
4006     slice_type->set_code (array_type->code ());
4007
4008     if (VALUE_LVAL (array) == lval_memory && value_lazy (array))
4009       slice = allocate_value_lazy (slice_type);
4010     else
4011       {
4012         slice = allocate_value (slice_type);
4013         value_contents_copy (slice, 0, array, offset,
4014                              type_length_units (slice_type));
4015       }
4016
4017     set_value_component_location (slice, array);
4018     set_value_offset (slice, value_offset (array) + offset);
4019   }
4020
4021   return slice;
4022 }
4023
4024 /* See value.h.  */
4025
4026 struct value *
4027 value_literal_complex (struct value *arg1,
4028                        struct value *arg2,
4029                        struct type *type)
4030 {
4031   struct value *val;
4032   struct type *real_type = TYPE_TARGET_TYPE (type);
4033
4034   val = allocate_value (type);
4035   arg1 = value_cast (real_type, arg1);
4036   arg2 = value_cast (real_type, arg2);
4037
4038   memcpy (value_contents_raw (val),
4039           value_contents (arg1), TYPE_LENGTH (real_type));
4040   memcpy (value_contents_raw (val) + TYPE_LENGTH (real_type),
4041           value_contents (arg2), TYPE_LENGTH (real_type));
4042   return val;
4043 }
4044
4045 /* See value.h.  */
4046
4047 struct value *
4048 value_real_part (struct value *value)
4049 {
4050   struct type *type = check_typedef (value_type (value));
4051   struct type *ttype = TYPE_TARGET_TYPE (type);
4052
4053   gdb_assert (type->code () == TYPE_CODE_COMPLEX);
4054   return value_from_component (value, ttype, 0);
4055 }
4056
4057 /* See value.h.  */
4058
4059 struct value *
4060 value_imaginary_part (struct value *value)
4061 {
4062   struct type *type = check_typedef (value_type (value));
4063   struct type *ttype = TYPE_TARGET_TYPE (type);
4064
4065   gdb_assert (type->code () == TYPE_CODE_COMPLEX);
4066   return value_from_component (value, ttype,
4067                                TYPE_LENGTH (check_typedef (ttype)));
4068 }
4069
4070 /* Cast a value into the appropriate complex data type.  */
4071
4072 static struct value *
4073 cast_into_complex (struct type *type, struct value *val)
4074 {
4075   struct type *real_type = TYPE_TARGET_TYPE (type);
4076
4077   if (value_type (val)->code () == TYPE_CODE_COMPLEX)
4078     {
4079       struct type *val_real_type = TYPE_TARGET_TYPE (value_type (val));
4080       struct value *re_val = allocate_value (val_real_type);
4081       struct value *im_val = allocate_value (val_real_type);
4082
4083       memcpy (value_contents_raw (re_val),
4084               value_contents (val), TYPE_LENGTH (val_real_type));
4085       memcpy (value_contents_raw (im_val),
4086               value_contents (val) + TYPE_LENGTH (val_real_type),
4087               TYPE_LENGTH (val_real_type));
4088
4089       return value_literal_complex (re_val, im_val, type);
4090     }
4091   else if (value_type (val)->code () == TYPE_CODE_FLT
4092            || value_type (val)->code () == TYPE_CODE_INT)
4093     return value_literal_complex (val, 
4094                                   value_zero (real_type, not_lval), 
4095                                   type);
4096   else
4097     error (_("cannot cast non-number to complex"));
4098 }
4099
4100 void _initialize_valops ();
4101 void
4102 _initialize_valops ()
4103 {
4104   add_setshow_boolean_cmd ("overload-resolution", class_support,
4105                            &overload_resolution, _("\
4106 Set overload resolution in evaluating C++ functions."), _("\
4107 Show overload resolution in evaluating C++ functions."), 
4108                            NULL, NULL,
4109                            show_overload_resolution,
4110                            &setlist, &showlist);
4111   overload_resolution = 1;
4112 }
This page took 0.255361 seconds and 4 git commands to generate.