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