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