]> Git Repo - binutils.git/blob - gdb/valops.c
gdb: remove TYPE_FIELD_NAME and FIELD_NAME macros
[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 (bool staticp, bool varargs, int nargs,
48                     struct field t1[], const gdb::array_view<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                                            gdb::optional<gdb::array_view<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 register value is in.  The value
1201            holds the frame_id for the next frame, that is the frame this
1202            register value was unwound from.
1203
1204            Below we will call put_frame_register_bytes which requires that
1205            we pass it the actual frame in which the register value is
1206            valid, i.e. not the next frame.  */
1207         frame = frame_find_by_id (VALUE_NEXT_FRAME_ID (toval));
1208         frame = get_prev_frame_always (frame);
1209
1210         value_reg = VALUE_REGNUM (toval);
1211
1212         if (!frame)
1213           error (_("Value being assigned to is no longer active."));
1214
1215         gdbarch = get_frame_arch (frame);
1216
1217         if (value_bitsize (toval))
1218           {
1219             struct value *parent = value_parent (toval);
1220             LONGEST offset = value_offset (parent) + value_offset (toval);
1221             size_t changed_len;
1222             gdb_byte buffer[sizeof (LONGEST)];
1223             int optim, unavail;
1224
1225             changed_len = (value_bitpos (toval)
1226                            + value_bitsize (toval)
1227                            + HOST_CHAR_BIT - 1)
1228                           / HOST_CHAR_BIT;
1229
1230             if (changed_len > sizeof (LONGEST))
1231               error (_("Can't handle bitfields which "
1232                        "don't fit in a %d bit word."),
1233                      (int) sizeof (LONGEST) * HOST_CHAR_BIT);
1234
1235             if (!get_frame_register_bytes (frame, value_reg, offset,
1236                                            {buffer, changed_len},
1237                                            &optim, &unavail))
1238               {
1239                 if (optim)
1240                   throw_error (OPTIMIZED_OUT_ERROR,
1241                                _("value has been optimized out"));
1242                 if (unavail)
1243                   throw_error (NOT_AVAILABLE_ERROR,
1244                                _("value is not available"));
1245               }
1246
1247             modify_field (type, buffer, value_as_long (fromval),
1248                           value_bitpos (toval), value_bitsize (toval));
1249
1250             put_frame_register_bytes (frame, value_reg, offset,
1251                                       {buffer, changed_len});
1252           }
1253         else
1254           {
1255             if (gdbarch_convert_register_p (gdbarch, VALUE_REGNUM (toval),
1256                                             type))
1257               {
1258                 /* If TOVAL is a special machine register requiring
1259                    conversion of program values to a special raw
1260                    format.  */
1261                 gdbarch_value_to_register (gdbarch, frame,
1262                                            VALUE_REGNUM (toval), type,
1263                                            value_contents (fromval));
1264               }
1265             else
1266               {
1267                 gdb::array_view<const gdb_byte> contents
1268                   = gdb::make_array_view (value_contents (fromval),
1269                                           TYPE_LENGTH (type));
1270                 put_frame_register_bytes (frame, value_reg,
1271                                           value_offset (toval),
1272                                           contents);
1273               }
1274           }
1275
1276         gdb::observers::register_changed.notify (frame, value_reg);
1277         break;
1278       }
1279
1280     case lval_computed:
1281       {
1282         const struct lval_funcs *funcs = value_computed_funcs (toval);
1283
1284         if (funcs->write != NULL)
1285           {
1286             funcs->write (toval, fromval);
1287             break;
1288           }
1289       }
1290       /* Fall through.  */
1291
1292     default:
1293       error (_("Left operand of assignment is not an lvalue."));
1294     }
1295
1296   /* Assigning to the stack pointer, frame pointer, and other
1297      (architecture and calling convention specific) registers may
1298      cause the frame cache and regcache to be out of date.  Assigning to memory
1299      also can.  We just do this on all assignments to registers or
1300      memory, for simplicity's sake; I doubt the slowdown matters.  */
1301   switch (VALUE_LVAL (toval))
1302     {
1303     case lval_memory:
1304     case lval_register:
1305     case lval_computed:
1306
1307       gdb::observers::target_changed.notify
1308         (current_inferior ()->top_target ());
1309
1310       /* Having destroyed the frame cache, restore the selected
1311          frame.  */
1312
1313       /* FIXME: cagney/2002-11-02: There has to be a better way of
1314          doing this.  Instead of constantly saving/restoring the
1315          frame.  Why not create a get_selected_frame() function that,
1316          having saved the selected frame's ID can automatically
1317          re-find the previously selected frame automatically.  */
1318
1319       {
1320         struct frame_info *fi = frame_find_by_id (old_frame);
1321
1322         if (fi != NULL)
1323           select_frame (fi);
1324       }
1325
1326       break;
1327     default:
1328       break;
1329     }
1330   
1331   /* If the field does not entirely fill a LONGEST, then zero the sign
1332      bits.  If the field is signed, and is negative, then sign
1333      extend.  */
1334   if ((value_bitsize (toval) > 0)
1335       && (value_bitsize (toval) < 8 * (int) sizeof (LONGEST)))
1336     {
1337       LONGEST fieldval = value_as_long (fromval);
1338       LONGEST valmask = (((ULONGEST) 1) << value_bitsize (toval)) - 1;
1339
1340       fieldval &= valmask;
1341       if (!type->is_unsigned () 
1342           && (fieldval & (valmask ^ (valmask >> 1))))
1343         fieldval |= ~valmask;
1344
1345       fromval = value_from_longest (type, fieldval);
1346     }
1347
1348   /* The return value is a copy of TOVAL so it shares its location
1349      information, but its contents are updated from FROMVAL.  This
1350      implies the returned value is not lazy, even if TOVAL was.  */
1351   val = value_copy (toval);
1352   set_value_lazy (val, 0);
1353   memcpy (value_contents_raw (val), value_contents (fromval),
1354           TYPE_LENGTH (type));
1355
1356   /* We copy over the enclosing type and pointed-to offset from FROMVAL
1357      in the case of pointer types.  For object types, the enclosing type
1358      and embedded offset must *not* be copied: the target object refered
1359      to by TOVAL retains its original dynamic type after assignment.  */
1360   if (type->code () == TYPE_CODE_PTR)
1361     {
1362       set_value_enclosing_type (val, value_enclosing_type (fromval));
1363       set_value_pointed_to_offset (val, value_pointed_to_offset (fromval));
1364     }
1365
1366   return val;
1367 }
1368
1369 /* Extend a value ARG1 to COUNT repetitions of its type.  */
1370
1371 struct value *
1372 value_repeat (struct value *arg1, int count)
1373 {
1374   struct value *val;
1375
1376   if (VALUE_LVAL (arg1) != lval_memory)
1377     error (_("Only values in memory can be extended with '@'."));
1378   if (count < 1)
1379     error (_("Invalid number %d of repetitions."), count);
1380
1381   val = allocate_repeat_value (value_enclosing_type (arg1), count);
1382
1383   VALUE_LVAL (val) = lval_memory;
1384   set_value_address (val, value_address (arg1));
1385
1386   read_value_memory (val, 0, value_stack (val), value_address (val),
1387                      value_contents_all_raw (val),
1388                      type_length_units (value_enclosing_type (val)));
1389
1390   return val;
1391 }
1392
1393 struct value *
1394 value_of_variable (struct symbol *var, const struct block *b)
1395 {
1396   struct frame_info *frame = NULL;
1397
1398   if (symbol_read_needs_frame (var))
1399     frame = get_selected_frame (_("No frame selected."));
1400
1401   return read_var_value (var, b, frame);
1402 }
1403
1404 struct value *
1405 address_of_variable (struct symbol *var, const struct block *b)
1406 {
1407   struct type *type = SYMBOL_TYPE (var);
1408   struct value *val;
1409
1410   /* Evaluate it first; if the result is a memory address, we're fine.
1411      Lazy evaluation pays off here.  */
1412
1413   val = value_of_variable (var, b);
1414   type = value_type (val);
1415
1416   if ((VALUE_LVAL (val) == lval_memory && value_lazy (val))
1417       || type->code () == TYPE_CODE_FUNC)
1418     {
1419       CORE_ADDR addr = value_address (val);
1420
1421       return value_from_pointer (lookup_pointer_type (type), addr);
1422     }
1423
1424   /* Not a memory address; check what the problem was.  */
1425   switch (VALUE_LVAL (val))
1426     {
1427     case lval_register:
1428       {
1429         struct frame_info *frame;
1430         const char *regname;
1431
1432         frame = frame_find_by_id (VALUE_NEXT_FRAME_ID (val));
1433         gdb_assert (frame);
1434
1435         regname = gdbarch_register_name (get_frame_arch (frame),
1436                                          VALUE_REGNUM (val));
1437         gdb_assert (regname && *regname);
1438
1439         error (_("Address requested for identifier "
1440                  "\"%s\" which is in register $%s"),
1441                var->print_name (), regname);
1442         break;
1443       }
1444
1445     default:
1446       error (_("Can't take address of \"%s\" which isn't an lvalue."),
1447              var->print_name ());
1448       break;
1449     }
1450
1451   return val;
1452 }
1453
1454 /* See value.h.  */
1455
1456 bool
1457 value_must_coerce_to_target (struct value *val)
1458 {
1459   struct type *valtype;
1460
1461   /* The only lval kinds which do not live in target memory.  */
1462   if (VALUE_LVAL (val) != not_lval
1463       && VALUE_LVAL (val) != lval_internalvar
1464       && VALUE_LVAL (val) != lval_xcallable)
1465     return false;
1466
1467   valtype = check_typedef (value_type (val));
1468
1469   switch (valtype->code ())
1470     {
1471     case TYPE_CODE_ARRAY:
1472       return valtype->is_vector () ? 0 : 1;
1473     case TYPE_CODE_STRING:
1474       return true;
1475     default:
1476       return false;
1477     }
1478 }
1479
1480 /* Make sure that VAL lives in target memory if it's supposed to.  For
1481    instance, strings are constructed as character arrays in GDB's
1482    storage, and this function copies them to the target.  */
1483
1484 struct value *
1485 value_coerce_to_target (struct value *val)
1486 {
1487   LONGEST length;
1488   CORE_ADDR addr;
1489
1490   if (!value_must_coerce_to_target (val))
1491     return val;
1492
1493   length = TYPE_LENGTH (check_typedef (value_type (val)));
1494   addr = allocate_space_in_inferior (length);
1495   write_memory (addr, value_contents (val), length);
1496   return value_at_lazy (value_type (val), addr);
1497 }
1498
1499 /* Given a value which is an array, return a value which is a pointer
1500    to its first element, regardless of whether or not the array has a
1501    nonzero lower bound.
1502
1503    FIXME: A previous comment here indicated that this routine should
1504    be substracting the array's lower bound.  It's not clear to me that
1505    this is correct.  Given an array subscripting operation, it would
1506    certainly work to do the adjustment here, essentially computing:
1507
1508    (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
1509
1510    However I believe a more appropriate and logical place to account
1511    for the lower bound is to do so in value_subscript, essentially
1512    computing:
1513
1514    (&array[0] + ((index - lowerbound) * sizeof array[0]))
1515
1516    As further evidence consider what would happen with operations
1517    other than array subscripting, where the caller would get back a
1518    value that had an address somewhere before the actual first element
1519    of the array, and the information about the lower bound would be
1520    lost because of the coercion to pointer type.  */
1521
1522 struct value *
1523 value_coerce_array (struct value *arg1)
1524 {
1525   struct type *type = check_typedef (value_type (arg1));
1526
1527   /* If the user tries to do something requiring a pointer with an
1528      array that has not yet been pushed to the target, then this would
1529      be a good time to do so.  */
1530   arg1 = value_coerce_to_target (arg1);
1531
1532   if (VALUE_LVAL (arg1) != lval_memory)
1533     error (_("Attempt to take address of value not located in memory."));
1534
1535   return value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
1536                              value_address (arg1));
1537 }
1538
1539 /* Given a value which is a function, return a value which is a pointer
1540    to it.  */
1541
1542 struct value *
1543 value_coerce_function (struct value *arg1)
1544 {
1545   struct value *retval;
1546
1547   if (VALUE_LVAL (arg1) != lval_memory)
1548     error (_("Attempt to take address of value not located in memory."));
1549
1550   retval = value_from_pointer (lookup_pointer_type (value_type (arg1)),
1551                                value_address (arg1));
1552   return retval;
1553 }
1554
1555 /* Return a pointer value for the object for which ARG1 is the
1556    contents.  */
1557
1558 struct value *
1559 value_addr (struct value *arg1)
1560 {
1561   struct value *arg2;
1562   struct type *type = check_typedef (value_type (arg1));
1563
1564   if (TYPE_IS_REFERENCE (type))
1565     {
1566       if (value_bits_synthetic_pointer (arg1, value_embedded_offset (arg1),
1567           TARGET_CHAR_BIT * TYPE_LENGTH (type)))
1568         arg1 = coerce_ref (arg1);
1569       else
1570         {
1571           /* Copy the value, but change the type from (T&) to (T*).  We
1572              keep the same location information, which is efficient, and
1573              allows &(&X) to get the location containing the reference.
1574              Do the same to its enclosing type for consistency.  */
1575           struct type *type_ptr
1576             = lookup_pointer_type (TYPE_TARGET_TYPE (type));
1577           struct type *enclosing_type
1578             = check_typedef (value_enclosing_type (arg1));
1579           struct type *enclosing_type_ptr
1580             = lookup_pointer_type (TYPE_TARGET_TYPE (enclosing_type));
1581
1582           arg2 = value_copy (arg1);
1583           deprecated_set_value_type (arg2, type_ptr);
1584           set_value_enclosing_type (arg2, enclosing_type_ptr);
1585
1586           return arg2;
1587         }
1588     }
1589   if (type->code () == TYPE_CODE_FUNC)
1590     return value_coerce_function (arg1);
1591
1592   /* If this is an array that has not yet been pushed to the target,
1593      then this would be a good time to force it to memory.  */
1594   arg1 = value_coerce_to_target (arg1);
1595
1596   if (VALUE_LVAL (arg1) != lval_memory)
1597     error (_("Attempt to take address of value not located in memory."));
1598
1599   /* Get target memory address.  */
1600   arg2 = value_from_pointer (lookup_pointer_type (value_type (arg1)),
1601                              (value_address (arg1)
1602                               + value_embedded_offset (arg1)));
1603
1604   /* This may be a pointer to a base subobject; so remember the
1605      full derived object's type ...  */
1606   set_value_enclosing_type (arg2,
1607                             lookup_pointer_type (value_enclosing_type (arg1)));
1608   /* ... and also the relative position of the subobject in the full
1609      object.  */
1610   set_value_pointed_to_offset (arg2, value_embedded_offset (arg1));
1611   return arg2;
1612 }
1613
1614 /* Return a reference value for the object for which ARG1 is the
1615    contents.  */
1616
1617 struct value *
1618 value_ref (struct value *arg1, enum type_code refcode)
1619 {
1620   struct value *arg2;
1621   struct type *type = check_typedef (value_type (arg1));
1622
1623   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
1624
1625   if ((type->code () == TYPE_CODE_REF
1626        || type->code () == TYPE_CODE_RVALUE_REF)
1627       && type->code () == refcode)
1628     return arg1;
1629
1630   arg2 = value_addr (arg1);
1631   deprecated_set_value_type (arg2, lookup_reference_type (type, refcode));
1632   return arg2;
1633 }
1634
1635 /* Given a value of a pointer type, apply the C unary * operator to
1636    it.  */
1637
1638 struct value *
1639 value_ind (struct value *arg1)
1640 {
1641   struct type *base_type;
1642   struct value *arg2;
1643
1644   arg1 = coerce_array (arg1);
1645
1646   base_type = check_typedef (value_type (arg1));
1647
1648   if (VALUE_LVAL (arg1) == lval_computed)
1649     {
1650       const struct lval_funcs *funcs = value_computed_funcs (arg1);
1651
1652       if (funcs->indirect)
1653         {
1654           struct value *result = funcs->indirect (arg1);
1655
1656           if (result)
1657             return result;
1658         }
1659     }
1660
1661   if (base_type->code () == TYPE_CODE_PTR)
1662     {
1663       struct type *enc_type;
1664
1665       /* We may be pointing to something embedded in a larger object.
1666          Get the real type of the enclosing object.  */
1667       enc_type = check_typedef (value_enclosing_type (arg1));
1668       enc_type = TYPE_TARGET_TYPE (enc_type);
1669
1670       CORE_ADDR base_addr;
1671       if (check_typedef (enc_type)->code () == TYPE_CODE_FUNC
1672           || check_typedef (enc_type)->code () == TYPE_CODE_METHOD)
1673         {
1674           /* For functions, go through find_function_addr, which knows
1675              how to handle function descriptors.  */
1676           base_addr = find_function_addr (arg1, NULL);
1677         }
1678       else
1679         {
1680           /* Retrieve the enclosing object pointed to.  */
1681           base_addr = (value_as_address (arg1)
1682                        - value_pointed_to_offset (arg1));
1683         }
1684       arg2 = value_at_lazy (enc_type, base_addr);
1685       enc_type = value_type (arg2);
1686       return readjust_indirect_value_type (arg2, enc_type, base_type,
1687                                            arg1, base_addr);
1688     }
1689
1690   error (_("Attempt to take contents of a non-pointer value."));
1691 }
1692 \f
1693 /* Create a value for an array by allocating space in GDB, copying the
1694    data into that space, and then setting up an array value.
1695
1696    The array bounds are set from LOWBOUND and HIGHBOUND, and the array
1697    is populated from the values passed in ELEMVEC.
1698
1699    The element type of the array is inherited from the type of the
1700    first element, and all elements must have the same size (though we
1701    don't currently enforce any restriction on their types).  */
1702
1703 struct value *
1704 value_array (int lowbound, int highbound, struct value **elemvec)
1705 {
1706   int nelem;
1707   int idx;
1708   ULONGEST typelength;
1709   struct value *val;
1710   struct type *arraytype;
1711
1712   /* Validate that the bounds are reasonable and that each of the
1713      elements have the same size.  */
1714
1715   nelem = highbound - lowbound + 1;
1716   if (nelem <= 0)
1717     {
1718       error (_("bad array bounds (%d, %d)"), lowbound, highbound);
1719     }
1720   typelength = type_length_units (value_enclosing_type (elemvec[0]));
1721   for (idx = 1; idx < nelem; idx++)
1722     {
1723       if (type_length_units (value_enclosing_type (elemvec[idx]))
1724           != typelength)
1725         {
1726           error (_("array elements must all be the same size"));
1727         }
1728     }
1729
1730   arraytype = lookup_array_range_type (value_enclosing_type (elemvec[0]),
1731                                        lowbound, highbound);
1732
1733   if (!current_language->c_style_arrays_p ())
1734     {
1735       val = allocate_value (arraytype);
1736       for (idx = 0; idx < nelem; idx++)
1737         value_contents_copy (val, idx * typelength, elemvec[idx], 0,
1738                              typelength);
1739       return val;
1740     }
1741
1742   /* Allocate space to store the array, and then initialize it by
1743      copying in each element.  */
1744
1745   val = allocate_value (arraytype);
1746   for (idx = 0; idx < nelem; idx++)
1747     value_contents_copy (val, idx * typelength, elemvec[idx], 0, typelength);
1748   return val;
1749 }
1750
1751 struct value *
1752 value_cstring (const char *ptr, ssize_t len, struct type *char_type)
1753 {
1754   struct value *val;
1755   int lowbound = current_language->string_lower_bound ();
1756   ssize_t highbound = len / TYPE_LENGTH (char_type);
1757   struct type *stringtype
1758     = lookup_array_range_type (char_type, lowbound, highbound + lowbound - 1);
1759
1760   val = allocate_value (stringtype);
1761   memcpy (value_contents_raw (val), ptr, len);
1762   return val;
1763 }
1764
1765 /* Create a value for a string constant by allocating space in the
1766    inferior, copying the data into that space, and returning the
1767    address with type TYPE_CODE_STRING.  PTR points to the string
1768    constant data; LEN is number of characters.
1769
1770    Note that string types are like array of char types with a lower
1771    bound of zero and an upper bound of LEN - 1.  Also note that the
1772    string may contain embedded null bytes.  */
1773
1774 struct value *
1775 value_string (const char *ptr, ssize_t len, struct type *char_type)
1776 {
1777   struct value *val;
1778   int lowbound = current_language->string_lower_bound ();
1779   ssize_t highbound = len / TYPE_LENGTH (char_type);
1780   struct type *stringtype
1781     = lookup_string_range_type (char_type, lowbound, highbound + lowbound - 1);
1782
1783   val = allocate_value (stringtype);
1784   memcpy (value_contents_raw (val), ptr, len);
1785   return val;
1786 }
1787
1788 \f
1789 /* See if we can pass arguments in T2 to a function which takes arguments
1790    of types T1.  T1 is a list of NARGS arguments, and T2 is an array_view
1791    of the values we're trying to pass.  If some arguments need coercion of
1792    some sort, then the coerced values are written into T2.  Return value is
1793    0 if the arguments could be matched, or the position at which they
1794    differ if not.
1795
1796    STATICP is nonzero if the T1 argument list came from a static
1797    member function.  T2 must still include the ``this'' pointer, but
1798    it will be skipped.
1799
1800    For non-static member functions, we ignore the first argument,
1801    which is the type of the instance variable.  This is because we
1802    want to handle calls with objects from derived classes.  This is
1803    not entirely correct: we should actually check to make sure that a
1804    requested operation is type secure, shouldn't we?  FIXME.  */
1805
1806 static int
1807 typecmp (bool staticp, bool varargs, int nargs,
1808          struct field t1[], gdb::array_view<value *> t2)
1809 {
1810   int i;
1811
1812   /* Skip ``this'' argument if applicable.  T2 will always include
1813      THIS.  */
1814   if (staticp)
1815     t2 = t2.slice (1);
1816
1817   for (i = 0;
1818        (i < nargs) && t1[i].type ()->code () != TYPE_CODE_VOID;
1819        i++)
1820     {
1821       struct type *tt1, *tt2;
1822
1823       if (i == t2.size ())
1824         return i + 1;
1825
1826       tt1 = check_typedef (t1[i].type ());
1827       tt2 = check_typedef (value_type (t2[i]));
1828
1829       if (TYPE_IS_REFERENCE (tt1)
1830           /* We should be doing hairy argument matching, as below.  */
1831           && (check_typedef (TYPE_TARGET_TYPE (tt1))->code ()
1832               == tt2->code ()))
1833         {
1834           if (tt2->code () == TYPE_CODE_ARRAY)
1835             t2[i] = value_coerce_array (t2[i]);
1836           else
1837             t2[i] = value_ref (t2[i], tt1->code ());
1838           continue;
1839         }
1840
1841       /* djb - 20000715 - Until the new type structure is in the
1842          place, and we can attempt things like implicit conversions,
1843          we need to do this so you can take something like a map<const
1844          char *>, and properly access map["hello"], because the
1845          argument to [] will be a reference to a pointer to a char,
1846          and the argument will be a pointer to a char.  */
1847       while (TYPE_IS_REFERENCE (tt1) || tt1->code () == TYPE_CODE_PTR)
1848         {
1849           tt1 = check_typedef ( TYPE_TARGET_TYPE (tt1) );
1850         }
1851       while (tt2->code () == TYPE_CODE_ARRAY
1852              || tt2->code () == TYPE_CODE_PTR
1853              || TYPE_IS_REFERENCE (tt2))
1854         {
1855           tt2 = check_typedef (TYPE_TARGET_TYPE (tt2));
1856         }
1857       if (tt1->code () == tt2->code ())
1858         continue;
1859       /* Array to pointer is a `trivial conversion' according to the
1860          ARM.  */
1861
1862       /* We should be doing much hairier argument matching (see
1863          section 13.2 of the ARM), but as a quick kludge, just check
1864          for the same type code.  */
1865       if (t1[i].type ()->code () != value_type (t2[i])->code ())
1866         return i + 1;
1867     }
1868   if (varargs || i == t2.size ())
1869     return 0;
1870   return i + 1;
1871 }
1872
1873 /* Helper class for search_struct_field that keeps track of found
1874    results and possibly throws an exception if the search yields
1875    ambiguous results.  See search_struct_field for description of
1876    LOOKING_FOR_BASECLASS.  */
1877
1878 struct struct_field_searcher
1879 {
1880   /* A found field.  */
1881   struct found_field
1882   {
1883     /* Path to the structure where the field was found.  */
1884     std::vector<struct type *> path;
1885
1886     /* The field found.  */
1887     struct value *field_value;
1888   };
1889
1890   /* See corresponding fields for description of parameters.  */
1891   struct_field_searcher (const char *name,
1892                          struct type *outermost_type,
1893                          bool looking_for_baseclass)
1894     : m_name (name),
1895       m_looking_for_baseclass (looking_for_baseclass),
1896       m_outermost_type (outermost_type)
1897   {
1898   }
1899
1900   /* The search entry point.  If LOOKING_FOR_BASECLASS is true and the
1901      base class search yields ambiguous results, this throws an
1902      exception.  If LOOKING_FOR_BASECLASS is false, the found fields
1903      are accumulated and the caller (search_struct_field) takes care
1904      of throwing an error if the field search yields ambiguous
1905      results.  The latter is done that way so that the error message
1906      can include a list of all the found candidates.  */
1907   void search (struct value *arg, LONGEST offset, struct type *type);
1908
1909   const std::vector<found_field> &fields ()
1910   {
1911     return m_fields;
1912   }
1913
1914   struct value *baseclass ()
1915   {
1916     return m_baseclass;
1917   }
1918
1919 private:
1920   /* Update results to include V, a found field/baseclass.  */
1921   void update_result (struct value *v, LONGEST boffset);
1922
1923   /* The name of the field/baseclass we're searching for.  */
1924   const char *m_name;
1925
1926   /* Whether we're looking for a baseclass, or a field.  */
1927   const bool m_looking_for_baseclass;
1928
1929   /* The offset of the baseclass containing the field/baseclass we
1930      last recorded.  */
1931   LONGEST m_last_boffset = 0;
1932
1933   /* If looking for a baseclass, then the result is stored here.  */
1934   struct value *m_baseclass = nullptr;
1935
1936   /* When looking for fields, the found candidates are stored
1937      here.  */
1938   std::vector<found_field> m_fields;
1939
1940   /* The type of the initial type passed to search_struct_field; this
1941      is used for error reporting when the lookup is ambiguous.  */
1942   struct type *m_outermost_type;
1943
1944   /* The full path to the struct being inspected.  E.g. for field 'x'
1945      defined in class B inherited by class A, we have A and B pushed
1946      on the path.  */
1947   std::vector <struct type *> m_struct_path;
1948 };
1949
1950 void
1951 struct_field_searcher::update_result (struct value *v, LONGEST boffset)
1952 {
1953   if (v != NULL)
1954     {
1955       if (m_looking_for_baseclass)
1956         {
1957           if (m_baseclass != nullptr
1958               /* The result is not ambiguous if all the classes that are
1959                  found occupy the same space.  */
1960               && m_last_boffset != boffset)
1961             error (_("base class '%s' is ambiguous in type '%s'"),
1962                    m_name, TYPE_SAFE_NAME (m_outermost_type));
1963
1964           m_baseclass = v;
1965           m_last_boffset = boffset;
1966         }
1967       else
1968         {
1969           /* The field is not ambiguous if it occupies the same
1970              space.  */
1971           if (m_fields.empty () || m_last_boffset != boffset)
1972             m_fields.push_back ({m_struct_path, v});
1973         }
1974     }
1975 }
1976
1977 /* A helper for search_struct_field.  This does all the work; most
1978    arguments are as passed to search_struct_field.  */
1979
1980 void
1981 struct_field_searcher::search (struct value *arg1, LONGEST offset,
1982                                struct type *type)
1983 {
1984   int i;
1985   int nbases;
1986
1987   m_struct_path.push_back (type);
1988   SCOPE_EXIT { m_struct_path.pop_back (); };
1989
1990   type = check_typedef (type);
1991   nbases = TYPE_N_BASECLASSES (type);
1992
1993   if (!m_looking_for_baseclass)
1994     for (i = type->num_fields () - 1; i >= nbases; i--)
1995       {
1996         const char *t_field_name = type->field (i).name ();
1997
1998         if (t_field_name && (strcmp_iw (t_field_name, m_name) == 0))
1999           {
2000             struct value *v;
2001
2002             if (field_is_static (&type->field (i)))
2003               v = value_static_field (type, i);
2004             else
2005               v = value_primitive_field (arg1, offset, i, type);
2006
2007             update_result (v, offset);
2008             return;
2009           }
2010
2011         if (t_field_name
2012             && t_field_name[0] == '\0')
2013           {
2014             struct type *field_type = type->field (i).type ();
2015
2016             if (field_type->code () == TYPE_CODE_UNION
2017                 || field_type->code () == TYPE_CODE_STRUCT)
2018               {
2019                 /* Look for a match through the fields of an anonymous
2020                    union, or anonymous struct.  C++ provides anonymous
2021                    unions.
2022
2023                    In the GNU Chill (now deleted from GDB)
2024                    implementation of variant record types, each
2025                    <alternative field> has an (anonymous) union type,
2026                    each member of the union represents a <variant
2027                    alternative>.  Each <variant alternative> is
2028                    represented as a struct, with a member for each
2029                    <variant field>.  */
2030
2031                 LONGEST new_offset = offset;
2032
2033                 /* This is pretty gross.  In G++, the offset in an
2034                    anonymous union is relative to the beginning of the
2035                    enclosing struct.  In the GNU Chill (now deleted
2036                    from GDB) implementation of variant records, the
2037                    bitpos is zero in an anonymous union field, so we
2038                    have to add the offset of the union here.  */
2039                 if (field_type->code () == TYPE_CODE_STRUCT
2040                     || (field_type->num_fields () > 0
2041                         && TYPE_FIELD_BITPOS (field_type, 0) == 0))
2042                   new_offset += TYPE_FIELD_BITPOS (type, i) / 8;
2043
2044                 search (arg1, new_offset, field_type);
2045               }
2046           }
2047       }
2048
2049   for (i = 0; i < nbases; i++)
2050     {
2051       struct value *v = NULL;
2052       struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
2053       /* If we are looking for baseclasses, this is what we get when
2054          we hit them.  But it could happen that the base part's member
2055          name is not yet filled in.  */
2056       int found_baseclass = (m_looking_for_baseclass
2057                              && TYPE_BASECLASS_NAME (type, i) != NULL
2058                              && (strcmp_iw (m_name,
2059                                             TYPE_BASECLASS_NAME (type,
2060                                                                  i)) == 0));
2061       LONGEST boffset = value_embedded_offset (arg1) + offset;
2062
2063       if (BASETYPE_VIA_VIRTUAL (type, i))
2064         {
2065           struct value *v2;
2066
2067           boffset = baseclass_offset (type, i,
2068                                       value_contents_for_printing (arg1),
2069                                       value_embedded_offset (arg1) + offset,
2070                                       value_address (arg1),
2071                                       arg1);
2072
2073           /* The virtual base class pointer might have been clobbered
2074              by the user program.  Make sure that it still points to a
2075              valid memory location.  */
2076
2077           boffset += value_embedded_offset (arg1) + offset;
2078           if (boffset < 0
2079               || boffset >= TYPE_LENGTH (value_enclosing_type (arg1)))
2080             {
2081               CORE_ADDR base_addr;
2082
2083               base_addr = value_address (arg1) + boffset;
2084               v2 = value_at_lazy (basetype, base_addr);
2085               if (target_read_memory (base_addr, 
2086                                       value_contents_raw (v2),
2087                                       TYPE_LENGTH (value_type (v2))) != 0)
2088                 error (_("virtual baseclass botch"));
2089             }
2090           else
2091             {
2092               v2 = value_copy (arg1);
2093               deprecated_set_value_type (v2, basetype);
2094               set_value_embedded_offset (v2, boffset);
2095             }
2096
2097           if (found_baseclass)
2098             v = v2;
2099           else
2100             search (v2, 0, TYPE_BASECLASS (type, i));
2101         }
2102       else if (found_baseclass)
2103         v = value_primitive_field (arg1, offset, i, type);
2104       else
2105         {
2106           search (arg1, offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
2107                   basetype);
2108         }
2109
2110       update_result (v, boffset);
2111     }
2112 }
2113
2114 /* Helper function used by value_struct_elt to recurse through
2115    baseclasses.  Look for a field NAME in ARG1.  Search in it assuming
2116    it has (class) type TYPE.  If found, return value, else return NULL.
2117
2118    If LOOKING_FOR_BASECLASS, then instead of looking for struct
2119    fields, look for a baseclass named NAME.  */
2120
2121 static struct value *
2122 search_struct_field (const char *name, struct value *arg1,
2123                      struct type *type, int looking_for_baseclass)
2124 {
2125   struct_field_searcher searcher (name, type, looking_for_baseclass);
2126
2127   searcher.search (arg1, 0, type);
2128
2129   if (!looking_for_baseclass)
2130     {
2131       const auto &fields = searcher.fields ();
2132
2133       if (fields.empty ())
2134         return nullptr;
2135       else if (fields.size () == 1)
2136         return fields[0].field_value;
2137       else
2138         {
2139           std::string candidates;
2140
2141           for (auto &&candidate : fields)
2142             {
2143               gdb_assert (!candidate.path.empty ());
2144
2145               struct type *field_type = value_type (candidate.field_value);
2146               struct type *struct_type = candidate.path.back ();
2147
2148               std::string path;
2149               bool first = true;
2150               for (struct type *t : candidate.path)
2151                 {
2152                   if (first)
2153                     first = false;
2154                   else
2155                     path += " -> ";
2156                   path += t->name ();
2157                 }
2158
2159               candidates += string_printf ("\n  '%s %s::%s' (%s)",
2160                                            TYPE_SAFE_NAME (field_type),
2161                                            TYPE_SAFE_NAME (struct_type),
2162                                            name,
2163                                            path.c_str ());
2164             }
2165
2166           error (_("Request for member '%s' is ambiguous in type '%s'."
2167                    " Candidates are:%s"),
2168                  name, TYPE_SAFE_NAME (type),
2169                  candidates.c_str ());
2170         }
2171     }
2172   else
2173     return searcher.baseclass ();
2174 }
2175
2176 /* Helper function used by value_struct_elt to recurse through
2177    baseclasses.  Look for a field NAME in ARG1.  Adjust the address of
2178    ARG1 by OFFSET bytes, and search in it assuming it has (class) type
2179    TYPE.
2180
2181    ARGS is an optional array of argument values used to help finding NAME.
2182    The contents of ARGS can be adjusted if type coercion is required in
2183    order to find a matching NAME.
2184
2185    If found, return value, else if name matched and args not return
2186    (value) -1, else return NULL.  */
2187
2188 static struct value *
2189 search_struct_method (const char *name, struct value **arg1p,
2190                       gdb::optional<gdb::array_view<value *>> args,
2191                       LONGEST offset, int *static_memfuncp,
2192                       struct type *type)
2193 {
2194   int i;
2195   struct value *v;
2196   int name_matched = 0;
2197
2198   type = check_typedef (type);
2199   for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2200     {
2201       const char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2202
2203       if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2204         {
2205           int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
2206           struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
2207
2208           name_matched = 1;
2209           check_stub_method_group (type, i);
2210           if (j > 0 && !args.has_value ())
2211             error (_("cannot resolve overloaded method "
2212                      "`%s': no arguments supplied"), name);
2213           else if (j == 0 && !args.has_value ())
2214             {
2215               v = value_fn_field (arg1p, f, j, type, offset);
2216               if (v != NULL)
2217                 return v;
2218             }
2219           else
2220             while (j >= 0)
2221               {
2222                 gdb_assert (args.has_value ());
2223                 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
2224                               TYPE_FN_FIELD_TYPE (f, j)->has_varargs (),
2225                               TYPE_FN_FIELD_TYPE (f, j)->num_fields (),
2226                               TYPE_FN_FIELD_ARGS (f, j), *args))
2227                   {
2228                     if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
2229                       return value_virtual_fn_field (arg1p, f, j, 
2230                                                      type, offset);
2231                     if (TYPE_FN_FIELD_STATIC_P (f, j) 
2232                         && static_memfuncp)
2233                       *static_memfuncp = 1;
2234                     v = value_fn_field (arg1p, f, j, type, offset);
2235                     if (v != NULL)
2236                       return v;       
2237                   }
2238                 j--;
2239               }
2240         }
2241     }
2242
2243   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2244     {
2245       LONGEST base_offset;
2246       LONGEST this_offset;
2247
2248       if (BASETYPE_VIA_VIRTUAL (type, i))
2249         {
2250           struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
2251           struct value *base_val;
2252           const gdb_byte *base_valaddr;
2253
2254           /* The virtual base class pointer might have been
2255              clobbered by the user program.  Make sure that it
2256              still points to a valid memory location.  */
2257
2258           if (offset < 0 || offset >= TYPE_LENGTH (type))
2259             {
2260               CORE_ADDR address;
2261
2262               gdb::byte_vector tmp (TYPE_LENGTH (baseclass));
2263               address = value_address (*arg1p);
2264
2265               if (target_read_memory (address + offset,
2266                                       tmp.data (), TYPE_LENGTH (baseclass)) != 0)
2267                 error (_("virtual baseclass botch"));
2268
2269               base_val = value_from_contents_and_address (baseclass,
2270                                                           tmp.data (),
2271                                                           address + offset);
2272               base_valaddr = value_contents_for_printing (base_val);
2273               this_offset = 0;
2274             }
2275           else
2276             {
2277               base_val = *arg1p;
2278               base_valaddr = value_contents_for_printing (*arg1p);
2279               this_offset = offset;
2280             }
2281
2282           base_offset = baseclass_offset (type, i, base_valaddr,
2283                                           this_offset, value_address (base_val),
2284                                           base_val);
2285         }
2286       else
2287         {
2288           base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2289         }
2290       v = search_struct_method (name, arg1p, args, base_offset + offset,
2291                                 static_memfuncp, TYPE_BASECLASS (type, i));
2292       if (v == (struct value *) - 1)
2293         {
2294           name_matched = 1;
2295         }
2296       else if (v)
2297         {
2298           /* FIXME-bothner:  Why is this commented out?  Why is it here?  */
2299           /* *arg1p = arg1_tmp; */
2300           return v;
2301         }
2302     }
2303   if (name_matched)
2304     return (struct value *) - 1;
2305   else
2306     return NULL;
2307 }
2308
2309 /* Given *ARGP, a value of type (pointer to a)* structure/union,
2310    extract the component named NAME from the ultimate target
2311    structure/union and return it as a value with its appropriate type.
2312    ERR is used in the error message if *ARGP's type is wrong.
2313
2314    C++: ARGS is a list of argument types to aid in the selection of
2315    an appropriate method.  Also, handle derived types.
2316
2317    STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
2318    where the truthvalue of whether the function that was resolved was
2319    a static member function or not is stored.
2320
2321    ERR is an error message to be printed in case the field is not
2322    found.  */
2323
2324 struct value *
2325 value_struct_elt (struct value **argp,
2326                   gdb::optional<gdb::array_view<value *>> args,
2327                   const char *name, int *static_memfuncp, const char *err)
2328 {
2329   struct type *t;
2330   struct value *v;
2331
2332   *argp = coerce_array (*argp);
2333
2334   t = check_typedef (value_type (*argp));
2335
2336   /* Follow pointers until we get to a non-pointer.  */
2337
2338   while (t->is_pointer_or_reference ())
2339     {
2340       *argp = value_ind (*argp);
2341       /* Don't coerce fn pointer to fn and then back again!  */
2342       if (check_typedef (value_type (*argp))->code () != TYPE_CODE_FUNC)
2343         *argp = coerce_array (*argp);
2344       t = check_typedef (value_type (*argp));
2345     }
2346
2347   if (t->code () != TYPE_CODE_STRUCT
2348       && t->code () != TYPE_CODE_UNION)
2349     error (_("Attempt to extract a component of a value that is not a %s."),
2350            err);
2351
2352   /* Assume it's not, unless we see that it is.  */
2353   if (static_memfuncp)
2354     *static_memfuncp = 0;
2355
2356   if (!args.has_value ())
2357     {
2358       /* if there are no arguments ...do this...  */
2359
2360       /* Try as a field first, because if we succeed, there is less
2361          work to be done.  */
2362       v = search_struct_field (name, *argp, t, 0);
2363       if (v)
2364         return v;
2365
2366       /* C++: If it was not found as a data field, then try to
2367          return it as a pointer to a method.  */
2368       v = search_struct_method (name, argp, args, 0,
2369                                 static_memfuncp, t);
2370
2371       if (v == (struct value *) - 1)
2372         error (_("Cannot take address of method %s."), name);
2373       else if (v == 0)
2374         {
2375           if (TYPE_NFN_FIELDS (t))
2376             error (_("There is no member or method named %s."), name);
2377           else
2378             error (_("There is no member named %s."), name);
2379         }
2380       return v;
2381     }
2382
2383   v = search_struct_method (name, argp, args, 0,
2384                             static_memfuncp, t);
2385
2386   if (v == (struct value *) - 1)
2387     {
2388       error (_("One of the arguments you tried to pass to %s could not "
2389                "be converted to what the function wants."), name);
2390     }
2391   else if (v == 0)
2392     {
2393       /* See if user tried to invoke data as function.  If so, hand it
2394          back.  If it's not callable (i.e., a pointer to function),
2395          gdb should give an error.  */
2396       v = search_struct_field (name, *argp, t, 0);
2397       /* If we found an ordinary field, then it is not a method call.
2398          So, treat it as if it were a static member function.  */
2399       if (v && static_memfuncp)
2400         *static_memfuncp = 1;
2401     }
2402
2403   if (!v)
2404     throw_error (NOT_FOUND_ERROR,
2405                  _("Structure has no component named %s."), name);
2406   return v;
2407 }
2408
2409 /* Given *ARGP, a value of type structure or union, or a pointer/reference
2410    to a structure or union, extract and return its component (field) of
2411    type FTYPE at the specified BITPOS.
2412    Throw an exception on error.  */
2413
2414 struct value *
2415 value_struct_elt_bitpos (struct value **argp, int bitpos, struct type *ftype,
2416                          const char *err)
2417 {
2418   struct type *t;
2419   int i;
2420
2421   *argp = coerce_array (*argp);
2422
2423   t = check_typedef (value_type (*argp));
2424
2425   while (t->is_pointer_or_reference ())
2426     {
2427       *argp = value_ind (*argp);
2428       if (check_typedef (value_type (*argp))->code () != TYPE_CODE_FUNC)
2429         *argp = coerce_array (*argp);
2430       t = check_typedef (value_type (*argp));
2431     }
2432
2433   if (t->code () != TYPE_CODE_STRUCT
2434       && t->code () != TYPE_CODE_UNION)
2435     error (_("Attempt to extract a component of a value that is not a %s."),
2436            err);
2437
2438   for (i = TYPE_N_BASECLASSES (t); i < t->num_fields (); i++)
2439     {
2440       if (!field_is_static (&t->field (i))
2441           && bitpos == TYPE_FIELD_BITPOS (t, i)
2442           && types_equal (ftype, t->field (i).type ()))
2443         return value_primitive_field (*argp, 0, i, t);
2444     }
2445
2446   error (_("No field with matching bitpos and type."));
2447
2448   /* Never hit.  */
2449   return NULL;
2450 }
2451
2452 /* Search through the methods of an object (and its bases) to find a
2453    specified method.  Return a reference to the fn_field list METHODS of
2454    overloaded instances defined in the source language.  If available
2455    and matching, a vector of matching xmethods defined in extension
2456    languages are also returned in XMETHODS.
2457
2458    Helper function for value_find_oload_list.
2459    ARGP is a pointer to a pointer to a value (the object).
2460    METHOD is a string containing the method name.
2461    OFFSET is the offset within the value.
2462    TYPE is the assumed type of the object.
2463    METHODS is a pointer to the matching overloaded instances defined
2464       in the source language.  Since this is a recursive function,
2465       *METHODS should be set to NULL when calling this function.
2466    NUM_FNS is the number of overloaded instances.  *NUM_FNS should be set to
2467       0 when calling this function.
2468    XMETHODS is the vector of matching xmethod workers.  *XMETHODS
2469       should also be set to NULL when calling this function.
2470    BASETYPE is set to the actual type of the subobject where the
2471       method is found.
2472    BOFFSET is the offset of the base subobject where the method is found.  */
2473
2474 static void
2475 find_method_list (struct value **argp, const char *method,
2476                   LONGEST offset, struct type *type,
2477                   gdb::array_view<fn_field> *methods,
2478                   std::vector<xmethod_worker_up> *xmethods,
2479                   struct type **basetype, LONGEST *boffset)
2480 {
2481   int i;
2482   struct fn_field *f = NULL;
2483
2484   gdb_assert (methods != NULL && xmethods != NULL);
2485   type = check_typedef (type);
2486
2487   /* First check in object itself.
2488      This function is called recursively to search through base classes.
2489      If there is a source method match found at some stage, then we need not
2490      look for source methods in consequent recursive calls.  */
2491   if (methods->empty ())
2492     {
2493       for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2494         {
2495           /* pai: FIXME What about operators and type conversions?  */
2496           const char *fn_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2497
2498           if (fn_field_name && (strcmp_iw (fn_field_name, method) == 0))
2499             {
2500               int len = TYPE_FN_FIELDLIST_LENGTH (type, i);
2501               f = TYPE_FN_FIELDLIST1 (type, i);
2502               *methods = gdb::make_array_view (f, len);
2503
2504               *basetype = type;
2505               *boffset = offset;
2506
2507               /* Resolve any stub methods.  */
2508               check_stub_method_group (type, i);
2509
2510               break;
2511             }
2512         }
2513     }
2514
2515   /* Unlike source methods, xmethods can be accumulated over successive
2516      recursive calls.  In other words, an xmethod named 'm' in a class
2517      will not hide an xmethod named 'm' in its base class(es).  We want
2518      it to be this way because xmethods are after all convenience functions
2519      and hence there is no point restricting them with something like method
2520      hiding.  Moreover, if hiding is done for xmethods as well, then we will
2521      have to provide a mechanism to un-hide (like the 'using' construct).  */
2522   get_matching_xmethod_workers (type, method, xmethods);
2523
2524   /* If source methods are not found in current class, look for them in the
2525      base classes.  We also have to go through the base classes to gather
2526      extension methods.  */
2527   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2528     {
2529       LONGEST base_offset;
2530
2531       if (BASETYPE_VIA_VIRTUAL (type, i))
2532         {
2533           base_offset = baseclass_offset (type, i,
2534                                           value_contents_for_printing (*argp),
2535                                           value_offset (*argp) + offset,
2536                                           value_address (*argp), *argp);
2537         }
2538       else /* Non-virtual base, simply use bit position from debug
2539               info.  */
2540         {
2541           base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2542         }
2543
2544       find_method_list (argp, method, base_offset + offset,
2545                         TYPE_BASECLASS (type, i), methods,
2546                         xmethods, basetype, boffset);
2547     }
2548 }
2549
2550 /* Return the list of overloaded methods of a specified name.  The methods
2551    could be those GDB finds in the binary, or xmethod.  Methods found in
2552    the binary are returned in METHODS, and xmethods are returned in
2553    XMETHODS.
2554
2555    ARGP is a pointer to a pointer to a value (the object).
2556    METHOD is the method name.
2557    OFFSET is the offset within the value contents.
2558    METHODS is the list of matching overloaded instances defined in
2559       the source language.
2560    XMETHODS is the vector of matching xmethod workers defined in
2561       extension languages.
2562    BASETYPE is set to the type of the base subobject that defines the
2563       method.
2564    BOFFSET is the offset of the base subobject which defines the method.  */
2565
2566 static void
2567 value_find_oload_method_list (struct value **argp, const char *method,
2568                               LONGEST offset,
2569                               gdb::array_view<fn_field> *methods,
2570                               std::vector<xmethod_worker_up> *xmethods,
2571                               struct type **basetype, LONGEST *boffset)
2572 {
2573   struct type *t;
2574
2575   t = check_typedef (value_type (*argp));
2576
2577   /* Code snarfed from value_struct_elt.  */
2578   while (t->is_pointer_or_reference ())
2579     {
2580       *argp = value_ind (*argp);
2581       /* Don't coerce fn pointer to fn and then back again!  */
2582       if (check_typedef (value_type (*argp))->code () != TYPE_CODE_FUNC)
2583         *argp = coerce_array (*argp);
2584       t = check_typedef (value_type (*argp));
2585     }
2586
2587   if (t->code () != TYPE_CODE_STRUCT
2588       && t->code () != TYPE_CODE_UNION)
2589     error (_("Attempt to extract a component of a "
2590              "value that is not a struct or union"));
2591
2592   gdb_assert (methods != NULL && xmethods != NULL);
2593
2594   /* Clear the lists.  */
2595   *methods = {};
2596   xmethods->clear ();
2597
2598   find_method_list (argp, method, 0, t, methods, xmethods,
2599                     basetype, boffset);
2600 }
2601
2602 /* Given an array of arguments (ARGS) (which includes an entry for
2603    "this" in the case of C++ methods), the NAME of a function, and
2604    whether it's a method or not (METHOD), find the best function that
2605    matches on the argument types according to the overload resolution
2606    rules.
2607
2608    METHOD can be one of three values:
2609      NON_METHOD for non-member functions.
2610      METHOD: for member functions.
2611      BOTH: used for overload resolution of operators where the
2612        candidates are expected to be either member or non member
2613        functions.  In this case the first argument ARGTYPES
2614        (representing 'this') is expected to be a reference to the
2615        target object, and will be dereferenced when attempting the
2616        non-member search.
2617
2618    In the case of class methods, the parameter OBJ is an object value
2619    in which to search for overloaded methods.
2620
2621    In the case of non-method functions, the parameter FSYM is a symbol
2622    corresponding to one of the overloaded functions.
2623
2624    Return value is an integer: 0 -> good match, 10 -> debugger applied
2625    non-standard coercions, 100 -> incompatible.
2626
2627    If a method is being searched for, VALP will hold the value.
2628    If a non-method is being searched for, SYMP will hold the symbol 
2629    for it.
2630
2631    If a method is being searched for, and it is a static method,
2632    then STATICP will point to a non-zero value.
2633
2634    If NO_ADL argument dependent lookup is disabled.  This is used to prevent
2635    ADL overload candidates when performing overload resolution for a fully
2636    qualified name.
2637
2638    If NOSIDE is EVAL_AVOID_SIDE_EFFECTS, then OBJP's memory cannot be
2639    read while picking the best overload match (it may be all zeroes and thus
2640    not have a vtable pointer), in which case skip virtual function lookup.
2641    This is ok as typically EVAL_AVOID_SIDE_EFFECTS is only used to determine
2642    the result type.
2643
2644    Note: This function does *not* check the value of
2645    overload_resolution.  Caller must check it to see whether overload
2646    resolution is permitted.  */
2647
2648 int
2649 find_overload_match (gdb::array_view<value *> args,
2650                      const char *name, enum oload_search_type method,
2651                      struct value **objp, struct symbol *fsym,
2652                      struct value **valp, struct symbol **symp, 
2653                      int *staticp, const int no_adl,
2654                      const enum noside noside)
2655 {
2656   struct value *obj = (objp ? *objp : NULL);
2657   struct type *obj_type = obj ? value_type (obj) : NULL;
2658   /* Index of best overloaded function.  */
2659   int func_oload_champ = -1;
2660   int method_oload_champ = -1;
2661   int src_method_oload_champ = -1;
2662   int ext_method_oload_champ = -1;
2663
2664   /* The measure for the current best match.  */
2665   badness_vector method_badness;
2666   badness_vector func_badness;
2667   badness_vector ext_method_badness;
2668   badness_vector src_method_badness;
2669
2670   struct value *temp = obj;
2671   /* For methods, the list of overloaded methods.  */
2672   gdb::array_view<fn_field> methods;
2673   /* For non-methods, the list of overloaded function symbols.  */
2674   std::vector<symbol *> functions;
2675   /* For xmethods, the vector of xmethod workers.  */
2676   std::vector<xmethod_worker_up> xmethods;
2677   struct type *basetype = NULL;
2678   LONGEST boffset;
2679
2680   const char *obj_type_name = NULL;
2681   const char *func_name = NULL;
2682   gdb::unique_xmalloc_ptr<char> temp_func;
2683   enum oload_classification match_quality;
2684   enum oload_classification method_match_quality = INCOMPATIBLE;
2685   enum oload_classification src_method_match_quality = INCOMPATIBLE;
2686   enum oload_classification ext_method_match_quality = INCOMPATIBLE;
2687   enum oload_classification func_match_quality = INCOMPATIBLE;
2688
2689   /* Get the list of overloaded methods or functions.  */
2690   if (method == METHOD || method == BOTH)
2691     {
2692       gdb_assert (obj);
2693
2694       /* OBJ may be a pointer value rather than the object itself.  */
2695       obj = coerce_ref (obj);
2696       while (check_typedef (value_type (obj))->code () == TYPE_CODE_PTR)
2697         obj = coerce_ref (value_ind (obj));
2698       obj_type_name = value_type (obj)->name ();
2699
2700       /* First check whether this is a data member, e.g. a pointer to
2701          a function.  */
2702       if (check_typedef (value_type (obj))->code () == TYPE_CODE_STRUCT)
2703         {
2704           *valp = search_struct_field (name, obj,
2705                                        check_typedef (value_type (obj)), 0);
2706           if (*valp)
2707             {
2708               *staticp = 1;
2709               return 0;
2710             }
2711         }
2712
2713       /* Retrieve the list of methods with the name NAME.  */
2714       value_find_oload_method_list (&temp, name, 0, &methods,
2715                                     &xmethods, &basetype, &boffset);
2716       /* If this is a method only search, and no methods were found
2717          the search has failed.  */
2718       if (method == METHOD && methods.empty () && xmethods.empty ())
2719         error (_("Couldn't find method %s%s%s"),
2720                obj_type_name,
2721                (obj_type_name && *obj_type_name) ? "::" : "",
2722                name);
2723       /* If we are dealing with stub method types, they should have
2724          been resolved by find_method_list via
2725          value_find_oload_method_list above.  */
2726       if (!methods.empty ())
2727         {
2728           gdb_assert (TYPE_SELF_TYPE (methods[0].type) != NULL);
2729
2730           src_method_oload_champ
2731             = find_oload_champ (args,
2732                                 methods.size (),
2733                                 methods.data (), NULL, NULL,
2734                                 &src_method_badness);
2735
2736           src_method_match_quality = classify_oload_match
2737             (src_method_badness, args.size (),
2738              oload_method_static_p (methods.data (), src_method_oload_champ));
2739         }
2740
2741       if (!xmethods.empty ())
2742         {
2743           ext_method_oload_champ
2744             = find_oload_champ (args,
2745                                 xmethods.size (),
2746                                 NULL, xmethods.data (), NULL,
2747                                 &ext_method_badness);
2748           ext_method_match_quality = classify_oload_match (ext_method_badness,
2749                                                            args.size (), 0);
2750         }
2751
2752       if (src_method_oload_champ >= 0 && ext_method_oload_champ >= 0)
2753         {
2754           switch (compare_badness (ext_method_badness, src_method_badness))
2755             {
2756               case 0: /* Src method and xmethod are equally good.  */
2757                 /* If src method and xmethod are equally good, then
2758                    xmethod should be the winner.  Hence, fall through to the
2759                    case where a xmethod is better than the source
2760                    method, except when the xmethod match quality is
2761                    non-standard.  */
2762                 /* FALLTHROUGH */
2763               case 1: /* Src method and ext method are incompatible.  */
2764                 /* If ext method match is not standard, then let source method
2765                    win.  Otherwise, fallthrough to let xmethod win.  */
2766                 if (ext_method_match_quality != STANDARD)
2767                   {
2768                     method_oload_champ = src_method_oload_champ;
2769                     method_badness = src_method_badness;
2770                     ext_method_oload_champ = -1;
2771                     method_match_quality = src_method_match_quality;
2772                     break;
2773                   }
2774                 /* FALLTHROUGH */
2775               case 2: /* Ext method is champion.  */
2776                 method_oload_champ = ext_method_oload_champ;
2777                 method_badness = ext_method_badness;
2778                 src_method_oload_champ = -1;
2779                 method_match_quality = ext_method_match_quality;
2780                 break;
2781               case 3: /* Src method is champion.  */
2782                 method_oload_champ = src_method_oload_champ;
2783                 method_badness = src_method_badness;
2784                 ext_method_oload_champ = -1;
2785                 method_match_quality = src_method_match_quality;
2786                 break;
2787               default:
2788                 gdb_assert_not_reached ("Unexpected overload comparison "
2789                                         "result");
2790                 break;
2791             }
2792         }
2793       else if (src_method_oload_champ >= 0)
2794         {
2795           method_oload_champ = src_method_oload_champ;
2796           method_badness = src_method_badness;
2797           method_match_quality = src_method_match_quality;
2798         }
2799       else if (ext_method_oload_champ >= 0)
2800         {
2801           method_oload_champ = ext_method_oload_champ;
2802           method_badness = ext_method_badness;
2803           method_match_quality = ext_method_match_quality;
2804         }
2805     }
2806
2807   if (method == NON_METHOD || method == BOTH)
2808     {
2809       const char *qualified_name = NULL;
2810
2811       /* If the overload match is being search for both as a method
2812          and non member function, the first argument must now be
2813          dereferenced.  */
2814       if (method == BOTH)
2815         args[0] = value_ind (args[0]);
2816
2817       if (fsym)
2818         {
2819           qualified_name = fsym->natural_name ();
2820
2821           /* If we have a function with a C++ name, try to extract just
2822              the function part.  Do not try this for non-functions (e.g.
2823              function pointers).  */
2824           if (qualified_name
2825               && (check_typedef (SYMBOL_TYPE (fsym))->code ()
2826                   == TYPE_CODE_FUNC))
2827             {
2828               temp_func = cp_func_name (qualified_name);
2829
2830               /* If cp_func_name did not remove anything, the name of the
2831                  symbol did not include scope or argument types - it was
2832                  probably a C-style function.  */
2833               if (temp_func != nullptr)
2834                 {
2835                   if (strcmp (temp_func.get (), qualified_name) == 0)
2836                     func_name = NULL;
2837                   else
2838                     func_name = temp_func.get ();
2839                 }
2840             }
2841         }
2842       else
2843         {
2844           func_name = name;
2845           qualified_name = name;
2846         }
2847
2848       /* If there was no C++ name, this must be a C-style function or
2849          not a function at all.  Just return the same symbol.  Do the
2850          same if cp_func_name fails for some reason.  */
2851       if (func_name == NULL)
2852         {
2853           *symp = fsym;
2854           return 0;
2855         }
2856
2857       func_oload_champ = find_oload_champ_namespace (args,
2858                                                      func_name,
2859                                                      qualified_name,
2860                                                      &functions,
2861                                                      &func_badness,
2862                                                      no_adl);
2863
2864       if (func_oload_champ >= 0)
2865         func_match_quality = classify_oload_match (func_badness,
2866                                                    args.size (), 0);
2867     }
2868
2869   /* Did we find a match ?  */
2870   if (method_oload_champ == -1 && func_oload_champ == -1)
2871     throw_error (NOT_FOUND_ERROR,
2872                  _("No symbol \"%s\" in current context."),
2873                  name);
2874
2875   /* If we have found both a method match and a function
2876      match, find out which one is better, and calculate match
2877      quality.  */
2878   if (method_oload_champ >= 0 && func_oload_champ >= 0)
2879     {
2880       switch (compare_badness (func_badness, method_badness))
2881         {
2882           case 0: /* Top two contenders are equally good.  */
2883             /* FIXME: GDB does not support the general ambiguous case.
2884              All candidates should be collected and presented the
2885              user.  */
2886             error (_("Ambiguous overload resolution"));
2887             break;
2888           case 1: /* Incomparable top contenders.  */
2889             /* This is an error incompatible candidates
2890                should not have been proposed.  */
2891             error (_("Internal error: incompatible "
2892                      "overload candidates proposed"));
2893             break;
2894           case 2: /* Function champion.  */
2895             method_oload_champ = -1;
2896             match_quality = func_match_quality;
2897             break;
2898           case 3: /* Method champion.  */
2899             func_oload_champ = -1;
2900             match_quality = method_match_quality;
2901             break;
2902           default:
2903             error (_("Internal error: unexpected overload comparison result"));
2904             break;
2905         }
2906     }
2907   else
2908     {
2909       /* We have either a method match or a function match.  */
2910       if (method_oload_champ >= 0)
2911         match_quality = method_match_quality;
2912       else
2913         match_quality = func_match_quality;
2914     }
2915
2916   if (match_quality == INCOMPATIBLE)
2917     {
2918       if (method == METHOD)
2919         error (_("Cannot resolve method %s%s%s to any overloaded instance"),
2920                obj_type_name,
2921                (obj_type_name && *obj_type_name) ? "::" : "",
2922                name);
2923       else
2924         error (_("Cannot resolve function %s to any overloaded instance"),
2925                func_name);
2926     }
2927   else if (match_quality == NON_STANDARD)
2928     {
2929       if (method == METHOD)
2930         warning (_("Using non-standard conversion to match "
2931                    "method %s%s%s to supplied arguments"),
2932                  obj_type_name,
2933                  (obj_type_name && *obj_type_name) ? "::" : "",
2934                  name);
2935       else
2936         warning (_("Using non-standard conversion to match "
2937                    "function %s to supplied arguments"),
2938                  func_name);
2939     }
2940
2941   if (staticp != NULL)
2942     *staticp = oload_method_static_p (methods.data (), method_oload_champ);
2943
2944   if (method_oload_champ >= 0)
2945     {
2946       if (src_method_oload_champ >= 0)
2947         {
2948           if (TYPE_FN_FIELD_VIRTUAL_P (methods, method_oload_champ)
2949               && noside != EVAL_AVOID_SIDE_EFFECTS)
2950             {
2951               *valp = value_virtual_fn_field (&temp, methods.data (),
2952                                               method_oload_champ, basetype,
2953                                               boffset);
2954             }
2955           else
2956             *valp = value_fn_field (&temp, methods.data (),
2957                                     method_oload_champ, basetype, boffset);
2958         }
2959       else
2960         *valp = value_from_xmethod
2961           (std::move (xmethods[ext_method_oload_champ]));
2962     }
2963   else
2964     *symp = functions[func_oload_champ];
2965
2966   if (objp)
2967     {
2968       struct type *temp_type = check_typedef (value_type (temp));
2969       struct type *objtype = check_typedef (obj_type);
2970
2971       if (temp_type->code () != TYPE_CODE_PTR
2972           && objtype->is_pointer_or_reference ())
2973         {
2974           temp = value_addr (temp);
2975         }
2976       *objp = temp;
2977     }
2978
2979   switch (match_quality)
2980     {
2981     case INCOMPATIBLE:
2982       return 100;
2983     case NON_STANDARD:
2984       return 10;
2985     default:                            /* STANDARD */
2986       return 0;
2987     }
2988 }
2989
2990 /* Find the best overload match, searching for FUNC_NAME in namespaces
2991    contained in QUALIFIED_NAME until it either finds a good match or
2992    runs out of namespaces.  It stores the overloaded functions in
2993    *OLOAD_SYMS, and the badness vector in *OLOAD_CHAMP_BV.  If NO_ADL,
2994    argument dependent lookup is not performed.  */
2995
2996 static int
2997 find_oload_champ_namespace (gdb::array_view<value *> args,
2998                             const char *func_name,
2999                             const char *qualified_name,
3000                             std::vector<symbol *> *oload_syms,
3001                             badness_vector *oload_champ_bv,
3002                             const int no_adl)
3003 {
3004   int oload_champ;
3005
3006   find_oload_champ_namespace_loop (args,
3007                                    func_name,
3008                                    qualified_name, 0,
3009                                    oload_syms, oload_champ_bv,
3010                                    &oload_champ,
3011                                    no_adl);
3012
3013   return oload_champ;
3014 }
3015
3016 /* Helper function for find_oload_champ_namespace; NAMESPACE_LEN is
3017    how deep we've looked for namespaces, and the champ is stored in
3018    OLOAD_CHAMP.  The return value is 1 if the champ is a good one, 0
3019    if it isn't.  Other arguments are the same as in
3020    find_oload_champ_namespace.  */
3021
3022 static int
3023 find_oload_champ_namespace_loop (gdb::array_view<value *> args,
3024                                  const char *func_name,
3025                                  const char *qualified_name,
3026                                  int namespace_len,
3027                                  std::vector<symbol *> *oload_syms,
3028                                  badness_vector *oload_champ_bv,
3029                                  int *oload_champ,
3030                                  const int no_adl)
3031 {
3032   int next_namespace_len = namespace_len;
3033   int searched_deeper = 0;
3034   int new_oload_champ;
3035   char *new_namespace;
3036
3037   if (next_namespace_len != 0)
3038     {
3039       gdb_assert (qualified_name[next_namespace_len] == ':');
3040       next_namespace_len +=  2;
3041     }
3042   next_namespace_len +=
3043     cp_find_first_component (qualified_name + next_namespace_len);
3044
3045   /* First, see if we have a deeper namespace we can search in.
3046      If we get a good match there, use it.  */
3047
3048   if (qualified_name[next_namespace_len] == ':')
3049     {
3050       searched_deeper = 1;
3051
3052       if (find_oload_champ_namespace_loop (args,
3053                                            func_name, qualified_name,
3054                                            next_namespace_len,
3055                                            oload_syms, oload_champ_bv,
3056                                            oload_champ, no_adl))
3057         {
3058           return 1;
3059         }
3060     };
3061
3062   /* If we reach here, either we're in the deepest namespace or we
3063      didn't find a good match in a deeper namespace.  But, in the
3064      latter case, we still have a bad match in a deeper namespace;
3065      note that we might not find any match at all in the current
3066      namespace.  (There's always a match in the deepest namespace,
3067      because this overload mechanism only gets called if there's a
3068      function symbol to start off with.)  */
3069
3070   new_namespace = (char *) alloca (namespace_len + 1);
3071   strncpy (new_namespace, qualified_name, namespace_len);
3072   new_namespace[namespace_len] = '\0';
3073
3074   std::vector<symbol *> new_oload_syms
3075     = make_symbol_overload_list (func_name, new_namespace);
3076
3077   /* If we have reached the deepest level perform argument
3078      determined lookup.  */
3079   if (!searched_deeper && !no_adl)
3080     {
3081       int ix;
3082       struct type **arg_types;
3083
3084       /* Prepare list of argument types for overload resolution.  */
3085       arg_types = (struct type **)
3086         alloca (args.size () * (sizeof (struct type *)));
3087       for (ix = 0; ix < args.size (); ix++)
3088         arg_types[ix] = value_type (args[ix]);
3089       add_symbol_overload_list_adl ({arg_types, args.size ()}, func_name,
3090                                     &new_oload_syms);
3091     }
3092
3093   badness_vector new_oload_champ_bv;
3094   new_oload_champ = find_oload_champ (args,
3095                                       new_oload_syms.size (),
3096                                       NULL, NULL, new_oload_syms.data (),
3097                                       &new_oload_champ_bv);
3098
3099   /* Case 1: We found a good match.  Free earlier matches (if any),
3100      and return it.  Case 2: We didn't find a good match, but we're
3101      not the deepest function.  Then go with the bad match that the
3102      deeper function found.  Case 3: We found a bad match, and we're
3103      the deepest function.  Then return what we found, even though
3104      it's a bad match.  */
3105
3106   if (new_oload_champ != -1
3107       && classify_oload_match (new_oload_champ_bv, args.size (), 0) == STANDARD)
3108     {
3109       *oload_syms = std::move (new_oload_syms);
3110       *oload_champ = new_oload_champ;
3111       *oload_champ_bv = std::move (new_oload_champ_bv);
3112       return 1;
3113     }
3114   else if (searched_deeper)
3115     {
3116       return 0;
3117     }
3118   else
3119     {
3120       *oload_syms = std::move (new_oload_syms);
3121       *oload_champ = new_oload_champ;
3122       *oload_champ_bv = std::move (new_oload_champ_bv);
3123       return 0;
3124     }
3125 }
3126
3127 /* Look for a function to take ARGS.  Find the best match from among
3128    the overloaded methods or functions given by METHODS or FUNCTIONS
3129    or XMETHODS, respectively.  One, and only one of METHODS, FUNCTIONS
3130    and XMETHODS can be non-NULL.
3131
3132    NUM_FNS is the length of the array pointed at by METHODS, FUNCTIONS
3133    or XMETHODS, whichever is non-NULL.
3134
3135    Return the index of the best match; store an indication of the
3136    quality of the match in OLOAD_CHAMP_BV.  */
3137
3138 static int
3139 find_oload_champ (gdb::array_view<value *> args,
3140                   size_t num_fns,
3141                   fn_field *methods,
3142                   xmethod_worker_up *xmethods,
3143                   symbol **functions,
3144                   badness_vector *oload_champ_bv)
3145 {
3146   /* A measure of how good an overloaded instance is.  */
3147   badness_vector bv;
3148   /* Index of best overloaded function.  */
3149   int oload_champ = -1;
3150   /* Current ambiguity state for overload resolution.  */
3151   int oload_ambiguous = 0;
3152   /* 0 => no ambiguity, 1 => two good funcs, 2 => incomparable funcs.  */
3153
3154   /* A champion can be found among methods alone, or among functions
3155      alone, or in xmethods alone, but not in more than one of these
3156      groups.  */
3157   gdb_assert ((methods != NULL) + (functions != NULL) + (xmethods != NULL)
3158               == 1);
3159
3160   /* Consider each candidate in turn.  */
3161   for (size_t ix = 0; ix < num_fns; ix++)
3162     {
3163       int jj;
3164       int static_offset = 0;
3165       std::vector<type *> parm_types;
3166
3167       if (xmethods != NULL)
3168         parm_types = xmethods[ix]->get_arg_types ();
3169       else
3170         {
3171           size_t nparms;
3172
3173           if (methods != NULL)
3174             {
3175               nparms = TYPE_FN_FIELD_TYPE (methods, ix)->num_fields ();
3176               static_offset = oload_method_static_p (methods, ix);
3177             }
3178           else
3179             nparms = SYMBOL_TYPE (functions[ix])->num_fields ();
3180
3181           parm_types.reserve (nparms);
3182           for (jj = 0; jj < nparms; jj++)
3183             {
3184               type *t = (methods != NULL
3185                          ? (TYPE_FN_FIELD_ARGS (methods, ix)[jj].type ())
3186                          : SYMBOL_TYPE (functions[ix])->field (jj).type ());
3187               parm_types.push_back (t);
3188             }
3189         }
3190
3191       /* Compare parameter types to supplied argument types.  Skip
3192          THIS for static methods.  */
3193       bv = rank_function (parm_types,
3194                           args.slice (static_offset));
3195
3196       if (overload_debug)
3197         {
3198           if (methods != NULL)
3199             fprintf_filtered (gdb_stderr,
3200                               "Overloaded method instance %s, # of parms %d\n",
3201                               methods[ix].physname, (int) parm_types.size ());
3202           else if (xmethods != NULL)
3203             fprintf_filtered (gdb_stderr,
3204                               "Xmethod worker, # of parms %d\n",
3205                               (int) parm_types.size ());
3206           else
3207             fprintf_filtered (gdb_stderr,
3208                               "Overloaded function instance "
3209                               "%s # of parms %d\n",
3210                               functions[ix]->demangled_name (),
3211                               (int) parm_types.size ());
3212
3213           fprintf_filtered (gdb_stderr,
3214                             "...Badness of length : {%d, %d}\n",
3215                             bv[0].rank, bv[0].subrank);
3216
3217           for (jj = 1; jj < bv.size (); jj++)
3218             fprintf_filtered (gdb_stderr,
3219                               "...Badness of arg %d : {%d, %d}\n",
3220                               jj, bv[jj].rank, bv[jj].subrank);
3221         }
3222
3223       if (oload_champ_bv->empty ())
3224         {
3225           *oload_champ_bv = std::move (bv);
3226           oload_champ = 0;
3227         }
3228       else /* See whether current candidate is better or worse than
3229               previous best.  */
3230         switch (compare_badness (bv, *oload_champ_bv))
3231           {
3232           case 0:               /* Top two contenders are equally good.  */
3233             oload_ambiguous = 1;
3234             break;
3235           case 1:               /* Incomparable top contenders.  */
3236             oload_ambiguous = 2;
3237             break;
3238           case 2:               /* New champion, record details.  */
3239             *oload_champ_bv = std::move (bv);
3240             oload_ambiguous = 0;
3241             oload_champ = ix;
3242             break;
3243           case 3:
3244           default:
3245             break;
3246           }
3247       if (overload_debug)
3248         fprintf_filtered (gdb_stderr, "Overload resolution "
3249                           "champion is %d, ambiguous? %d\n",
3250                           oload_champ, oload_ambiguous);
3251     }
3252
3253   return oload_champ;
3254 }
3255
3256 /* Return 1 if we're looking at a static method, 0 if we're looking at
3257    a non-static method or a function that isn't a method.  */
3258
3259 static int
3260 oload_method_static_p (struct fn_field *fns_ptr, int index)
3261 {
3262   if (fns_ptr && index >= 0 && TYPE_FN_FIELD_STATIC_P (fns_ptr, index))
3263     return 1;
3264   else
3265     return 0;
3266 }
3267
3268 /* Check how good an overload match OLOAD_CHAMP_BV represents.  */
3269
3270 static enum oload_classification
3271 classify_oload_match (const badness_vector &oload_champ_bv,
3272                       int nargs,
3273                       int static_offset)
3274 {
3275   int ix;
3276   enum oload_classification worst = STANDARD;
3277
3278   for (ix = 1; ix <= nargs - static_offset; ix++)
3279     {
3280       /* If this conversion is as bad as INCOMPATIBLE_TYPE_BADNESS
3281          or worse return INCOMPATIBLE.  */
3282       if (compare_ranks (oload_champ_bv[ix],
3283                          INCOMPATIBLE_TYPE_BADNESS) <= 0)
3284         return INCOMPATIBLE;    /* Truly mismatched types.  */
3285       /* Otherwise If this conversion is as bad as
3286          NS_POINTER_CONVERSION_BADNESS or worse return NON_STANDARD.  */
3287       else if (compare_ranks (oload_champ_bv[ix],
3288                               NS_POINTER_CONVERSION_BADNESS) <= 0)
3289         worst = NON_STANDARD;   /* Non-standard type conversions
3290                                    needed.  */
3291     }
3292
3293   /* If no INCOMPATIBLE classification was found, return the worst one
3294      that was found (if any).  */
3295   return worst;
3296 }
3297
3298 /* C++: return 1 is NAME is a legitimate name for the destructor of
3299    type TYPE.  If TYPE does not have a destructor, or if NAME is
3300    inappropriate for TYPE, an error is signaled.  Parameter TYPE should not yet
3301    have CHECK_TYPEDEF applied, this function will apply it itself.  */
3302
3303 int
3304 destructor_name_p (const char *name, struct type *type)
3305 {
3306   if (name[0] == '~')
3307     {
3308       const char *dname = type_name_or_error (type);
3309       const char *cp = strchr (dname, '<');
3310       unsigned int len;
3311
3312       /* Do not compare the template part for template classes.  */
3313       if (cp == NULL)
3314         len = strlen (dname);
3315       else
3316         len = cp - dname;
3317       if (strlen (name + 1) != len || strncmp (dname, name + 1, len) != 0)
3318         error (_("name of destructor must equal name of class"));
3319       else
3320         return 1;
3321     }
3322   return 0;
3323 }
3324
3325 /* Find an enum constant named NAME in TYPE.  TYPE must be an "enum
3326    class".  If the name is found, return a value representing it;
3327    otherwise throw an exception.  */
3328
3329 static struct value *
3330 enum_constant_from_type (struct type *type, const char *name)
3331 {
3332   int i;
3333   int name_len = strlen (name);
3334
3335   gdb_assert (type->code () == TYPE_CODE_ENUM
3336               && type->is_declared_class ());
3337
3338   for (i = TYPE_N_BASECLASSES (type); i < type->num_fields (); ++i)
3339     {
3340       const char *fname = type->field (i).name ();
3341       int len;
3342
3343       if (TYPE_FIELD_LOC_KIND (type, i) != FIELD_LOC_KIND_ENUMVAL
3344           || fname == NULL)
3345         continue;
3346
3347       /* Look for the trailing "::NAME", since enum class constant
3348          names are qualified here.  */
3349       len = strlen (fname);
3350       if (len + 2 >= name_len
3351           && fname[len - name_len - 2] == ':'
3352           && fname[len - name_len - 1] == ':'
3353           && strcmp (&fname[len - name_len], name) == 0)
3354         return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, i));
3355     }
3356
3357   error (_("no constant named \"%s\" in enum \"%s\""),
3358          name, type->name ());
3359 }
3360
3361 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
3362    return the appropriate member (or the address of the member, if
3363    WANT_ADDRESS).  This function is used to resolve user expressions
3364    of the form "DOMAIN::NAME".  For more details on what happens, see
3365    the comment before value_struct_elt_for_reference.  */
3366
3367 struct value *
3368 value_aggregate_elt (struct type *curtype, const char *name,
3369                      struct type *expect_type, int want_address,
3370                      enum noside noside)
3371 {
3372   switch (curtype->code ())
3373     {
3374     case TYPE_CODE_STRUCT:
3375     case TYPE_CODE_UNION:
3376       return value_struct_elt_for_reference (curtype, 0, curtype, 
3377                                              name, expect_type,
3378                                              want_address, noside);
3379     case TYPE_CODE_NAMESPACE:
3380       return value_namespace_elt (curtype, name, 
3381                                   want_address, noside);
3382
3383     case TYPE_CODE_ENUM:
3384       return enum_constant_from_type (curtype, name);
3385
3386     default:
3387       internal_error (__FILE__, __LINE__,
3388                       _("non-aggregate type in value_aggregate_elt"));
3389     }
3390 }
3391
3392 /* Compares the two method/function types T1 and T2 for "equality" 
3393    with respect to the methods' parameters.  If the types of the
3394    two parameter lists are the same, returns 1; 0 otherwise.  This
3395    comparison may ignore any artificial parameters in T1 if
3396    SKIP_ARTIFICIAL is non-zero.  This function will ALWAYS skip
3397    the first artificial parameter in T1, assumed to be a 'this' pointer.
3398
3399    The type T2 is expected to have come from make_params (in eval.c).  */
3400
3401 static int
3402 compare_parameters (struct type *t1, struct type *t2, int skip_artificial)
3403 {
3404   int start = 0;
3405
3406   if (t1->num_fields () > 0 && TYPE_FIELD_ARTIFICIAL (t1, 0))
3407     ++start;
3408
3409   /* If skipping artificial fields, find the first real field
3410      in T1.  */
3411   if (skip_artificial)
3412     {
3413       while (start < t1->num_fields ()
3414              && TYPE_FIELD_ARTIFICIAL (t1, start))
3415         ++start;
3416     }
3417
3418   /* Now compare parameters.  */
3419
3420   /* Special case: a method taking void.  T1 will contain no
3421      non-artificial fields, and T2 will contain TYPE_CODE_VOID.  */
3422   if ((t1->num_fields () - start) == 0 && t2->num_fields () == 1
3423       && t2->field (0).type ()->code () == TYPE_CODE_VOID)
3424     return 1;
3425
3426   if ((t1->num_fields () - start) == t2->num_fields ())
3427     {
3428       int i;
3429
3430       for (i = 0; i < t2->num_fields (); ++i)
3431         {
3432           if (compare_ranks (rank_one_type (t1->field (start + i).type (),
3433                                             t2->field (i).type (), NULL),
3434                              EXACT_MATCH_BADNESS) != 0)
3435             return 0;
3436         }
3437
3438       return 1;
3439     }
3440
3441   return 0;
3442 }
3443
3444 /* C++: Given an aggregate type VT, and a class type CLS, search
3445    recursively for CLS using value V; If found, store the offset
3446    which is either fetched from the virtual base pointer if CLS
3447    is virtual or accumulated offset of its parent classes if
3448    CLS is non-virtual in *BOFFS, set ISVIRT to indicate if CLS
3449    is virtual, and return true.  If not found, return false.  */
3450
3451 static bool
3452 get_baseclass_offset (struct type *vt, struct type *cls,
3453                       struct value *v, int *boffs, bool *isvirt)
3454 {
3455   for (int i = 0; i < TYPE_N_BASECLASSES (vt); i++)
3456     {
3457       struct type *t = vt->field (i).type ();
3458       if (types_equal (t, cls))
3459         {
3460           if (BASETYPE_VIA_VIRTUAL (vt, i))
3461             {
3462               const gdb_byte *adr = value_contents_for_printing (v);
3463               *boffs = baseclass_offset (vt, i, adr, value_offset (v),
3464                                          value_as_long (v), v);
3465               *isvirt = true;
3466             }
3467           else
3468             *isvirt = false;
3469           return true;
3470         }
3471
3472       if (get_baseclass_offset (check_typedef (t), cls, v, boffs, isvirt))
3473         {
3474           if (*isvirt == false) /* Add non-virtual base offset.  */
3475             {
3476               const gdb_byte *adr = value_contents_for_printing (v);
3477               *boffs += baseclass_offset (vt, i, adr, value_offset (v),
3478                                           value_as_long (v), v);
3479             }
3480           return true;
3481         }
3482     }
3483
3484   return false;
3485 }
3486
3487 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
3488    return the address of this member as a "pointer to member" type.
3489    If INTYPE is non-null, then it will be the type of the member we
3490    are looking for.  This will help us resolve "pointers to member
3491    functions".  This function is used to resolve user expressions of
3492    the form "DOMAIN::NAME".  */
3493
3494 static struct value *
3495 value_struct_elt_for_reference (struct type *domain, int offset,
3496                                 struct type *curtype, const char *name,
3497                                 struct type *intype, 
3498                                 int want_address,
3499                                 enum noside noside)
3500 {
3501   struct type *t = check_typedef (curtype);
3502   int i;
3503   struct value *result;
3504
3505   if (t->code () != TYPE_CODE_STRUCT
3506       && t->code () != TYPE_CODE_UNION)
3507     error (_("Internal error: non-aggregate type "
3508              "to value_struct_elt_for_reference"));
3509
3510   for (i = t->num_fields () - 1; i >= TYPE_N_BASECLASSES (t); i--)
3511     {
3512       const char *t_field_name = t->field (i).name ();
3513
3514       if (t_field_name && strcmp (t_field_name, name) == 0)
3515         {
3516           if (field_is_static (&t->field (i)))
3517             {
3518               struct value *v = value_static_field (t, i);
3519               if (want_address)
3520                 v = value_addr (v);
3521               return v;
3522             }
3523           if (TYPE_FIELD_PACKED (t, i))
3524             error (_("pointers to bitfield members not allowed"));
3525
3526           if (want_address)
3527             return value_from_longest
3528               (lookup_memberptr_type (t->field (i).type (), domain),
3529                offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
3530           else if (noside != EVAL_NORMAL)
3531             return allocate_value (t->field (i).type ());
3532           else
3533             {
3534               /* Try to evaluate NAME as a qualified name with implicit
3535                  this pointer.  In this case, attempt to return the
3536                  equivalent to `this->*(&TYPE::NAME)'.  */
3537               struct value *v = value_of_this_silent (current_language);
3538               if (v != NULL)
3539                 {
3540                   struct value *ptr, *this_v = v;
3541                   long mem_offset;
3542                   struct type *type, *tmp;
3543
3544                   ptr = value_aggregate_elt (domain, name, NULL, 1, noside);
3545                   type = check_typedef (value_type (ptr));
3546                   gdb_assert (type != NULL
3547                               && type->code () == TYPE_CODE_MEMBERPTR);
3548                   tmp = lookup_pointer_type (TYPE_SELF_TYPE (type));
3549                   v = value_cast_pointers (tmp, v, 1);
3550                   mem_offset = value_as_long (ptr);
3551                   if (domain != curtype)
3552                     {
3553                       /* Find class offset of type CURTYPE from either its
3554                          parent type DOMAIN or the type of implied this.  */
3555                       int boff = 0;
3556                       bool isvirt = false;
3557                       if (get_baseclass_offset (domain, curtype, v, &boff,
3558                                                 &isvirt))
3559                         mem_offset += boff;
3560                       else
3561                         {
3562                           struct type *p = check_typedef (value_type (this_v));
3563                           p = check_typedef (TYPE_TARGET_TYPE (p));
3564                           if (get_baseclass_offset (p, curtype, this_v,
3565                                                     &boff, &isvirt))
3566                             mem_offset += boff;
3567                         }
3568                     }
3569                   tmp = lookup_pointer_type (TYPE_TARGET_TYPE (type));
3570                   result = value_from_pointer (tmp,
3571                                                value_as_long (v) + mem_offset);
3572                   return value_ind (result);
3573                 }
3574
3575               error (_("Cannot reference non-static field \"%s\""), name);
3576             }
3577         }
3578     }
3579
3580   /* C++: If it was not found as a data field, then try to return it
3581      as a pointer to a method.  */
3582
3583   /* Perform all necessary dereferencing.  */
3584   while (intype && intype->code () == TYPE_CODE_PTR)
3585     intype = TYPE_TARGET_TYPE (intype);
3586
3587   for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
3588     {
3589       const char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
3590
3591       if (t_field_name && strcmp (t_field_name, name) == 0)
3592         {
3593           int j;
3594           int len = TYPE_FN_FIELDLIST_LENGTH (t, i);
3595           struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
3596
3597           check_stub_method_group (t, i);
3598
3599           if (intype)
3600             {
3601               for (j = 0; j < len; ++j)
3602                 {
3603                   if (TYPE_CONST (intype) != TYPE_FN_FIELD_CONST (f, j))
3604                     continue;
3605                   if (TYPE_VOLATILE (intype) != TYPE_FN_FIELD_VOLATILE (f, j))
3606                     continue;
3607
3608                   if (compare_parameters (TYPE_FN_FIELD_TYPE (f, j), intype, 0)
3609                       || compare_parameters (TYPE_FN_FIELD_TYPE (f, j),
3610                                              intype, 1))
3611                     break;
3612                 }
3613
3614               if (j == len)
3615                 error (_("no member function matches "
3616                          "that type instantiation"));
3617             }
3618           else
3619             {
3620               int ii;
3621
3622               j = -1;
3623               for (ii = 0; ii < len; ++ii)
3624                 {
3625                   /* Skip artificial methods.  This is necessary if,
3626                      for example, the user wants to "print
3627                      subclass::subclass" with only one user-defined
3628                      constructor.  There is no ambiguity in this case.
3629                      We are careful here to allow artificial methods
3630                      if they are the unique result.  */
3631                   if (TYPE_FN_FIELD_ARTIFICIAL (f, ii))
3632                     {
3633                       if (j == -1)
3634                         j = ii;
3635                       continue;
3636                     }
3637
3638                   /* Desired method is ambiguous if more than one
3639                      method is defined.  */
3640                   if (j != -1 && !TYPE_FN_FIELD_ARTIFICIAL (f, j))
3641                     error (_("non-unique member `%s' requires "
3642                              "type instantiation"), name);
3643
3644                   j = ii;
3645                 }
3646
3647               if (j == -1)
3648                 error (_("no matching member function"));
3649             }
3650
3651           if (TYPE_FN_FIELD_STATIC_P (f, j))
3652             {
3653               struct symbol *s = 
3654                 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
3655                                0, VAR_DOMAIN, 0).symbol;
3656
3657               if (s == NULL)
3658                 return NULL;
3659
3660               if (want_address)
3661                 return value_addr (read_var_value (s, 0, 0));
3662               else
3663                 return read_var_value (s, 0, 0);
3664             }
3665
3666           if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
3667             {
3668               if (want_address)
3669                 {
3670                   result = allocate_value
3671                     (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
3672                   cplus_make_method_ptr (value_type (result),
3673                                          value_contents_writeable (result),
3674                                          TYPE_FN_FIELD_VOFFSET (f, j), 1);
3675                 }
3676               else if (noside == EVAL_AVOID_SIDE_EFFECTS)
3677                 return allocate_value (TYPE_FN_FIELD_TYPE (f, j));
3678               else
3679                 error (_("Cannot reference virtual member function \"%s\""),
3680                        name);
3681             }
3682           else
3683             {
3684               struct symbol *s = 
3685                 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
3686                                0, VAR_DOMAIN, 0).symbol;
3687
3688               if (s == NULL)
3689                 return NULL;
3690
3691               struct value *v = read_var_value (s, 0, 0);
3692               if (!want_address)
3693                 result = v;
3694               else
3695                 {
3696                   result = allocate_value (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
3697                   cplus_make_method_ptr (value_type (result),
3698                                          value_contents_writeable (result),
3699                                          value_address (v), 0);
3700                 }
3701             }
3702           return result;
3703         }
3704     }
3705   for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
3706     {
3707       struct value *v;
3708       int base_offset;
3709
3710       if (BASETYPE_VIA_VIRTUAL (t, i))
3711         base_offset = 0;
3712       else
3713         base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
3714       v = value_struct_elt_for_reference (domain,
3715                                           offset + base_offset,
3716                                           TYPE_BASECLASS (t, i),
3717                                           name, intype, 
3718                                           want_address, noside);
3719       if (v)
3720         return v;
3721     }
3722
3723   /* As a last chance, pretend that CURTYPE is a namespace, and look
3724      it up that way; this (frequently) works for types nested inside
3725      classes.  */
3726
3727   return value_maybe_namespace_elt (curtype, name, 
3728                                     want_address, noside);
3729 }
3730
3731 /* C++: Return the member NAME of the namespace given by the type
3732    CURTYPE.  */
3733
3734 static struct value *
3735 value_namespace_elt (const struct type *curtype,
3736                      const char *name, int want_address,
3737                      enum noside noside)
3738 {
3739   struct value *retval = value_maybe_namespace_elt (curtype, name,
3740                                                     want_address, 
3741                                                     noside);
3742
3743   if (retval == NULL)
3744     error (_("No symbol \"%s\" in namespace \"%s\"."), 
3745            name, curtype->name ());
3746
3747   return retval;
3748 }
3749
3750 /* A helper function used by value_namespace_elt and
3751    value_struct_elt_for_reference.  It looks up NAME inside the
3752    context CURTYPE; this works if CURTYPE is a namespace or if CURTYPE
3753    is a class and NAME refers to a type in CURTYPE itself (as opposed
3754    to, say, some base class of CURTYPE).  */
3755
3756 static struct value *
3757 value_maybe_namespace_elt (const struct type *curtype,
3758                            const char *name, int want_address,
3759                            enum noside noside)
3760 {
3761   const char *namespace_name = curtype->name ();
3762   struct block_symbol sym;
3763   struct value *result;
3764
3765   sym = cp_lookup_symbol_namespace (namespace_name, name,
3766                                     get_selected_block (0), VAR_DOMAIN);
3767
3768   if (sym.symbol == NULL)
3769     return NULL;
3770   else if ((noside == EVAL_AVOID_SIDE_EFFECTS)
3771            && (SYMBOL_CLASS (sym.symbol) == LOC_TYPEDEF))
3772     result = allocate_value (SYMBOL_TYPE (sym.symbol));
3773   else
3774     result = value_of_variable (sym.symbol, sym.block);
3775
3776   if (want_address)
3777     result = value_addr (result);
3778
3779   return result;
3780 }
3781
3782 /* Given a pointer or a reference value V, find its real (RTTI) type.
3783
3784    Other parameters FULL, TOP, USING_ENC as with value_rtti_type()
3785    and refer to the values computed for the object pointed to.  */
3786
3787 struct type *
3788 value_rtti_indirect_type (struct value *v, int *full, 
3789                           LONGEST *top, int *using_enc)
3790 {
3791   struct value *target = NULL;
3792   struct type *type, *real_type, *target_type;
3793
3794   type = value_type (v);
3795   type = check_typedef (type);
3796   if (TYPE_IS_REFERENCE (type))
3797     target = coerce_ref (v);
3798   else if (type->code () == TYPE_CODE_PTR)
3799     {
3800
3801       try
3802         {
3803           target = value_ind (v);
3804         }
3805       catch (const gdb_exception_error &except)
3806         {
3807           if (except.error == MEMORY_ERROR)
3808             {
3809               /* value_ind threw a memory error. The pointer is NULL or
3810                  contains an uninitialized value: we can't determine any
3811                  type.  */
3812               return NULL;
3813             }
3814           throw;
3815         }
3816     }
3817   else
3818     return NULL;
3819
3820   real_type = value_rtti_type (target, full, top, using_enc);
3821
3822   if (real_type)
3823     {
3824       /* Copy qualifiers to the referenced object.  */
3825       target_type = value_type (target);
3826       real_type = make_cv_type (TYPE_CONST (target_type),
3827                                 TYPE_VOLATILE (target_type), real_type, NULL);
3828       if (TYPE_IS_REFERENCE (type))
3829         real_type = lookup_reference_type (real_type, type->code ());
3830       else if (type->code () == TYPE_CODE_PTR)
3831         real_type = lookup_pointer_type (real_type);
3832       else
3833         internal_error (__FILE__, __LINE__, _("Unexpected value type."));
3834
3835       /* Copy qualifiers to the pointer/reference.  */
3836       real_type = make_cv_type (TYPE_CONST (type), TYPE_VOLATILE (type),
3837                                 real_type, NULL);
3838     }
3839
3840   return real_type;
3841 }
3842
3843 /* Given a value pointed to by ARGP, check its real run-time type, and
3844    if that is different from the enclosing type, create a new value
3845    using the real run-time type as the enclosing type (and of the same
3846    type as ARGP) and return it, with the embedded offset adjusted to
3847    be the correct offset to the enclosed object.  RTYPE is the type,
3848    and XFULL, XTOP, and XUSING_ENC are the other parameters, computed
3849    by value_rtti_type().  If these are available, they can be supplied
3850    and a second call to value_rtti_type() is avoided.  (Pass RTYPE ==
3851    NULL if they're not available.  */
3852
3853 struct value *
3854 value_full_object (struct value *argp, 
3855                    struct type *rtype, 
3856                    int xfull, int xtop,
3857                    int xusing_enc)
3858 {
3859   struct type *real_type;
3860   int full = 0;
3861   LONGEST top = -1;
3862   int using_enc = 0;
3863   struct value *new_val;
3864
3865   if (rtype)
3866     {
3867       real_type = rtype;
3868       full = xfull;
3869       top = xtop;
3870       using_enc = xusing_enc;
3871     }
3872   else
3873     real_type = value_rtti_type (argp, &full, &top, &using_enc);
3874
3875   /* If no RTTI data, or if object is already complete, do nothing.  */
3876   if (!real_type || real_type == value_enclosing_type (argp))
3877     return argp;
3878
3879   /* In a destructor we might see a real type that is a superclass of
3880      the object's type.  In this case it is better to leave the object
3881      as-is.  */
3882   if (full
3883       && TYPE_LENGTH (real_type) < TYPE_LENGTH (value_enclosing_type (argp)))
3884     return argp;
3885
3886   /* If we have the full object, but for some reason the enclosing
3887      type is wrong, set it.  */
3888   /* pai: FIXME -- sounds iffy */
3889   if (full)
3890     {
3891       argp = value_copy (argp);
3892       set_value_enclosing_type (argp, real_type);
3893       return argp;
3894     }
3895
3896   /* Check if object is in memory.  */
3897   if (VALUE_LVAL (argp) != lval_memory)
3898     {
3899       warning (_("Couldn't retrieve complete object of RTTI "
3900                  "type %s; object may be in register(s)."), 
3901                real_type->name ());
3902
3903       return argp;
3904     }
3905
3906   /* All other cases -- retrieve the complete object.  */
3907   /* Go back by the computed top_offset from the beginning of the
3908      object, adjusting for the embedded offset of argp if that's what
3909      value_rtti_type used for its computation.  */
3910   new_val = value_at_lazy (real_type, value_address (argp) - top +
3911                            (using_enc ? 0 : value_embedded_offset (argp)));
3912   deprecated_set_value_type (new_val, value_type (argp));
3913   set_value_embedded_offset (new_val, (using_enc
3914                                        ? top + value_embedded_offset (argp)
3915                                        : top));
3916   return new_val;
3917 }
3918
3919
3920 /* Return the value of the local variable, if one exists.  Throw error
3921    otherwise, such as if the request is made in an inappropriate context.  */
3922
3923 struct value *
3924 value_of_this (const struct language_defn *lang)
3925 {
3926   struct block_symbol sym;
3927   const struct block *b;
3928   struct frame_info *frame;
3929
3930   if (lang->name_of_this () == NULL)
3931     error (_("no `this' in current language"));
3932
3933   frame = get_selected_frame (_("no frame selected"));
3934
3935   b = get_frame_block (frame, NULL);
3936
3937   sym = lookup_language_this (lang, b);
3938   if (sym.symbol == NULL)
3939     error (_("current stack frame does not contain a variable named `%s'"),
3940            lang->name_of_this ());
3941
3942   return read_var_value (sym.symbol, sym.block, frame);
3943 }
3944
3945 /* Return the value of the local variable, if one exists.  Return NULL
3946    otherwise.  Never throw error.  */
3947
3948 struct value *
3949 value_of_this_silent (const struct language_defn *lang)
3950 {
3951   struct value *ret = NULL;
3952
3953   try
3954     {
3955       ret = value_of_this (lang);
3956     }
3957   catch (const gdb_exception_error &except)
3958     {
3959     }
3960
3961   return ret;
3962 }
3963
3964 /* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH
3965    elements long, starting at LOWBOUND.  The result has the same lower
3966    bound as the original ARRAY.  */
3967
3968 struct value *
3969 value_slice (struct value *array, int lowbound, int length)
3970 {
3971   struct type *slice_range_type, *slice_type, *range_type;
3972   LONGEST lowerbound, upperbound;
3973   struct value *slice;
3974   struct type *array_type;
3975
3976   array_type = check_typedef (value_type (array));
3977   if (array_type->code () != TYPE_CODE_ARRAY
3978       && array_type->code () != TYPE_CODE_STRING)
3979     error (_("cannot take slice of non-array"));
3980
3981   if (type_not_allocated (array_type))
3982     error (_("array not allocated"));
3983   if (type_not_associated (array_type))
3984     error (_("array not associated"));
3985
3986   range_type = array_type->index_type ();
3987   if (!get_discrete_bounds (range_type, &lowerbound, &upperbound))
3988     error (_("slice from bad array or bitstring"));
3989
3990   if (lowbound < lowerbound || length < 0
3991       || lowbound + length - 1 > upperbound)
3992     error (_("slice out of range"));
3993
3994   /* FIXME-type-allocation: need a way to free this type when we are
3995      done with it.  */
3996   slice_range_type = create_static_range_type (NULL,
3997                                                TYPE_TARGET_TYPE (range_type),
3998                                                lowbound,
3999                                                lowbound + length - 1);
4000
4001   {
4002     struct type *element_type = TYPE_TARGET_TYPE (array_type);
4003     LONGEST offset
4004       = (lowbound - lowerbound) * TYPE_LENGTH (check_typedef (element_type));
4005
4006     slice_type = create_array_type (NULL,
4007                                     element_type,
4008                                     slice_range_type);
4009     slice_type->set_code (array_type->code ());
4010
4011     if (VALUE_LVAL (array) == lval_memory && value_lazy (array))
4012       slice = allocate_value_lazy (slice_type);
4013     else
4014       {
4015         slice = allocate_value (slice_type);
4016         value_contents_copy (slice, 0, array, offset,
4017                              type_length_units (slice_type));
4018       }
4019
4020     set_value_component_location (slice, array);
4021     set_value_offset (slice, value_offset (array) + offset);
4022   }
4023
4024   return slice;
4025 }
4026
4027 /* See value.h.  */
4028
4029 struct value *
4030 value_literal_complex (struct value *arg1,
4031                        struct value *arg2,
4032                        struct type *type)
4033 {
4034   struct value *val;
4035   struct type *real_type = TYPE_TARGET_TYPE (type);
4036
4037   val = allocate_value (type);
4038   arg1 = value_cast (real_type, arg1);
4039   arg2 = value_cast (real_type, arg2);
4040
4041   memcpy (value_contents_raw (val),
4042           value_contents (arg1), TYPE_LENGTH (real_type));
4043   memcpy (value_contents_raw (val) + TYPE_LENGTH (real_type),
4044           value_contents (arg2), TYPE_LENGTH (real_type));
4045   return val;
4046 }
4047
4048 /* See value.h.  */
4049
4050 struct value *
4051 value_real_part (struct value *value)
4052 {
4053   struct type *type = check_typedef (value_type (value));
4054   struct type *ttype = TYPE_TARGET_TYPE (type);
4055
4056   gdb_assert (type->code () == TYPE_CODE_COMPLEX);
4057   return value_from_component (value, ttype, 0);
4058 }
4059
4060 /* See value.h.  */
4061
4062 struct value *
4063 value_imaginary_part (struct value *value)
4064 {
4065   struct type *type = check_typedef (value_type (value));
4066   struct type *ttype = TYPE_TARGET_TYPE (type);
4067
4068   gdb_assert (type->code () == TYPE_CODE_COMPLEX);
4069   return value_from_component (value, ttype,
4070                                TYPE_LENGTH (check_typedef (ttype)));
4071 }
4072
4073 /* Cast a value into the appropriate complex data type.  */
4074
4075 static struct value *
4076 cast_into_complex (struct type *type, struct value *val)
4077 {
4078   struct type *real_type = TYPE_TARGET_TYPE (type);
4079
4080   if (value_type (val)->code () == TYPE_CODE_COMPLEX)
4081     {
4082       struct type *val_real_type = TYPE_TARGET_TYPE (value_type (val));
4083       struct value *re_val = allocate_value (val_real_type);
4084       struct value *im_val = allocate_value (val_real_type);
4085
4086       memcpy (value_contents_raw (re_val),
4087               value_contents (val), TYPE_LENGTH (val_real_type));
4088       memcpy (value_contents_raw (im_val),
4089               value_contents (val) + TYPE_LENGTH (val_real_type),
4090               TYPE_LENGTH (val_real_type));
4091
4092       return value_literal_complex (re_val, im_val, type);
4093     }
4094   else if (value_type (val)->code () == TYPE_CODE_FLT
4095            || value_type (val)->code () == TYPE_CODE_INT)
4096     return value_literal_complex (val, 
4097                                   value_zero (real_type, not_lval), 
4098                                   type);
4099   else
4100     error (_("cannot cast non-number to complex"));
4101 }
4102
4103 void _initialize_valops ();
4104 void
4105 _initialize_valops ()
4106 {
4107   add_setshow_boolean_cmd ("overload-resolution", class_support,
4108                            &overload_resolution, _("\
4109 Set overload resolution in evaluating C++ functions."), _("\
4110 Show overload resolution in evaluating C++ functions."), 
4111                            NULL, NULL,
4112                            show_overload_resolution,
4113                            &setlist, &showlist);
4114   overload_resolution = 1;
4115 }
This page took 0.262538 seconds and 4 git commands to generate.