]> Git Repo - binutils.git/blob - gdb/valops.c
gdb: use gdb::optional instead of passing a pointer to gdb::array_view
[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 is in currently.
1201         
1202            We use VALUE_FRAME_ID for obtaining the value's frame id instead of
1203            VALUE_NEXT_FRAME_ID due to requiring a frame which may be passed to
1204            put_frame_register_bytes() below.  That function will (eventually)
1205            perform the necessary unwind operation by first obtaining the next
1206            frame.  */
1207         frame = frame_find_by_id (VALUE_FRAME_ID (toval));
1208
1209         value_reg = VALUE_REGNUM (toval);
1210
1211         if (!frame)
1212           error (_("Value being assigned to is no longer active."));
1213
1214         gdbarch = get_frame_arch (frame);
1215
1216         if (value_bitsize (toval))
1217           {
1218             struct value *parent = value_parent (toval);
1219             LONGEST offset = value_offset (parent) + value_offset (toval);
1220             size_t changed_len;
1221             gdb_byte buffer[sizeof (LONGEST)];
1222             int optim, unavail;
1223
1224             changed_len = (value_bitpos (toval)
1225                            + value_bitsize (toval)
1226                            + HOST_CHAR_BIT - 1)
1227                           / HOST_CHAR_BIT;
1228
1229             if (changed_len > sizeof (LONGEST))
1230               error (_("Can't handle bitfields which "
1231                        "don't fit in a %d bit word."),
1232                      (int) sizeof (LONGEST) * HOST_CHAR_BIT);
1233
1234             if (!get_frame_register_bytes (frame, value_reg, offset,
1235                                            {buffer, changed_len},
1236                                            &optim, &unavail))
1237               {
1238                 if (optim)
1239                   throw_error (OPTIMIZED_OUT_ERROR,
1240                                _("value has been optimized out"));
1241                 if (unavail)
1242                   throw_error (NOT_AVAILABLE_ERROR,
1243                                _("value is not available"));
1244               }
1245
1246             modify_field (type, buffer, value_as_long (fromval),
1247                           value_bitpos (toval), value_bitsize (toval));
1248
1249             put_frame_register_bytes (frame, value_reg, offset,
1250                                       {buffer, changed_len});
1251           }
1252         else
1253           {
1254             if (gdbarch_convert_register_p (gdbarch, VALUE_REGNUM (toval),
1255                                             type))
1256               {
1257                 /* If TOVAL is a special machine register requiring
1258                    conversion of program values to a special raw
1259                    format.  */
1260                 gdbarch_value_to_register (gdbarch, frame,
1261                                            VALUE_REGNUM (toval), type,
1262                                            value_contents (fromval));
1263               }
1264             else
1265               {
1266                 gdb::array_view<const gdb_byte> contents
1267                   = gdb::make_array_view (value_contents (fromval),
1268                                           TYPE_LENGTH (type));
1269                 put_frame_register_bytes (frame, value_reg,
1270                                           value_offset (toval),
1271                                           contents);
1272               }
1273           }
1274
1275         gdb::observers::register_changed.notify (frame, value_reg);
1276         break;
1277       }
1278
1279     case lval_computed:
1280       {
1281         const struct lval_funcs *funcs = value_computed_funcs (toval);
1282
1283         if (funcs->write != NULL)
1284           {
1285             funcs->write (toval, fromval);
1286             break;
1287           }
1288       }
1289       /* Fall through.  */
1290
1291     default:
1292       error (_("Left operand of assignment is not an lvalue."));
1293     }
1294
1295   /* Assigning to the stack pointer, frame pointer, and other
1296      (architecture and calling convention specific) registers may
1297      cause the frame cache and regcache to be out of date.  Assigning to memory
1298      also can.  We just do this on all assignments to registers or
1299      memory, for simplicity's sake; I doubt the slowdown matters.  */
1300   switch (VALUE_LVAL (toval))
1301     {
1302     case lval_memory:
1303     case lval_register:
1304     case lval_computed:
1305
1306       gdb::observers::target_changed.notify
1307         (current_inferior ()->top_target ());
1308
1309       /* Having destroyed the frame cache, restore the selected
1310          frame.  */
1311
1312       /* FIXME: cagney/2002-11-02: There has to be a better way of
1313          doing this.  Instead of constantly saving/restoring the
1314          frame.  Why not create a get_selected_frame() function that,
1315          having saved the selected frame's ID can automatically
1316          re-find the previously selected frame automatically.  */
1317
1318       {
1319         struct frame_info *fi = frame_find_by_id (old_frame);
1320
1321         if (fi != NULL)
1322           select_frame (fi);
1323       }
1324
1325       break;
1326     default:
1327       break;
1328     }
1329   
1330   /* If the field does not entirely fill a LONGEST, then zero the sign
1331      bits.  If the field is signed, and is negative, then sign
1332      extend.  */
1333   if ((value_bitsize (toval) > 0)
1334       && (value_bitsize (toval) < 8 * (int) sizeof (LONGEST)))
1335     {
1336       LONGEST fieldval = value_as_long (fromval);
1337       LONGEST valmask = (((ULONGEST) 1) << value_bitsize (toval)) - 1;
1338
1339       fieldval &= valmask;
1340       if (!type->is_unsigned () 
1341           && (fieldval & (valmask ^ (valmask >> 1))))
1342         fieldval |= ~valmask;
1343
1344       fromval = value_from_longest (type, fieldval);
1345     }
1346
1347   /* The return value is a copy of TOVAL so it shares its location
1348      information, but its contents are updated from FROMVAL.  This
1349      implies the returned value is not lazy, even if TOVAL was.  */
1350   val = value_copy (toval);
1351   set_value_lazy (val, 0);
1352   memcpy (value_contents_raw (val), value_contents (fromval),
1353           TYPE_LENGTH (type));
1354
1355   /* We copy over the enclosing type and pointed-to offset from FROMVAL
1356      in the case of pointer types.  For object types, the enclosing type
1357      and embedded offset must *not* be copied: the target object refered
1358      to by TOVAL retains its original dynamic type after assignment.  */
1359   if (type->code () == TYPE_CODE_PTR)
1360     {
1361       set_value_enclosing_type (val, value_enclosing_type (fromval));
1362       set_value_pointed_to_offset (val, value_pointed_to_offset (fromval));
1363     }
1364
1365   return val;
1366 }
1367
1368 /* Extend a value ARG1 to COUNT repetitions of its type.  */
1369
1370 struct value *
1371 value_repeat (struct value *arg1, int count)
1372 {
1373   struct value *val;
1374
1375   if (VALUE_LVAL (arg1) != lval_memory)
1376     error (_("Only values in memory can be extended with '@'."));
1377   if (count < 1)
1378     error (_("Invalid number %d of repetitions."), count);
1379
1380   val = allocate_repeat_value (value_enclosing_type (arg1), count);
1381
1382   VALUE_LVAL (val) = lval_memory;
1383   set_value_address (val, value_address (arg1));
1384
1385   read_value_memory (val, 0, value_stack (val), value_address (val),
1386                      value_contents_all_raw (val),
1387                      type_length_units (value_enclosing_type (val)));
1388
1389   return val;
1390 }
1391
1392 struct value *
1393 value_of_variable (struct symbol *var, const struct block *b)
1394 {
1395   struct frame_info *frame = NULL;
1396
1397   if (symbol_read_needs_frame (var))
1398     frame = get_selected_frame (_("No frame selected."));
1399
1400   return read_var_value (var, b, frame);
1401 }
1402
1403 struct value *
1404 address_of_variable (struct symbol *var, const struct block *b)
1405 {
1406   struct type *type = SYMBOL_TYPE (var);
1407   struct value *val;
1408
1409   /* Evaluate it first; if the result is a memory address, we're fine.
1410      Lazy evaluation pays off here.  */
1411
1412   val = value_of_variable (var, b);
1413   type = value_type (val);
1414
1415   if ((VALUE_LVAL (val) == lval_memory && value_lazy (val))
1416       || type->code () == TYPE_CODE_FUNC)
1417     {
1418       CORE_ADDR addr = value_address (val);
1419
1420       return value_from_pointer (lookup_pointer_type (type), addr);
1421     }
1422
1423   /* Not a memory address; check what the problem was.  */
1424   switch (VALUE_LVAL (val))
1425     {
1426     case lval_register:
1427       {
1428         struct frame_info *frame;
1429         const char *regname;
1430
1431         frame = frame_find_by_id (VALUE_NEXT_FRAME_ID (val));
1432         gdb_assert (frame);
1433
1434         regname = gdbarch_register_name (get_frame_arch (frame),
1435                                          VALUE_REGNUM (val));
1436         gdb_assert (regname && *regname);
1437
1438         error (_("Address requested for identifier "
1439                  "\"%s\" which is in register $%s"),
1440                var->print_name (), regname);
1441         break;
1442       }
1443
1444     default:
1445       error (_("Can't take address of \"%s\" which isn't an lvalue."),
1446              var->print_name ());
1447       break;
1448     }
1449
1450   return val;
1451 }
1452
1453 /* See value.h.  */
1454
1455 bool
1456 value_must_coerce_to_target (struct value *val)
1457 {
1458   struct type *valtype;
1459
1460   /* The only lval kinds which do not live in target memory.  */
1461   if (VALUE_LVAL (val) != not_lval
1462       && VALUE_LVAL (val) != lval_internalvar
1463       && VALUE_LVAL (val) != lval_xcallable)
1464     return false;
1465
1466   valtype = check_typedef (value_type (val));
1467
1468   switch (valtype->code ())
1469     {
1470     case TYPE_CODE_ARRAY:
1471       return valtype->is_vector () ? 0 : 1;
1472     case TYPE_CODE_STRING:
1473       return true;
1474     default:
1475       return false;
1476     }
1477 }
1478
1479 /* Make sure that VAL lives in target memory if it's supposed to.  For
1480    instance, strings are constructed as character arrays in GDB's
1481    storage, and this function copies them to the target.  */
1482
1483 struct value *
1484 value_coerce_to_target (struct value *val)
1485 {
1486   LONGEST length;
1487   CORE_ADDR addr;
1488
1489   if (!value_must_coerce_to_target (val))
1490     return val;
1491
1492   length = TYPE_LENGTH (check_typedef (value_type (val)));
1493   addr = allocate_space_in_inferior (length);
1494   write_memory (addr, value_contents (val), length);
1495   return value_at_lazy (value_type (val), addr);
1496 }
1497
1498 /* Given a value which is an array, return a value which is a pointer
1499    to its first element, regardless of whether or not the array has a
1500    nonzero lower bound.
1501
1502    FIXME: A previous comment here indicated that this routine should
1503    be substracting the array's lower bound.  It's not clear to me that
1504    this is correct.  Given an array subscripting operation, it would
1505    certainly work to do the adjustment here, essentially computing:
1506
1507    (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
1508
1509    However I believe a more appropriate and logical place to account
1510    for the lower bound is to do so in value_subscript, essentially
1511    computing:
1512
1513    (&array[0] + ((index - lowerbound) * sizeof array[0]))
1514
1515    As further evidence consider what would happen with operations
1516    other than array subscripting, where the caller would get back a
1517    value that had an address somewhere before the actual first element
1518    of the array, and the information about the lower bound would be
1519    lost because of the coercion to pointer type.  */
1520
1521 struct value *
1522 value_coerce_array (struct value *arg1)
1523 {
1524   struct type *type = check_typedef (value_type (arg1));
1525
1526   /* If the user tries to do something requiring a pointer with an
1527      array that has not yet been pushed to the target, then this would
1528      be a good time to do so.  */
1529   arg1 = value_coerce_to_target (arg1);
1530
1531   if (VALUE_LVAL (arg1) != lval_memory)
1532     error (_("Attempt to take address of value not located in memory."));
1533
1534   return value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
1535                              value_address (arg1));
1536 }
1537
1538 /* Given a value which is a function, return a value which is a pointer
1539    to it.  */
1540
1541 struct value *
1542 value_coerce_function (struct value *arg1)
1543 {
1544   struct value *retval;
1545
1546   if (VALUE_LVAL (arg1) != lval_memory)
1547     error (_("Attempt to take address of value not located in memory."));
1548
1549   retval = value_from_pointer (lookup_pointer_type (value_type (arg1)),
1550                                value_address (arg1));
1551   return retval;
1552 }
1553
1554 /* Return a pointer value for the object for which ARG1 is the
1555    contents.  */
1556
1557 struct value *
1558 value_addr (struct value *arg1)
1559 {
1560   struct value *arg2;
1561   struct type *type = check_typedef (value_type (arg1));
1562
1563   if (TYPE_IS_REFERENCE (type))
1564     {
1565       if (value_bits_synthetic_pointer (arg1, value_embedded_offset (arg1),
1566           TARGET_CHAR_BIT * TYPE_LENGTH (type)))
1567         arg1 = coerce_ref (arg1);
1568       else
1569         {
1570           /* Copy the value, but change the type from (T&) to (T*).  We
1571              keep the same location information, which is efficient, and
1572              allows &(&X) to get the location containing the reference.
1573              Do the same to its enclosing type for consistency.  */
1574           struct type *type_ptr
1575             = lookup_pointer_type (TYPE_TARGET_TYPE (type));
1576           struct type *enclosing_type
1577             = check_typedef (value_enclosing_type (arg1));
1578           struct type *enclosing_type_ptr
1579             = lookup_pointer_type (TYPE_TARGET_TYPE (enclosing_type));
1580
1581           arg2 = value_copy (arg1);
1582           deprecated_set_value_type (arg2, type_ptr);
1583           set_value_enclosing_type (arg2, enclosing_type_ptr);
1584
1585           return arg2;
1586         }
1587     }
1588   if (type->code () == TYPE_CODE_FUNC)
1589     return value_coerce_function (arg1);
1590
1591   /* If this is an array that has not yet been pushed to the target,
1592      then this would be a good time to force it to memory.  */
1593   arg1 = value_coerce_to_target (arg1);
1594
1595   if (VALUE_LVAL (arg1) != lval_memory)
1596     error (_("Attempt to take address of value not located in memory."));
1597
1598   /* Get target memory address.  */
1599   arg2 = value_from_pointer (lookup_pointer_type (value_type (arg1)),
1600                              (value_address (arg1)
1601                               + value_embedded_offset (arg1)));
1602
1603   /* This may be a pointer to a base subobject; so remember the
1604      full derived object's type ...  */
1605   set_value_enclosing_type (arg2,
1606                             lookup_pointer_type (value_enclosing_type (arg1)));
1607   /* ... and also the relative position of the subobject in the full
1608      object.  */
1609   set_value_pointed_to_offset (arg2, value_embedded_offset (arg1));
1610   return arg2;
1611 }
1612
1613 /* Return a reference value for the object for which ARG1 is the
1614    contents.  */
1615
1616 struct value *
1617 value_ref (struct value *arg1, enum type_code refcode)
1618 {
1619   struct value *arg2;
1620   struct type *type = check_typedef (value_type (arg1));
1621
1622   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
1623
1624   if ((type->code () == TYPE_CODE_REF
1625        || type->code () == TYPE_CODE_RVALUE_REF)
1626       && type->code () == refcode)
1627     return arg1;
1628
1629   arg2 = value_addr (arg1);
1630   deprecated_set_value_type (arg2, lookup_reference_type (type, refcode));
1631   return arg2;
1632 }
1633
1634 /* Given a value of a pointer type, apply the C unary * operator to
1635    it.  */
1636
1637 struct value *
1638 value_ind (struct value *arg1)
1639 {
1640   struct type *base_type;
1641   struct value *arg2;
1642
1643   arg1 = coerce_array (arg1);
1644
1645   base_type = check_typedef (value_type (arg1));
1646
1647   if (VALUE_LVAL (arg1) == lval_computed)
1648     {
1649       const struct lval_funcs *funcs = value_computed_funcs (arg1);
1650
1651       if (funcs->indirect)
1652         {
1653           struct value *result = funcs->indirect (arg1);
1654
1655           if (result)
1656             return result;
1657         }
1658     }
1659
1660   if (base_type->code () == TYPE_CODE_PTR)
1661     {
1662       struct type *enc_type;
1663
1664       /* We may be pointing to something embedded in a larger object.
1665          Get the real type of the enclosing object.  */
1666       enc_type = check_typedef (value_enclosing_type (arg1));
1667       enc_type = TYPE_TARGET_TYPE (enc_type);
1668
1669       CORE_ADDR base_addr;
1670       if (check_typedef (enc_type)->code () == TYPE_CODE_FUNC
1671           || check_typedef (enc_type)->code () == TYPE_CODE_METHOD)
1672         {
1673           /* For functions, go through find_function_addr, which knows
1674              how to handle function descriptors.  */
1675           base_addr = find_function_addr (arg1, NULL);
1676         }
1677       else
1678         {
1679           /* Retrieve the enclosing object pointed to.  */
1680           base_addr = (value_as_address (arg1)
1681                        - value_pointed_to_offset (arg1));
1682         }
1683       arg2 = value_at_lazy (enc_type, base_addr);
1684       enc_type = value_type (arg2);
1685       return readjust_indirect_value_type (arg2, enc_type, base_type,
1686                                            arg1, base_addr);
1687     }
1688
1689   error (_("Attempt to take contents of a non-pointer value."));
1690 }
1691 \f
1692 /* Create a value for an array by allocating space in GDB, copying the
1693    data into that space, and then setting up an array value.
1694
1695    The array bounds are set from LOWBOUND and HIGHBOUND, and the array
1696    is populated from the values passed in ELEMVEC.
1697
1698    The element type of the array is inherited from the type of the
1699    first element, and all elements must have the same size (though we
1700    don't currently enforce any restriction on their types).  */
1701
1702 struct value *
1703 value_array (int lowbound, int highbound, struct value **elemvec)
1704 {
1705   int nelem;
1706   int idx;
1707   ULONGEST typelength;
1708   struct value *val;
1709   struct type *arraytype;
1710
1711   /* Validate that the bounds are reasonable and that each of the
1712      elements have the same size.  */
1713
1714   nelem = highbound - lowbound + 1;
1715   if (nelem <= 0)
1716     {
1717       error (_("bad array bounds (%d, %d)"), lowbound, highbound);
1718     }
1719   typelength = type_length_units (value_enclosing_type (elemvec[0]));
1720   for (idx = 1; idx < nelem; idx++)
1721     {
1722       if (type_length_units (value_enclosing_type (elemvec[idx]))
1723           != typelength)
1724         {
1725           error (_("array elements must all be the same size"));
1726         }
1727     }
1728
1729   arraytype = lookup_array_range_type (value_enclosing_type (elemvec[0]),
1730                                        lowbound, highbound);
1731
1732   if (!current_language->c_style_arrays_p ())
1733     {
1734       val = allocate_value (arraytype);
1735       for (idx = 0; idx < nelem; idx++)
1736         value_contents_copy (val, idx * typelength, elemvec[idx], 0,
1737                              typelength);
1738       return val;
1739     }
1740
1741   /* Allocate space to store the array, and then initialize it by
1742      copying in each element.  */
1743
1744   val = allocate_value (arraytype);
1745   for (idx = 0; idx < nelem; idx++)
1746     value_contents_copy (val, idx * typelength, elemvec[idx], 0, typelength);
1747   return val;
1748 }
1749
1750 struct value *
1751 value_cstring (const char *ptr, ssize_t len, struct type *char_type)
1752 {
1753   struct value *val;
1754   int lowbound = current_language->string_lower_bound ();
1755   ssize_t highbound = len / TYPE_LENGTH (char_type);
1756   struct type *stringtype
1757     = lookup_array_range_type (char_type, lowbound, highbound + lowbound - 1);
1758
1759   val = allocate_value (stringtype);
1760   memcpy (value_contents_raw (val), ptr, len);
1761   return val;
1762 }
1763
1764 /* Create a value for a string constant by allocating space in the
1765    inferior, copying the data into that space, and returning the
1766    address with type TYPE_CODE_STRING.  PTR points to the string
1767    constant data; LEN is number of characters.
1768
1769    Note that string types are like array of char types with a lower
1770    bound of zero and an upper bound of LEN - 1.  Also note that the
1771    string may contain embedded null bytes.  */
1772
1773 struct value *
1774 value_string (const char *ptr, ssize_t len, struct type *char_type)
1775 {
1776   struct value *val;
1777   int lowbound = current_language->string_lower_bound ();
1778   ssize_t highbound = len / TYPE_LENGTH (char_type);
1779   struct type *stringtype
1780     = lookup_string_range_type (char_type, lowbound, highbound + lowbound - 1);
1781
1782   val = allocate_value (stringtype);
1783   memcpy (value_contents_raw (val), ptr, len);
1784   return val;
1785 }
1786
1787 \f
1788 /* See if we can pass arguments in T2 to a function which takes arguments
1789    of types T1.  T1 is a list of NARGS arguments, and T2 is an array_view
1790    of the values we're trying to pass.  If some arguments need coercion of
1791    some sort, then the coerced values are written into T2.  Return value is
1792    0 if the arguments could be matched, or the position at which they
1793    differ if not.
1794
1795    STATICP is nonzero if the T1 argument list came from a static
1796    member function.  T2 must still include the ``this'' pointer, but
1797    it will be skipped.
1798
1799    For non-static member functions, we ignore the first argument,
1800    which is the type of the instance variable.  This is because we
1801    want to handle calls with objects from derived classes.  This is
1802    not entirely correct: we should actually check to make sure that a
1803    requested operation is type secure, shouldn't we?  FIXME.  */
1804
1805 static int
1806 typecmp (bool staticp, bool varargs, int nargs,
1807          struct field t1[], gdb::array_view<value *> t2)
1808 {
1809   int i;
1810
1811   /* Skip ``this'' argument if applicable.  T2 will always include
1812      THIS.  */
1813   if (staticp)
1814     t2 = t2.slice (1);
1815
1816   for (i = 0;
1817        (i < nargs) && t1[i].type ()->code () != TYPE_CODE_VOID;
1818        i++)
1819     {
1820       struct type *tt1, *tt2;
1821
1822       if (i == t2.size ())
1823         return i + 1;
1824
1825       tt1 = check_typedef (t1[i].type ());
1826       tt2 = check_typedef (value_type (t2[i]));
1827
1828       if (TYPE_IS_REFERENCE (tt1)
1829           /* We should be doing hairy argument matching, as below.  */
1830           && (check_typedef (TYPE_TARGET_TYPE (tt1))->code ()
1831               == tt2->code ()))
1832         {
1833           if (tt2->code () == TYPE_CODE_ARRAY)
1834             t2[i] = value_coerce_array (t2[i]);
1835           else
1836             t2[i] = value_ref (t2[i], tt1->code ());
1837           continue;
1838         }
1839
1840       /* djb - 20000715 - Until the new type structure is in the
1841          place, and we can attempt things like implicit conversions,
1842          we need to do this so you can take something like a map<const
1843          char *>, and properly access map["hello"], because the
1844          argument to [] will be a reference to a pointer to a char,
1845          and the argument will be a pointer to a char.  */
1846       while (TYPE_IS_REFERENCE (tt1) || tt1->code () == TYPE_CODE_PTR)
1847         {
1848           tt1 = check_typedef ( TYPE_TARGET_TYPE (tt1) );
1849         }
1850       while (tt2->code () == TYPE_CODE_ARRAY
1851              || tt2->code () == TYPE_CODE_PTR
1852              || TYPE_IS_REFERENCE (tt2))
1853         {
1854           tt2 = check_typedef (TYPE_TARGET_TYPE (tt2));
1855         }
1856       if (tt1->code () == tt2->code ())
1857         continue;
1858       /* Array to pointer is a `trivial conversion' according to the
1859          ARM.  */
1860
1861       /* We should be doing much hairier argument matching (see
1862          section 13.2 of the ARM), but as a quick kludge, just check
1863          for the same type code.  */
1864       if (t1[i].type ()->code () != value_type (t2[i])->code ())
1865         return i + 1;
1866     }
1867   if (varargs || i == t2.size ())
1868     return 0;
1869   return i + 1;
1870 }
1871
1872 /* Helper class for search_struct_field that keeps track of found
1873    results and possibly throws an exception if the search yields
1874    ambiguous results.  See search_struct_field for description of
1875    LOOKING_FOR_BASECLASS.  */
1876
1877 struct struct_field_searcher
1878 {
1879   /* A found field.  */
1880   struct found_field
1881   {
1882     /* Path to the structure where the field was found.  */
1883     std::vector<struct type *> path;
1884
1885     /* The field found.  */
1886     struct value *field_value;
1887   };
1888
1889   /* See corresponding fields for description of parameters.  */
1890   struct_field_searcher (const char *name,
1891                          struct type *outermost_type,
1892                          bool looking_for_baseclass)
1893     : m_name (name),
1894       m_looking_for_baseclass (looking_for_baseclass),
1895       m_outermost_type (outermost_type)
1896   {
1897   }
1898
1899   /* The search entry point.  If LOOKING_FOR_BASECLASS is true and the
1900      base class search yields ambiguous results, this throws an
1901      exception.  If LOOKING_FOR_BASECLASS is false, the found fields
1902      are accumulated and the caller (search_struct_field) takes care
1903      of throwing an error if the field search yields ambiguous
1904      results.  The latter is done that way so that the error message
1905      can include a list of all the found candidates.  */
1906   void search (struct value *arg, LONGEST offset, struct type *type);
1907
1908   const std::vector<found_field> &fields ()
1909   {
1910     return m_fields;
1911   }
1912
1913   struct value *baseclass ()
1914   {
1915     return m_baseclass;
1916   }
1917
1918 private:
1919   /* Update results to include V, a found field/baseclass.  */
1920   void update_result (struct value *v, LONGEST boffset);
1921
1922   /* The name of the field/baseclass we're searching for.  */
1923   const char *m_name;
1924
1925   /* Whether we're looking for a baseclass, or a field.  */
1926   const bool m_looking_for_baseclass;
1927
1928   /* The offset of the baseclass containing the field/baseclass we
1929      last recorded.  */
1930   LONGEST m_last_boffset = 0;
1931
1932   /* If looking for a baseclass, then the result is stored here.  */
1933   struct value *m_baseclass = nullptr;
1934
1935   /* When looking for fields, the found candidates are stored
1936      here.  */
1937   std::vector<found_field> m_fields;
1938
1939   /* The type of the initial type passed to search_struct_field; this
1940      is used for error reporting when the lookup is ambiguous.  */
1941   struct type *m_outermost_type;
1942
1943   /* The full path to the struct being inspected.  E.g. for field 'x'
1944      defined in class B inherited by class A, we have A and B pushed
1945      on the path.  */
1946   std::vector <struct type *> m_struct_path;
1947 };
1948
1949 void
1950 struct_field_searcher::update_result (struct value *v, LONGEST boffset)
1951 {
1952   if (v != NULL)
1953     {
1954       if (m_looking_for_baseclass)
1955         {
1956           if (m_baseclass != nullptr
1957               /* The result is not ambiguous if all the classes that are
1958                  found occupy the same space.  */
1959               && m_last_boffset != boffset)
1960             error (_("base class '%s' is ambiguous in type '%s'"),
1961                    m_name, TYPE_SAFE_NAME (m_outermost_type));
1962
1963           m_baseclass = v;
1964           m_last_boffset = boffset;
1965         }
1966       else
1967         {
1968           /* The field is not ambiguous if it occupies the same
1969              space.  */
1970           if (m_fields.empty () || m_last_boffset != boffset)
1971             m_fields.push_back ({m_struct_path, v});
1972         }
1973     }
1974 }
1975
1976 /* A helper for search_struct_field.  This does all the work; most
1977    arguments are as passed to search_struct_field.  */
1978
1979 void
1980 struct_field_searcher::search (struct value *arg1, LONGEST offset,
1981                                struct type *type)
1982 {
1983   int i;
1984   int nbases;
1985
1986   m_struct_path.push_back (type);
1987   SCOPE_EXIT { m_struct_path.pop_back (); };
1988
1989   type = check_typedef (type);
1990   nbases = TYPE_N_BASECLASSES (type);
1991
1992   if (!m_looking_for_baseclass)
1993     for (i = type->num_fields () - 1; i >= nbases; i--)
1994       {
1995         const char *t_field_name = TYPE_FIELD_NAME (type, i);
1996
1997         if (t_field_name && (strcmp_iw (t_field_name, m_name) == 0))
1998           {
1999             struct value *v;
2000
2001             if (field_is_static (&type->field (i)))
2002               v = value_static_field (type, i);
2003             else
2004               v = value_primitive_field (arg1, offset, i, type);
2005
2006             update_result (v, offset);
2007             return;
2008           }
2009
2010         if (t_field_name
2011             && t_field_name[0] == '\0')
2012           {
2013             struct type *field_type = type->field (i).type ();
2014
2015             if (field_type->code () == TYPE_CODE_UNION
2016                 || field_type->code () == TYPE_CODE_STRUCT)
2017               {
2018                 /* Look for a match through the fields of an anonymous
2019                    union, or anonymous struct.  C++ provides anonymous
2020                    unions.
2021
2022                    In the GNU Chill (now deleted from GDB)
2023                    implementation of variant record types, each
2024                    <alternative field> has an (anonymous) union type,
2025                    each member of the union represents a <variant
2026                    alternative>.  Each <variant alternative> is
2027                    represented as a struct, with a member for each
2028                    <variant field>.  */
2029
2030                 LONGEST new_offset = offset;
2031
2032                 /* This is pretty gross.  In G++, the offset in an
2033                    anonymous union is relative to the beginning of the
2034                    enclosing struct.  In the GNU Chill (now deleted
2035                    from GDB) implementation of variant records, the
2036                    bitpos is zero in an anonymous union field, so we
2037                    have to add the offset of the union here.  */
2038                 if (field_type->code () == TYPE_CODE_STRUCT
2039                     || (field_type->num_fields () > 0
2040                         && TYPE_FIELD_BITPOS (field_type, 0) == 0))
2041                   new_offset += TYPE_FIELD_BITPOS (type, i) / 8;
2042
2043                 search (arg1, new_offset, field_type);
2044               }
2045           }
2046       }
2047
2048   for (i = 0; i < nbases; i++)
2049     {
2050       struct value *v = NULL;
2051       struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
2052       /* If we are looking for baseclasses, this is what we get when
2053          we hit them.  But it could happen that the base part's member
2054          name is not yet filled in.  */
2055       int found_baseclass = (m_looking_for_baseclass
2056                              && TYPE_BASECLASS_NAME (type, i) != NULL
2057                              && (strcmp_iw (m_name,
2058                                             TYPE_BASECLASS_NAME (type,
2059                                                                  i)) == 0));
2060       LONGEST boffset = value_embedded_offset (arg1) + offset;
2061
2062       if (BASETYPE_VIA_VIRTUAL (type, i))
2063         {
2064           struct value *v2;
2065
2066           boffset = baseclass_offset (type, i,
2067                                       value_contents_for_printing (arg1),
2068                                       value_embedded_offset (arg1) + offset,
2069                                       value_address (arg1),
2070                                       arg1);
2071
2072           /* The virtual base class pointer might have been clobbered
2073              by the user program.  Make sure that it still points to a
2074              valid memory location.  */
2075
2076           boffset += value_embedded_offset (arg1) + offset;
2077           if (boffset < 0
2078               || boffset >= TYPE_LENGTH (value_enclosing_type (arg1)))
2079             {
2080               CORE_ADDR base_addr;
2081
2082               base_addr = value_address (arg1) + boffset;
2083               v2 = value_at_lazy (basetype, base_addr);
2084               if (target_read_memory (base_addr, 
2085                                       value_contents_raw (v2),
2086                                       TYPE_LENGTH (value_type (v2))) != 0)
2087                 error (_("virtual baseclass botch"));
2088             }
2089           else
2090             {
2091               v2 = value_copy (arg1);
2092               deprecated_set_value_type (v2, basetype);
2093               set_value_embedded_offset (v2, boffset);
2094             }
2095
2096           if (found_baseclass)
2097             v = v2;
2098           else
2099             search (v2, 0, TYPE_BASECLASS (type, i));
2100         }
2101       else if (found_baseclass)
2102         v = value_primitive_field (arg1, offset, i, type);
2103       else
2104         {
2105           search (arg1, offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
2106                   basetype);
2107         }
2108
2109       update_result (v, boffset);
2110     }
2111 }
2112
2113 /* Helper function used by value_struct_elt to recurse through
2114    baseclasses.  Look for a field NAME in ARG1.  Search in it assuming
2115    it has (class) type TYPE.  If found, return value, else return NULL.
2116
2117    If LOOKING_FOR_BASECLASS, then instead of looking for struct
2118    fields, look for a baseclass named NAME.  */
2119
2120 static struct value *
2121 search_struct_field (const char *name, struct value *arg1,
2122                      struct type *type, int looking_for_baseclass)
2123 {
2124   struct_field_searcher searcher (name, type, looking_for_baseclass);
2125
2126   searcher.search (arg1, 0, type);
2127
2128   if (!looking_for_baseclass)
2129     {
2130       const auto &fields = searcher.fields ();
2131
2132       if (fields.empty ())
2133         return nullptr;
2134       else if (fields.size () == 1)
2135         return fields[0].field_value;
2136       else
2137         {
2138           std::string candidates;
2139
2140           for (auto &&candidate : fields)
2141             {
2142               gdb_assert (!candidate.path.empty ());
2143
2144               struct type *field_type = value_type (candidate.field_value);
2145               struct type *struct_type = candidate.path.back ();
2146
2147               std::string path;
2148               bool first = true;
2149               for (struct type *t : candidate.path)
2150                 {
2151                   if (first)
2152                     first = false;
2153                   else
2154                     path += " -> ";
2155                   path += t->name ();
2156                 }
2157
2158               candidates += string_printf ("\n  '%s %s::%s' (%s)",
2159                                            TYPE_SAFE_NAME (field_type),
2160                                            TYPE_SAFE_NAME (struct_type),
2161                                            name,
2162                                            path.c_str ());
2163             }
2164
2165           error (_("Request for member '%s' is ambiguous in type '%s'."
2166                    " Candidates are:%s"),
2167                  name, TYPE_SAFE_NAME (type),
2168                  candidates.c_str ());
2169         }
2170     }
2171   else
2172     return searcher.baseclass ();
2173 }
2174
2175 /* Helper function used by value_struct_elt to recurse through
2176    baseclasses.  Look for a field NAME in ARG1.  Adjust the address of
2177    ARG1 by OFFSET bytes, and search in it assuming it has (class) type
2178    TYPE.
2179
2180    ARGS is an optional array of argument values used to help finding NAME.
2181    The contents of ARGS can be adjusted if type coercion is required in
2182    order to find a matching NAME.
2183
2184    If found, return value, else if name matched and args not return
2185    (value) -1, else return NULL.  */
2186
2187 static struct value *
2188 search_struct_method (const char *name, struct value **arg1p,
2189                       gdb::optional<gdb::array_view<value *>> args,
2190                       LONGEST offset, int *static_memfuncp,
2191                       struct type *type)
2192 {
2193   int i;
2194   struct value *v;
2195   int name_matched = 0;
2196
2197   type = check_typedef (type);
2198   for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2199     {
2200       const char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2201
2202       if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2203         {
2204           int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
2205           struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
2206
2207           name_matched = 1;
2208           check_stub_method_group (type, i);
2209           if (j > 0 && !args.has_value ())
2210             error (_("cannot resolve overloaded method "
2211                      "`%s': no arguments supplied"), name);
2212           else if (j == 0 && !args.has_value ())
2213             {
2214               v = value_fn_field (arg1p, f, j, type, offset);
2215               if (v != NULL)
2216                 return v;
2217             }
2218           else
2219             while (j >= 0)
2220               {
2221                 gdb_assert (args.has_value ());
2222                 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
2223                               TYPE_FN_FIELD_TYPE (f, j)->has_varargs (),
2224                               TYPE_FN_FIELD_TYPE (f, j)->num_fields (),
2225                               TYPE_FN_FIELD_ARGS (f, j), *args))
2226                   {
2227                     if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
2228                       return value_virtual_fn_field (arg1p, f, j, 
2229                                                      type, offset);
2230                     if (TYPE_FN_FIELD_STATIC_P (f, j) 
2231                         && static_memfuncp)
2232                       *static_memfuncp = 1;
2233                     v = value_fn_field (arg1p, f, j, type, offset);
2234                     if (v != NULL)
2235                       return v;       
2236                   }
2237                 j--;
2238               }
2239         }
2240     }
2241
2242   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2243     {
2244       LONGEST base_offset;
2245       LONGEST this_offset;
2246
2247       if (BASETYPE_VIA_VIRTUAL (type, i))
2248         {
2249           struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
2250           struct value *base_val;
2251           const gdb_byte *base_valaddr;
2252
2253           /* The virtual base class pointer might have been
2254              clobbered by the user program.  Make sure that it
2255              still points to a valid memory location.  */
2256
2257           if (offset < 0 || offset >= TYPE_LENGTH (type))
2258             {
2259               CORE_ADDR address;
2260
2261               gdb::byte_vector tmp (TYPE_LENGTH (baseclass));
2262               address = value_address (*arg1p);
2263
2264               if (target_read_memory (address + offset,
2265                                       tmp.data (), TYPE_LENGTH (baseclass)) != 0)
2266                 error (_("virtual baseclass botch"));
2267
2268               base_val = value_from_contents_and_address (baseclass,
2269                                                           tmp.data (),
2270                                                           address + offset);
2271               base_valaddr = value_contents_for_printing (base_val);
2272               this_offset = 0;
2273             }
2274           else
2275             {
2276               base_val = *arg1p;
2277               base_valaddr = value_contents_for_printing (*arg1p);
2278               this_offset = offset;
2279             }
2280
2281           base_offset = baseclass_offset (type, i, base_valaddr,
2282                                           this_offset, value_address (base_val),
2283                                           base_val);
2284         }
2285       else
2286         {
2287           base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2288         }
2289       v = search_struct_method (name, arg1p, args, base_offset + offset,
2290                                 static_memfuncp, TYPE_BASECLASS (type, i));
2291       if (v == (struct value *) - 1)
2292         {
2293           name_matched = 1;
2294         }
2295       else if (v)
2296         {
2297           /* FIXME-bothner:  Why is this commented out?  Why is it here?  */
2298           /* *arg1p = arg1_tmp; */
2299           return v;
2300         }
2301     }
2302   if (name_matched)
2303     return (struct value *) - 1;
2304   else
2305     return NULL;
2306 }
2307
2308 /* Given *ARGP, a value of type (pointer to a)* structure/union,
2309    extract the component named NAME from the ultimate target
2310    structure/union and return it as a value with its appropriate type.
2311    ERR is used in the error message if *ARGP's type is wrong.
2312
2313    C++: ARGS is a list of argument types to aid in the selection of
2314    an appropriate method.  Also, handle derived types.
2315
2316    STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
2317    where the truthvalue of whether the function that was resolved was
2318    a static member function or not is stored.
2319
2320    ERR is an error message to be printed in case the field is not
2321    found.  */
2322
2323 struct value *
2324 value_struct_elt (struct value **argp,
2325                   gdb::optional<gdb::array_view<value *>> args,
2326                   const char *name, int *static_memfuncp, const char *err)
2327 {
2328   struct type *t;
2329   struct value *v;
2330
2331   *argp = coerce_array (*argp);
2332
2333   t = check_typedef (value_type (*argp));
2334
2335   /* Follow pointers until we get to a non-pointer.  */
2336
2337   while (t->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
2338     {
2339       *argp = value_ind (*argp);
2340       /* Don't coerce fn pointer to fn and then back again!  */
2341       if (check_typedef (value_type (*argp))->code () != TYPE_CODE_FUNC)
2342         *argp = coerce_array (*argp);
2343       t = check_typedef (value_type (*argp));
2344     }
2345
2346   if (t->code () != TYPE_CODE_STRUCT
2347       && t->code () != TYPE_CODE_UNION)
2348     error (_("Attempt to extract a component of a value that is not a %s."),
2349            err);
2350
2351   /* Assume it's not, unless we see that it is.  */
2352   if (static_memfuncp)
2353     *static_memfuncp = 0;
2354
2355   if (!args.has_value ())
2356     {
2357       /* if there are no arguments ...do this...  */
2358
2359       /* Try as a field first, because if we succeed, there is less
2360          work to be done.  */
2361       v = search_struct_field (name, *argp, t, 0);
2362       if (v)
2363         return v;
2364
2365       /* C++: If it was not found as a data field, then try to
2366          return it as a pointer to a method.  */
2367       v = search_struct_method (name, argp, args, 0,
2368                                 static_memfuncp, t);
2369
2370       if (v == (struct value *) - 1)
2371         error (_("Cannot take address of method %s."), name);
2372       else if (v == 0)
2373         {
2374           if (TYPE_NFN_FIELDS (t))
2375             error (_("There is no member or method named %s."), name);
2376           else
2377             error (_("There is no member named %s."), name);
2378         }
2379       return v;
2380     }
2381
2382   v = search_struct_method (name, argp, args, 0,
2383                             static_memfuncp, t);
2384
2385   if (v == (struct value *) - 1)
2386     {
2387       error (_("One of the arguments you tried to pass to %s could not "
2388                "be converted to what the function wants."), name);
2389     }
2390   else if (v == 0)
2391     {
2392       /* See if user tried to invoke data as function.  If so, hand it
2393          back.  If it's not callable (i.e., a pointer to function),
2394          gdb should give an error.  */
2395       v = search_struct_field (name, *argp, t, 0);
2396       /* If we found an ordinary field, then it is not a method call.
2397          So, treat it as if it were a static member function.  */
2398       if (v && static_memfuncp)
2399         *static_memfuncp = 1;
2400     }
2401
2402   if (!v)
2403     throw_error (NOT_FOUND_ERROR,
2404                  _("Structure has no component named %s."), name);
2405   return v;
2406 }
2407
2408 /* Given *ARGP, a value of type structure or union, or a pointer/reference
2409    to a structure or union, extract and return its component (field) of
2410    type FTYPE at the specified BITPOS.
2411    Throw an exception on error.  */
2412
2413 struct value *
2414 value_struct_elt_bitpos (struct value **argp, int bitpos, struct type *ftype,
2415                          const char *err)
2416 {
2417   struct type *t;
2418   int i;
2419
2420   *argp = coerce_array (*argp);
2421
2422   t = check_typedef (value_type (*argp));
2423
2424   while (t->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
2425     {
2426       *argp = value_ind (*argp);
2427       if (check_typedef (value_type (*argp))->code () != TYPE_CODE_FUNC)
2428         *argp = coerce_array (*argp);
2429       t = check_typedef (value_type (*argp));
2430     }
2431
2432   if (t->code () != TYPE_CODE_STRUCT
2433       && t->code () != TYPE_CODE_UNION)
2434     error (_("Attempt to extract a component of a value that is not a %s."),
2435            err);
2436
2437   for (i = TYPE_N_BASECLASSES (t); i < t->num_fields (); i++)
2438     {
2439       if (!field_is_static (&t->field (i))
2440           && bitpos == TYPE_FIELD_BITPOS (t, i)
2441           && types_equal (ftype, t->field (i).type ()))
2442         return value_primitive_field (*argp, 0, i, t);
2443     }
2444
2445   error (_("No field with matching bitpos and type."));
2446
2447   /* Never hit.  */
2448   return NULL;
2449 }
2450
2451 /* Search through the methods of an object (and its bases) to find a
2452    specified method.  Return a reference to the fn_field list METHODS of
2453    overloaded instances defined in the source language.  If available
2454    and matching, a vector of matching xmethods defined in extension
2455    languages are also returned in XMETHODS.
2456
2457    Helper function for value_find_oload_list.
2458    ARGP is a pointer to a pointer to a value (the object).
2459    METHOD is a string containing the method name.
2460    OFFSET is the offset within the value.
2461    TYPE is the assumed type of the object.
2462    METHODS is a pointer to the matching overloaded instances defined
2463       in the source language.  Since this is a recursive function,
2464       *METHODS should be set to NULL when calling this function.
2465    NUM_FNS is the number of overloaded instances.  *NUM_FNS should be set to
2466       0 when calling this function.
2467    XMETHODS is the vector of matching xmethod workers.  *XMETHODS
2468       should also be set to NULL when calling this function.
2469    BASETYPE is set to the actual type of the subobject where the
2470       method is found.
2471    BOFFSET is the offset of the base subobject where the method is found.  */
2472
2473 static void
2474 find_method_list (struct value **argp, const char *method,
2475                   LONGEST offset, struct type *type,
2476                   gdb::array_view<fn_field> *methods,
2477                   std::vector<xmethod_worker_up> *xmethods,
2478                   struct type **basetype, LONGEST *boffset)
2479 {
2480   int i;
2481   struct fn_field *f = NULL;
2482
2483   gdb_assert (methods != NULL && xmethods != NULL);
2484   type = check_typedef (type);
2485
2486   /* First check in object itself.
2487      This function is called recursively to search through base classes.
2488      If there is a source method match found at some stage, then we need not
2489      look for source methods in consequent recursive calls.  */
2490   if (methods->empty ())
2491     {
2492       for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2493         {
2494           /* pai: FIXME What about operators and type conversions?  */
2495           const char *fn_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2496
2497           if (fn_field_name && (strcmp_iw (fn_field_name, method) == 0))
2498             {
2499               int len = TYPE_FN_FIELDLIST_LENGTH (type, i);
2500               f = TYPE_FN_FIELDLIST1 (type, i);
2501               *methods = gdb::make_array_view (f, len);
2502
2503               *basetype = type;
2504               *boffset = offset;
2505
2506               /* Resolve any stub methods.  */
2507               check_stub_method_group (type, i);
2508
2509               break;
2510             }
2511         }
2512     }
2513
2514   /* Unlike source methods, xmethods can be accumulated over successive
2515      recursive calls.  In other words, an xmethod named 'm' in a class
2516      will not hide an xmethod named 'm' in its base class(es).  We want
2517      it to be this way because xmethods are after all convenience functions
2518      and hence there is no point restricting them with something like method
2519      hiding.  Moreover, if hiding is done for xmethods as well, then we will
2520      have to provide a mechanism to un-hide (like the 'using' construct).  */
2521   get_matching_xmethod_workers (type, method, xmethods);
2522
2523   /* If source methods are not found in current class, look for them in the
2524      base classes.  We also have to go through the base classes to gather
2525      extension methods.  */
2526   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2527     {
2528       LONGEST base_offset;
2529
2530       if (BASETYPE_VIA_VIRTUAL (type, i))
2531         {
2532           base_offset = baseclass_offset (type, i,
2533                                           value_contents_for_printing (*argp),
2534                                           value_offset (*argp) + offset,
2535                                           value_address (*argp), *argp);
2536         }
2537       else /* Non-virtual base, simply use bit position from debug
2538               info.  */
2539         {
2540           base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
2541         }
2542
2543       find_method_list (argp, method, base_offset + offset,
2544                         TYPE_BASECLASS (type, i), methods,
2545                         xmethods, basetype, boffset);
2546     }
2547 }
2548
2549 /* Return the list of overloaded methods of a specified name.  The methods
2550    could be those GDB finds in the binary, or xmethod.  Methods found in
2551    the binary are returned in METHODS, and xmethods are returned in
2552    XMETHODS.
2553
2554    ARGP is a pointer to a pointer to a value (the object).
2555    METHOD is the method name.
2556    OFFSET is the offset within the value contents.
2557    METHODS is the list of matching overloaded instances defined in
2558       the source language.
2559    XMETHODS is the vector of matching xmethod workers defined in
2560       extension languages.
2561    BASETYPE is set to the type of the base subobject that defines the
2562       method.
2563    BOFFSET is the offset of the base subobject which defines the method.  */
2564
2565 static void
2566 value_find_oload_method_list (struct value **argp, const char *method,
2567                               LONGEST offset,
2568                               gdb::array_view<fn_field> *methods,
2569                               std::vector<xmethod_worker_up> *xmethods,
2570                               struct type **basetype, LONGEST *boffset)
2571 {
2572   struct type *t;
2573
2574   t = check_typedef (value_type (*argp));
2575
2576   /* Code snarfed from value_struct_elt.  */
2577   while (t->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
2578     {
2579       *argp = value_ind (*argp);
2580       /* Don't coerce fn pointer to fn and then back again!  */
2581       if (check_typedef (value_type (*argp))->code () != TYPE_CODE_FUNC)
2582         *argp = coerce_array (*argp);
2583       t = check_typedef (value_type (*argp));
2584     }
2585
2586   if (t->code () != TYPE_CODE_STRUCT
2587       && t->code () != TYPE_CODE_UNION)
2588     error (_("Attempt to extract a component of a "
2589              "value that is not a struct or union"));
2590
2591   gdb_assert (methods != NULL && xmethods != NULL);
2592
2593   /* Clear the lists.  */
2594   *methods = {};
2595   xmethods->clear ();
2596
2597   find_method_list (argp, method, 0, t, methods, xmethods,
2598                     basetype, boffset);
2599 }
2600
2601 /* Given an array of arguments (ARGS) (which includes an entry for
2602    "this" in the case of C++ methods), the NAME of a function, and
2603    whether it's a method or not (METHOD), find the best function that
2604    matches on the argument types according to the overload resolution
2605    rules.
2606
2607    METHOD can be one of three values:
2608      NON_METHOD for non-member functions.
2609      METHOD: for member functions.
2610      BOTH: used for overload resolution of operators where the
2611        candidates are expected to be either member or non member
2612        functions.  In this case the first argument ARGTYPES
2613        (representing 'this') is expected to be a reference to the
2614        target object, and will be dereferenced when attempting the
2615        non-member search.
2616
2617    In the case of class methods, the parameter OBJ is an object value
2618    in which to search for overloaded methods.
2619
2620    In the case of non-method functions, the parameter FSYM is a symbol
2621    corresponding to one of the overloaded functions.
2622
2623    Return value is an integer: 0 -> good match, 10 -> debugger applied
2624    non-standard coercions, 100 -> incompatible.
2625
2626    If a method is being searched for, VALP will hold the value.
2627    If a non-method is being searched for, SYMP will hold the symbol 
2628    for it.
2629
2630    If a method is being searched for, and it is a static method,
2631    then STATICP will point to a non-zero value.
2632
2633    If NO_ADL argument dependent lookup is disabled.  This is used to prevent
2634    ADL overload candidates when performing overload resolution for a fully
2635    qualified name.
2636
2637    If NOSIDE is EVAL_AVOID_SIDE_EFFECTS, then OBJP's memory cannot be
2638    read while picking the best overload match (it may be all zeroes and thus
2639    not have a vtable pointer), in which case skip virtual function lookup.
2640    This is ok as typically EVAL_AVOID_SIDE_EFFECTS is only used to determine
2641    the result type.
2642
2643    Note: This function does *not* check the value of
2644    overload_resolution.  Caller must check it to see whether overload
2645    resolution is permitted.  */
2646
2647 int
2648 find_overload_match (gdb::array_view<value *> args,
2649                      const char *name, enum oload_search_type method,
2650                      struct value **objp, struct symbol *fsym,
2651                      struct value **valp, struct symbol **symp, 
2652                      int *staticp, const int no_adl,
2653                      const enum noside noside)
2654 {
2655   struct value *obj = (objp ? *objp : NULL);
2656   struct type *obj_type = obj ? value_type (obj) : NULL;
2657   /* Index of best overloaded function.  */
2658   int func_oload_champ = -1;
2659   int method_oload_champ = -1;
2660   int src_method_oload_champ = -1;
2661   int ext_method_oload_champ = -1;
2662
2663   /* The measure for the current best match.  */
2664   badness_vector method_badness;
2665   badness_vector func_badness;
2666   badness_vector ext_method_badness;
2667   badness_vector src_method_badness;
2668
2669   struct value *temp = obj;
2670   /* For methods, the list of overloaded methods.  */
2671   gdb::array_view<fn_field> methods;
2672   /* For non-methods, the list of overloaded function symbols.  */
2673   std::vector<symbol *> functions;
2674   /* For xmethods, the vector of xmethod workers.  */
2675   std::vector<xmethod_worker_up> xmethods;
2676   struct type *basetype = NULL;
2677   LONGEST boffset;
2678
2679   const char *obj_type_name = NULL;
2680   const char *func_name = NULL;
2681   gdb::unique_xmalloc_ptr<char> temp_func;
2682   enum oload_classification match_quality;
2683   enum oload_classification method_match_quality = INCOMPATIBLE;
2684   enum oload_classification src_method_match_quality = INCOMPATIBLE;
2685   enum oload_classification ext_method_match_quality = INCOMPATIBLE;
2686   enum oload_classification func_match_quality = INCOMPATIBLE;
2687
2688   /* Get the list of overloaded methods or functions.  */
2689   if (method == METHOD || method == BOTH)
2690     {
2691       gdb_assert (obj);
2692
2693       /* OBJ may be a pointer value rather than the object itself.  */
2694       obj = coerce_ref (obj);
2695       while (check_typedef (value_type (obj))->code () == TYPE_CODE_PTR)
2696         obj = coerce_ref (value_ind (obj));
2697       obj_type_name = value_type (obj)->name ();
2698
2699       /* First check whether this is a data member, e.g. a pointer to
2700          a function.  */
2701       if (check_typedef (value_type (obj))->code () == TYPE_CODE_STRUCT)
2702         {
2703           *valp = search_struct_field (name, obj,
2704                                        check_typedef (value_type (obj)), 0);
2705           if (*valp)
2706             {
2707               *staticp = 1;
2708               return 0;
2709             }
2710         }
2711
2712       /* Retrieve the list of methods with the name NAME.  */
2713       value_find_oload_method_list (&temp, name, 0, &methods,
2714                                     &xmethods, &basetype, &boffset);
2715       /* If this is a method only search, and no methods were found
2716          the search has failed.  */
2717       if (method == METHOD && methods.empty () && xmethods.empty ())
2718         error (_("Couldn't find method %s%s%s"),
2719                obj_type_name,
2720                (obj_type_name && *obj_type_name) ? "::" : "",
2721                name);
2722       /* If we are dealing with stub method types, they should have
2723          been resolved by find_method_list via
2724          value_find_oload_method_list above.  */
2725       if (!methods.empty ())
2726         {
2727           gdb_assert (TYPE_SELF_TYPE (methods[0].type) != NULL);
2728
2729           src_method_oload_champ
2730             = find_oload_champ (args,
2731                                 methods.size (),
2732                                 methods.data (), NULL, NULL,
2733                                 &src_method_badness);
2734
2735           src_method_match_quality = classify_oload_match
2736             (src_method_badness, args.size (),
2737              oload_method_static_p (methods.data (), src_method_oload_champ));
2738         }
2739
2740       if (!xmethods.empty ())
2741         {
2742           ext_method_oload_champ
2743             = find_oload_champ (args,
2744                                 xmethods.size (),
2745                                 NULL, xmethods.data (), NULL,
2746                                 &ext_method_badness);
2747           ext_method_match_quality = classify_oload_match (ext_method_badness,
2748                                                            args.size (), 0);
2749         }
2750
2751       if (src_method_oload_champ >= 0 && ext_method_oload_champ >= 0)
2752         {
2753           switch (compare_badness (ext_method_badness, src_method_badness))
2754             {
2755               case 0: /* Src method and xmethod are equally good.  */
2756                 /* If src method and xmethod are equally good, then
2757                    xmethod should be the winner.  Hence, fall through to the
2758                    case where a xmethod is better than the source
2759                    method, except when the xmethod match quality is
2760                    non-standard.  */
2761                 /* FALLTHROUGH */
2762               case 1: /* Src method and ext method are incompatible.  */
2763                 /* If ext method match is not standard, then let source method
2764                    win.  Otherwise, fallthrough to let xmethod win.  */
2765                 if (ext_method_match_quality != STANDARD)
2766                   {
2767                     method_oload_champ = src_method_oload_champ;
2768                     method_badness = src_method_badness;
2769                     ext_method_oload_champ = -1;
2770                     method_match_quality = src_method_match_quality;
2771                     break;
2772                   }
2773                 /* FALLTHROUGH */
2774               case 2: /* Ext method is champion.  */
2775                 method_oload_champ = ext_method_oload_champ;
2776                 method_badness = ext_method_badness;
2777                 src_method_oload_champ = -1;
2778                 method_match_quality = ext_method_match_quality;
2779                 break;
2780               case 3: /* Src method is champion.  */
2781                 method_oload_champ = src_method_oload_champ;
2782                 method_badness = src_method_badness;
2783                 ext_method_oload_champ = -1;
2784                 method_match_quality = src_method_match_quality;
2785                 break;
2786               default:
2787                 gdb_assert_not_reached ("Unexpected overload comparison "
2788                                         "result");
2789                 break;
2790             }
2791         }
2792       else if (src_method_oload_champ >= 0)
2793         {
2794           method_oload_champ = src_method_oload_champ;
2795           method_badness = src_method_badness;
2796           method_match_quality = src_method_match_quality;
2797         }
2798       else if (ext_method_oload_champ >= 0)
2799         {
2800           method_oload_champ = ext_method_oload_champ;
2801           method_badness = ext_method_badness;
2802           method_match_quality = ext_method_match_quality;
2803         }
2804     }
2805
2806   if (method == NON_METHOD || method == BOTH)
2807     {
2808       const char *qualified_name = NULL;
2809
2810       /* If the overload match is being search for both as a method
2811          and non member function, the first argument must now be
2812          dereferenced.  */
2813       if (method == BOTH)
2814         args[0] = value_ind (args[0]);
2815
2816       if (fsym)
2817         {
2818           qualified_name = fsym->natural_name ();
2819
2820           /* If we have a function with a C++ name, try to extract just
2821              the function part.  Do not try this for non-functions (e.g.
2822              function pointers).  */
2823           if (qualified_name
2824               && (check_typedef (SYMBOL_TYPE (fsym))->code ()
2825                   == TYPE_CODE_FUNC))
2826             {
2827               temp_func = cp_func_name (qualified_name);
2828
2829               /* If cp_func_name did not remove anything, the name of the
2830                  symbol did not include scope or argument types - it was
2831                  probably a C-style function.  */
2832               if (temp_func != nullptr)
2833                 {
2834                   if (strcmp (temp_func.get (), qualified_name) == 0)
2835                     func_name = NULL;
2836                   else
2837                     func_name = temp_func.get ();
2838                 }
2839             }
2840         }
2841       else
2842         {
2843           func_name = name;
2844           qualified_name = name;
2845         }
2846
2847       /* If there was no C++ name, this must be a C-style function or
2848          not a function at all.  Just return the same symbol.  Do the
2849          same if cp_func_name fails for some reason.  */
2850       if (func_name == NULL)
2851         {
2852           *symp = fsym;
2853           return 0;
2854         }
2855
2856       func_oload_champ = find_oload_champ_namespace (args,
2857                                                      func_name,
2858                                                      qualified_name,
2859                                                      &functions,
2860                                                      &func_badness,
2861                                                      no_adl);
2862
2863       if (func_oload_champ >= 0)
2864         func_match_quality = classify_oload_match (func_badness,
2865                                                    args.size (), 0);
2866     }
2867
2868   /* Did we find a match ?  */
2869   if (method_oload_champ == -1 && func_oload_champ == -1)
2870     throw_error (NOT_FOUND_ERROR,
2871                  _("No symbol \"%s\" in current context."),
2872                  name);
2873
2874   /* If we have found both a method match and a function
2875      match, find out which one is better, and calculate match
2876      quality.  */
2877   if (method_oload_champ >= 0 && func_oload_champ >= 0)
2878     {
2879       switch (compare_badness (func_badness, method_badness))
2880         {
2881           case 0: /* Top two contenders are equally good.  */
2882             /* FIXME: GDB does not support the general ambiguous case.
2883              All candidates should be collected and presented the
2884              user.  */
2885             error (_("Ambiguous overload resolution"));
2886             break;
2887           case 1: /* Incomparable top contenders.  */
2888             /* This is an error incompatible candidates
2889                should not have been proposed.  */
2890             error (_("Internal error: incompatible "
2891                      "overload candidates proposed"));
2892             break;
2893           case 2: /* Function champion.  */
2894             method_oload_champ = -1;
2895             match_quality = func_match_quality;
2896             break;
2897           case 3: /* Method champion.  */
2898             func_oload_champ = -1;
2899             match_quality = method_match_quality;
2900             break;
2901           default:
2902             error (_("Internal error: unexpected overload comparison result"));
2903             break;
2904         }
2905     }
2906   else
2907     {
2908       /* We have either a method match or a function match.  */
2909       if (method_oload_champ >= 0)
2910         match_quality = method_match_quality;
2911       else
2912         match_quality = func_match_quality;
2913     }
2914
2915   if (match_quality == INCOMPATIBLE)
2916     {
2917       if (method == METHOD)
2918         error (_("Cannot resolve method %s%s%s to any overloaded instance"),
2919                obj_type_name,
2920                (obj_type_name && *obj_type_name) ? "::" : "",
2921                name);
2922       else
2923         error (_("Cannot resolve function %s to any overloaded instance"),
2924                func_name);
2925     }
2926   else if (match_quality == NON_STANDARD)
2927     {
2928       if (method == METHOD)
2929         warning (_("Using non-standard conversion to match "
2930                    "method %s%s%s to supplied arguments"),
2931                  obj_type_name,
2932                  (obj_type_name && *obj_type_name) ? "::" : "",
2933                  name);
2934       else
2935         warning (_("Using non-standard conversion to match "
2936                    "function %s to supplied arguments"),
2937                  func_name);
2938     }
2939
2940   if (staticp != NULL)
2941     *staticp = oload_method_static_p (methods.data (), method_oload_champ);
2942
2943   if (method_oload_champ >= 0)
2944     {
2945       if (src_method_oload_champ >= 0)
2946         {
2947           if (TYPE_FN_FIELD_VIRTUAL_P (methods, method_oload_champ)
2948               && noside != EVAL_AVOID_SIDE_EFFECTS)
2949             {
2950               *valp = value_virtual_fn_field (&temp, methods.data (),
2951                                               method_oload_champ, basetype,
2952                                               boffset);
2953             }
2954           else
2955             *valp = value_fn_field (&temp, methods.data (),
2956                                     method_oload_champ, basetype, boffset);
2957         }
2958       else
2959         *valp = value_from_xmethod
2960           (std::move (xmethods[ext_method_oload_champ]));
2961     }
2962   else
2963     *symp = functions[func_oload_champ];
2964
2965   if (objp)
2966     {
2967       struct type *temp_type = check_typedef (value_type (temp));
2968       struct type *objtype = check_typedef (obj_type);
2969
2970       if (temp_type->code () != TYPE_CODE_PTR
2971           && (objtype->code () == TYPE_CODE_PTR
2972               || TYPE_IS_REFERENCE (objtype)))
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_NAME (type, i);
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 = TYPE_FIELD_NAME (t, i);
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.264509 seconds and 4 git commands to generate.