]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/valops.c
gdb: remove TYPE_LENGTH
[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));
1420 gdb_assert (regname && *regname);
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
87a37e5e
PA
2069 && (strcmp_iw (m_name,
2070 TYPE_BASECLASS_NAME (type,
ac3eeb49 2071 i)) == 0));
6b850546 2072 LONGEST boffset = value_embedded_offset (arg1) + offset;
c906108c
SS
2073
2074 if (BASETYPE_VIA_VIRTUAL (type, i))
2075 {
3e3d7139 2076 struct value *v2;
c906108c
SS
2077
2078 boffset = baseclass_offset (type, i,
50888e42 2079 value_contents_for_printing (arg1).data (),
8af8e3bc
PA
2080 value_embedded_offset (arg1) + offset,
2081 value_address (arg1),
2082 arg1);
c906108c 2083
ac3eeb49 2084 /* The virtual base class pointer might have been clobbered
581e13c1 2085 by the user program. Make sure that it still points to a
ac3eeb49 2086 valid memory location. */
c906108c 2087
1a334831
TT
2088 boffset += value_embedded_offset (arg1) + offset;
2089 if (boffset < 0
df86565b 2090 || boffset >= value_enclosing_type (arg1)->length ())
c906108c
SS
2091 {
2092 CORE_ADDR base_addr;
c5aa993b 2093
42ae5230 2094 base_addr = value_address (arg1) + boffset;
08039c9e 2095 v2 = value_at_lazy (basetype, base_addr);
ac3eeb49 2096 if (target_read_memory (base_addr,
50888e42 2097 value_contents_raw (v2).data (),
df86565b 2098 value_type (v2)->length ()) != 0)
8a3fe4f8 2099 error (_("virtual baseclass botch"));
c906108c
SS
2100 }
2101 else
2102 {
1a334831
TT
2103 v2 = value_copy (arg1);
2104 deprecated_set_value_type (v2, basetype);
2105 set_value_embedded_offset (v2, boffset);
c906108c
SS
2106 }
2107
2108 if (found_baseclass)
b1af9e97
TT
2109 v = v2;
2110 else
87a37e5e 2111 search (v2, 0, TYPE_BASECLASS (type, i));
c906108c
SS
2112 }
2113 else if (found_baseclass)
2114 v = value_primitive_field (arg1, offset, i, type);
2115 else
b1af9e97 2116 {
87a37e5e
PA
2117 search (arg1, offset + TYPE_BASECLASS_BITPOS (type, i) / 8,
2118 basetype);
b1af9e97
TT
2119 }
2120
87a37e5e 2121 update_result (v, boffset);
c906108c 2122 }
b1af9e97
TT
2123}
2124
2125/* Helper function used by value_struct_elt to recurse through
8a13d42d
SM
2126 baseclasses. Look for a field NAME in ARG1. Search in it assuming
2127 it has (class) type TYPE. If found, return value, else return NULL.
b1af9e97
TT
2128
2129 If LOOKING_FOR_BASECLASS, then instead of looking for struct
2130 fields, look for a baseclass named NAME. */
2131
2132static struct value *
8a13d42d 2133search_struct_field (const char *name, struct value *arg1,
b1af9e97
TT
2134 struct type *type, int looking_for_baseclass)
2135{
87a37e5e 2136 struct_field_searcher searcher (name, type, looking_for_baseclass);
b1af9e97 2137
87a37e5e
PA
2138 searcher.search (arg1, 0, type);
2139
2140 if (!looking_for_baseclass)
2141 {
2142 const auto &fields = searcher.fields ();
2143
2144 if (fields.empty ())
2145 return nullptr;
2146 else if (fields.size () == 1)
2147 return fields[0].field_value;
2148 else
2149 {
2150 std::string candidates;
2151
2152 for (auto &&candidate : fields)
2153 {
2154 gdb_assert (!candidate.path.empty ());
2155
2156 struct type *field_type = value_type (candidate.field_value);
2157 struct type *struct_type = candidate.path.back ();
2158
2159 std::string path;
2160 bool first = true;
2161 for (struct type *t : candidate.path)
2162 {
2163 if (first)
2164 first = false;
2165 else
2166 path += " -> ";
2167 path += t->name ();
2168 }
2169
2170 candidates += string_printf ("\n '%s %s::%s' (%s)",
2171 TYPE_SAFE_NAME (field_type),
2172 TYPE_SAFE_NAME (struct_type),
2173 name,
2174 path.c_str ());
2175 }
2176
2177 error (_("Request for member '%s' is ambiguous in type '%s'."
2178 " Candidates are:%s"),
2179 name, TYPE_SAFE_NAME (type),
2180 candidates.c_str ());
2181 }
2182 }
2183 else
2184 return searcher.baseclass ();
c906108c
SS
2185}
2186
ac3eeb49 2187/* Helper function used by value_struct_elt to recurse through
581e13c1 2188 baseclasses. Look for a field NAME in ARG1. Adjust the address of
ac3eeb49
MS
2189 ARG1 by OFFSET bytes, and search in it assuming it has (class) type
2190 TYPE.
2191
158cc4fe
AB
2192 ARGS is an optional array of argument values used to help finding NAME.
2193 The contents of ARGS can be adjusted if type coercion is required in
2194 order to find a matching NAME.
79bd4d34 2195
ac3eeb49
MS
2196 If found, return value, else if name matched and args not return
2197 (value) -1, else return NULL. */
c906108c 2198
f23631e4 2199static struct value *
714f19d5 2200search_struct_method (const char *name, struct value **arg1p,
158cc4fe
AB
2201 gdb::optional<gdb::array_view<value *>> args,
2202 LONGEST offset, int *static_memfuncp,
2203 struct type *type)
c906108c
SS
2204{
2205 int i;
f23631e4 2206 struct value *v;
c906108c 2207 int name_matched = 0;
c906108c 2208
f168693b 2209 type = check_typedef (type);
c906108c
SS
2210 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
2211 {
0d5cff50 2212 const char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
a109c7c1 2213
db577aea 2214 if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
c906108c
SS
2215 {
2216 int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
2217 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
c906108c 2218
a109c7c1 2219 name_matched = 1;
de17c821 2220 check_stub_method_group (type, i);
158cc4fe 2221 if (j > 0 && !args.has_value ())
3e43a32a
MS
2222 error (_("cannot resolve overloaded method "
2223 "`%s': no arguments supplied"), name);
158cc4fe 2224 else if (j == 0 && !args.has_value ())
c906108c 2225 {
acf5ed49
DJ
2226 v = value_fn_field (arg1p, f, j, type, offset);
2227 if (v != NULL)
2228 return v;
c906108c 2229 }
acf5ed49
DJ
2230 else
2231 while (j >= 0)
2232 {
158cc4fe 2233 gdb_assert (args.has_value ());
acf5ed49 2234 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
a409645d 2235 TYPE_FN_FIELD_TYPE (f, j)->has_varargs (),
1f704f76 2236 TYPE_FN_FIELD_TYPE (f, j)->num_fields (),
13221aec 2237 TYPE_FN_FIELD_ARGS (f, j), *args))
acf5ed49
DJ
2238 {
2239 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
ac3eeb49
MS
2240 return value_virtual_fn_field (arg1p, f, j,
2241 type, offset);
2242 if (TYPE_FN_FIELD_STATIC_P (f, j)
2243 && static_memfuncp)
acf5ed49
DJ
2244 *static_memfuncp = 1;
2245 v = value_fn_field (arg1p, f, j, type, offset);
2246 if (v != NULL)
2247 return v;
2248 }
2249 j--;
2250 }
c906108c
SS
2251 }
2252 }
2253
2254 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2255 {
6b850546
DT
2256 LONGEST base_offset;
2257 LONGEST this_offset;
c906108c
SS
2258
2259 if (BASETYPE_VIA_VIRTUAL (type, i))
2260 {
086280be 2261 struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
8af8e3bc 2262 struct value *base_val;
086280be
UW
2263 const gdb_byte *base_valaddr;
2264
2265 /* The virtual base class pointer might have been
581e13c1 2266 clobbered by the user program. Make sure that it
8301c89e 2267 still points to a valid memory location. */
086280be 2268
df86565b 2269 if (offset < 0 || offset >= type->length ())
c5aa993b 2270 {
6c18f3e0
SP
2271 CORE_ADDR address;
2272
df86565b 2273 gdb::byte_vector tmp (baseclass->length ());
6c18f3e0 2274 address = value_address (*arg1p);
a109c7c1 2275
8af8e3bc 2276 if (target_read_memory (address + offset,
df86565b 2277 tmp.data (), baseclass->length ()) != 0)
086280be 2278 error (_("virtual baseclass botch"));
8af8e3bc
PA
2279
2280 base_val = value_from_contents_and_address (baseclass,
26fcd5d7 2281 tmp.data (),
8af8e3bc 2282 address + offset);
50888e42 2283 base_valaddr = value_contents_for_printing (base_val).data ();
8af8e3bc 2284 this_offset = 0;
c5aa993b
JM
2285 }
2286 else
8af8e3bc
PA
2287 {
2288 base_val = *arg1p;
50888e42 2289 base_valaddr = value_contents_for_printing (*arg1p).data ();
8af8e3bc
PA
2290 this_offset = offset;
2291 }
c5aa993b 2292
086280be 2293 base_offset = baseclass_offset (type, i, base_valaddr,
8af8e3bc
PA
2294 this_offset, value_address (base_val),
2295 base_val);
c5aa993b 2296 }
c906108c
SS
2297 else
2298 {
2299 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
c5aa993b 2300 }
c906108c
SS
2301 v = search_struct_method (name, arg1p, args, base_offset + offset,
2302 static_memfuncp, TYPE_BASECLASS (type, i));
f23631e4 2303 if (v == (struct value *) - 1)
c906108c
SS
2304 {
2305 name_matched = 1;
2306 }
2307 else if (v)
2308 {
ac3eeb49
MS
2309 /* FIXME-bothner: Why is this commented out? Why is it here? */
2310 /* *arg1p = arg1_tmp; */
c906108c 2311 return v;
c5aa993b 2312 }
c906108c 2313 }
c5aa993b 2314 if (name_matched)
f23631e4 2315 return (struct value *) - 1;
c5aa993b
JM
2316 else
2317 return NULL;
c906108c
SS
2318}
2319
2320/* Given *ARGP, a value of type (pointer to a)* structure/union,
ac3eeb49
MS
2321 extract the component named NAME from the ultimate target
2322 structure/union and return it as a value with its appropriate type.
c906108c
SS
2323 ERR is used in the error message if *ARGP's type is wrong.
2324
2325 C++: ARGS is a list of argument types to aid in the selection of
13221aec 2326 an appropriate method. Also, handle derived types.
c906108c
SS
2327
2328 STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
2329 where the truthvalue of whether the function that was resolved was
2330 a static member function or not is stored.
2331
ac3eeb49
MS
2332 ERR is an error message to be printed in case the field is not
2333 found. */
c906108c 2334
f23631e4 2335struct value *
158cc4fe
AB
2336value_struct_elt (struct value **argp,
2337 gdb::optional<gdb::array_view<value *>> args,
714f19d5 2338 const char *name, int *static_memfuncp, const char *err)
c906108c 2339{
52f0bd74 2340 struct type *t;
f23631e4 2341 struct value *v;
c906108c 2342
994b9211 2343 *argp = coerce_array (*argp);
c906108c 2344
df407dfe 2345 t = check_typedef (value_type (*argp));
c906108c
SS
2346
2347 /* Follow pointers until we get to a non-pointer. */
2348
809f3be1 2349 while (t->is_pointer_or_reference ())
c906108c
SS
2350 {
2351 *argp = value_ind (*argp);
2352 /* Don't coerce fn pointer to fn and then back again! */
78134374 2353 if (check_typedef (value_type (*argp))->code () != TYPE_CODE_FUNC)
994b9211 2354 *argp = coerce_array (*argp);
df407dfe 2355 t = check_typedef (value_type (*argp));
c906108c
SS
2356 }
2357
78134374
SM
2358 if (t->code () != TYPE_CODE_STRUCT
2359 && t->code () != TYPE_CODE_UNION)
3e43a32a
MS
2360 error (_("Attempt to extract a component of a value that is not a %s."),
2361 err);
c906108c
SS
2362
2363 /* Assume it's not, unless we see that it is. */
2364 if (static_memfuncp)
c5aa993b 2365 *static_memfuncp = 0;
c906108c 2366
158cc4fe 2367 if (!args.has_value ())
c906108c
SS
2368 {
2369 /* if there are no arguments ...do this... */
2370
ac3eeb49 2371 /* Try as a field first, because if we succeed, there is less
dda83cd7 2372 work to be done. */
8a13d42d 2373 v = search_struct_field (name, *argp, t, 0);
c906108c
SS
2374 if (v)
2375 return v;
2376
87e10e9c
BH
2377 if (current_language->la_language == language_fortran)
2378 {
2379 /* If it is not a field it is the type name of an inherited
2380 structure. */
2381 v = search_struct_field (name, *argp, t, 1);
2382 if (v)
2383 return v;
2384 }
2385
c906108c 2386 /* C++: If it was not found as a data field, then try to
dda83cd7 2387 return it as a pointer to a method. */
13221aec 2388 v = search_struct_method (name, argp, args, 0,
ac3eeb49 2389 static_memfuncp, t);
c906108c 2390
f23631e4 2391 if (v == (struct value *) - 1)
55b39184 2392 error (_("Cannot take address of method %s."), name);
c906108c
SS
2393 else if (v == 0)
2394 {
2395 if (TYPE_NFN_FIELDS (t))
8a3fe4f8 2396 error (_("There is no member or method named %s."), name);
c906108c 2397 else
8a3fe4f8 2398 error (_("There is no member named %s."), name);
c906108c
SS
2399 }
2400 return v;
2401 }
2402
13221aec 2403 v = search_struct_method (name, argp, args, 0,
8301c89e 2404 static_memfuncp, t);
13221aec 2405
f23631e4 2406 if (v == (struct value *) - 1)
c906108c 2407 {
3e43a32a
MS
2408 error (_("One of the arguments you tried to pass to %s could not "
2409 "be converted to what the function wants."), name);
c906108c
SS
2410 }
2411 else if (v == 0)
2412 {
ac3eeb49 2413 /* See if user tried to invoke data as function. If so, hand it
dda83cd7
SM
2414 back. If it's not callable (i.e., a pointer to function),
2415 gdb should give an error. */
8a13d42d 2416 v = search_struct_field (name, *argp, t, 0);
fa8de41e
TT
2417 /* If we found an ordinary field, then it is not a method call.
2418 So, treat it as if it were a static member function. */
2419 if (v && static_memfuncp)
2420 *static_memfuncp = 1;
c906108c
SS
2421 }
2422
2423 if (!v)
79afc5ef 2424 throw_error (NOT_FOUND_ERROR,
dda83cd7 2425 _("Structure has no component named %s."), name);
c906108c
SS
2426 return v;
2427}
2428
b5b08fb4
SC
2429/* Given *ARGP, a value of type structure or union, or a pointer/reference
2430 to a structure or union, extract and return its component (field) of
2431 type FTYPE at the specified BITPOS.
2432 Throw an exception on error. */
2433
2434struct value *
2435value_struct_elt_bitpos (struct value **argp, int bitpos, struct type *ftype,
2436 const char *err)
2437{
2438 struct type *t;
b5b08fb4 2439 int i;
b5b08fb4
SC
2440
2441 *argp = coerce_array (*argp);
2442
2443 t = check_typedef (value_type (*argp));
2444
809f3be1 2445 while (t->is_pointer_or_reference ())
b5b08fb4
SC
2446 {
2447 *argp = value_ind (*argp);
78134374 2448 if (check_typedef (value_type (*argp))->code () != TYPE_CODE_FUNC)
b5b08fb4
SC
2449 *argp = coerce_array (*argp);
2450 t = check_typedef (value_type (*argp));
2451 }
2452
78134374
SM
2453 if (t->code () != TYPE_CODE_STRUCT
2454 && t->code () != TYPE_CODE_UNION)
b5b08fb4
SC
2455 error (_("Attempt to extract a component of a value that is not a %s."),
2456 err);
2457
1f704f76 2458 for (i = TYPE_N_BASECLASSES (t); i < t->num_fields (); i++)
b5b08fb4 2459 {
ceacbf6e 2460 if (!field_is_static (&t->field (i))
b610c045 2461 && bitpos == t->field (i).loc_bitpos ()
940da03e 2462 && types_equal (ftype, t->field (i).type ()))
b5b08fb4
SC
2463 return value_primitive_field (*argp, 0, i, t);
2464 }
2465
2466 error (_("No field with matching bitpos and type."));
2467
2468 /* Never hit. */
2469 return NULL;
2470}
2471
ac3eeb49 2472/* Search through the methods of an object (and its bases) to find a
38139a96 2473 specified method. Return a reference to the fn_field list METHODS of
233e8b28
SC
2474 overloaded instances defined in the source language. If available
2475 and matching, a vector of matching xmethods defined in extension
38139a96 2476 languages are also returned in XMETHODS.
ac3eeb49
MS
2477
2478 Helper function for value_find_oload_list.
2479 ARGP is a pointer to a pointer to a value (the object).
2480 METHOD is a string containing the method name.
2481 OFFSET is the offset within the value.
2482 TYPE is the assumed type of the object.
38139a96
PA
2483 METHODS is a pointer to the matching overloaded instances defined
2484 in the source language. Since this is a recursive function,
2485 *METHODS should be set to NULL when calling this function.
233e8b28
SC
2486 NUM_FNS is the number of overloaded instances. *NUM_FNS should be set to
2487 0 when calling this function.
38139a96 2488 XMETHODS is the vector of matching xmethod workers. *XMETHODS
233e8b28 2489 should also be set to NULL when calling this function.
ac3eeb49
MS
2490 BASETYPE is set to the actual type of the subobject where the
2491 method is found.
581e13c1 2492 BOFFSET is the offset of the base subobject where the method is found. */
c906108c 2493
233e8b28 2494static void
714f19d5 2495find_method_list (struct value **argp, const char *method,
6b850546 2496 LONGEST offset, struct type *type,
38139a96
PA
2497 gdb::array_view<fn_field> *methods,
2498 std::vector<xmethod_worker_up> *xmethods,
6b850546 2499 struct type **basetype, LONGEST *boffset)
c906108c
SS
2500{
2501 int i;
233e8b28 2502 struct fn_field *f = NULL;
c906108c 2503
38139a96 2504 gdb_assert (methods != NULL && xmethods != NULL);
f168693b 2505 type = check_typedef (type);
c906108c 2506
233e8b28
SC
2507 /* First check in object itself.
2508 This function is called recursively to search through base classes.
2509 If there is a source method match found at some stage, then we need not
2510 look for source methods in consequent recursive calls. */
38139a96 2511 if (methods->empty ())
c906108c 2512 {
233e8b28 2513 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
c5aa993b 2514 {
233e8b28
SC
2515 /* pai: FIXME What about operators and type conversions? */
2516 const char *fn_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
2517
2518 if (fn_field_name && (strcmp_iw (fn_field_name, method) == 0))
2519 {
2520 int len = TYPE_FN_FIELDLIST_LENGTH (type, i);
2521 f = TYPE_FN_FIELDLIST1 (type, i);
38139a96 2522 *methods = gdb::make_array_view (f, len);
4a1970e4 2523
233e8b28
SC
2524 *basetype = type;
2525 *boffset = offset;
4a1970e4 2526
233e8b28
SC
2527 /* Resolve any stub methods. */
2528 check_stub_method_group (type, i);
4a1970e4 2529
233e8b28
SC
2530 break;
2531 }
c5aa993b
JM
2532 }
2533 }
2534
233e8b28
SC
2535 /* Unlike source methods, xmethods can be accumulated over successive
2536 recursive calls. In other words, an xmethod named 'm' in a class
2537 will not hide an xmethod named 'm' in its base class(es). We want
2538 it to be this way because xmethods are after all convenience functions
2539 and hence there is no point restricting them with something like method
2540 hiding. Moreover, if hiding is done for xmethods as well, then we will
2541 have to provide a mechanism to un-hide (like the 'using' construct). */
38139a96 2542 get_matching_xmethod_workers (type, method, xmethods);
233e8b28
SC
2543
2544 /* If source methods are not found in current class, look for them in the
2545 base classes. We also have to go through the base classes to gather
2546 extension methods. */
c906108c
SS
2547 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2548 {
6b850546 2549 LONGEST base_offset;
a109c7c1 2550
c906108c
SS
2551 if (BASETYPE_VIA_VIRTUAL (type, i))
2552 {
086280be 2553 base_offset = baseclass_offset (type, i,
50888e42 2554 value_contents_for_printing (*argp).data (),
8af8e3bc
PA
2555 value_offset (*argp) + offset,
2556 value_address (*argp), *argp);
c5aa993b 2557 }
ac3eeb49
MS
2558 else /* Non-virtual base, simply use bit position from debug
2559 info. */
c906108c
SS
2560 {
2561 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
c5aa993b 2562 }
233e8b28
SC
2563
2564 find_method_list (argp, method, base_offset + offset,
38139a96
PA
2565 TYPE_BASECLASS (type, i), methods,
2566 xmethods, basetype, boffset);
c906108c 2567 }
c906108c
SS
2568}
2569
233e8b28
SC
2570/* Return the list of overloaded methods of a specified name. The methods
2571 could be those GDB finds in the binary, or xmethod. Methods found in
38139a96
PA
2572 the binary are returned in METHODS, and xmethods are returned in
2573 XMETHODS.
ac3eeb49
MS
2574
2575 ARGP is a pointer to a pointer to a value (the object).
2576 METHOD is the method name.
2577 OFFSET is the offset within the value contents.
38139a96
PA
2578 METHODS is the list of matching overloaded instances defined in
2579 the source language.
2580 XMETHODS is the vector of matching xmethod workers defined in
233e8b28 2581 extension languages.
ac3eeb49
MS
2582 BASETYPE is set to the type of the base subobject that defines the
2583 method.
581e13c1 2584 BOFFSET is the offset of the base subobject which defines the method. */
c906108c 2585
233e8b28 2586static void
714f19d5 2587value_find_oload_method_list (struct value **argp, const char *method,
85cca2bc 2588 LONGEST offset,
38139a96
PA
2589 gdb::array_view<fn_field> *methods,
2590 std::vector<xmethod_worker_up> *xmethods,
6b850546 2591 struct type **basetype, LONGEST *boffset)
c906108c 2592{
c5aa993b 2593 struct type *t;
c906108c 2594
df407dfe 2595 t = check_typedef (value_type (*argp));
c906108c 2596
ac3eeb49 2597 /* Code snarfed from value_struct_elt. */
809f3be1 2598 while (t->is_pointer_or_reference ())
c906108c
SS
2599 {
2600 *argp = value_ind (*argp);
2601 /* Don't coerce fn pointer to fn and then back again! */
78134374 2602 if (check_typedef (value_type (*argp))->code () != TYPE_CODE_FUNC)
994b9211 2603 *argp = coerce_array (*argp);
df407dfe 2604 t = check_typedef (value_type (*argp));
c906108c 2605 }
c5aa993b 2606
78134374
SM
2607 if (t->code () != TYPE_CODE_STRUCT
2608 && t->code () != TYPE_CODE_UNION)
3e43a32a
MS
2609 error (_("Attempt to extract a component of a "
2610 "value that is not a struct or union"));
c5aa993b 2611
38139a96 2612 gdb_assert (methods != NULL && xmethods != NULL);
233e8b28
SC
2613
2614 /* Clear the lists. */
38139a96
PA
2615 *methods = {};
2616 xmethods->clear ();
233e8b28 2617
38139a96 2618 find_method_list (argp, method, 0, t, methods, xmethods,
233e8b28 2619 basetype, boffset);
c906108c
SS
2620}
2621
6b1747cd
PA
2622/* Given an array of arguments (ARGS) (which includes an entry for
2623 "this" in the case of C++ methods), the NAME of a function, and
2624 whether it's a method or not (METHOD), find the best function that
2625 matches on the argument types according to the overload resolution
2626 rules.
c906108c 2627
4c3376c8
SW
2628 METHOD can be one of three values:
2629 NON_METHOD for non-member functions.
2630 METHOD: for member functions.
2631 BOTH: used for overload resolution of operators where the
2632 candidates are expected to be either member or non member
581e13c1 2633 functions. In this case the first argument ARGTYPES
4c3376c8
SW
2634 (representing 'this') is expected to be a reference to the
2635 target object, and will be dereferenced when attempting the
2636 non-member search.
2637
c906108c
SS
2638 In the case of class methods, the parameter OBJ is an object value
2639 in which to search for overloaded methods.
2640
2641 In the case of non-method functions, the parameter FSYM is a symbol
2642 corresponding to one of the overloaded functions.
2643
2644 Return value is an integer: 0 -> good match, 10 -> debugger applied
2645 non-standard coercions, 100 -> incompatible.
2646
2647 If a method is being searched for, VALP will hold the value.
ac3eeb49
MS
2648 If a non-method is being searched for, SYMP will hold the symbol
2649 for it.
c906108c
SS
2650
2651 If a method is being searched for, and it is a static method,
2652 then STATICP will point to a non-zero value.
2653
7322dca9
SW
2654 If NO_ADL argument dependent lookup is disabled. This is used to prevent
2655 ADL overload candidates when performing overload resolution for a fully
2656 qualified name.
2657
e66d4446
SC
2658 If NOSIDE is EVAL_AVOID_SIDE_EFFECTS, then OBJP's memory cannot be
2659 read while picking the best overload match (it may be all zeroes and thus
2660 not have a vtable pointer), in which case skip virtual function lookup.
2661 This is ok as typically EVAL_AVOID_SIDE_EFFECTS is only used to determine
2662 the result type.
2663
c906108c
SS
2664 Note: This function does *not* check the value of
2665 overload_resolution. Caller must check it to see whether overload
581e13c1 2666 resolution is permitted. */
c906108c
SS
2667
2668int
6b1747cd 2669find_overload_match (gdb::array_view<value *> args,
4c3376c8 2670 const char *name, enum oload_search_type method,
28c64fc2 2671 struct value **objp, struct symbol *fsym,
ac3eeb49 2672 struct value **valp, struct symbol **symp,
e66d4446
SC
2673 int *staticp, const int no_adl,
2674 const enum noside noside)
c906108c 2675{
7f8c9282 2676 struct value *obj = (objp ? *objp : NULL);
da096638 2677 struct type *obj_type = obj ? value_type (obj) : NULL;
ac3eeb49 2678 /* Index of best overloaded function. */
4c3376c8
SW
2679 int func_oload_champ = -1;
2680 int method_oload_champ = -1;
233e8b28
SC
2681 int src_method_oload_champ = -1;
2682 int ext_method_oload_champ = -1;
4c3376c8 2683
ac3eeb49 2684 /* The measure for the current best match. */
82ceee50
PA
2685 badness_vector method_badness;
2686 badness_vector func_badness;
2687 badness_vector ext_method_badness;
2688 badness_vector src_method_badness;
4c3376c8 2689
f23631e4 2690 struct value *temp = obj;
ac3eeb49 2691 /* For methods, the list of overloaded methods. */
38139a96 2692 gdb::array_view<fn_field> methods;
ac3eeb49 2693 /* For non-methods, the list of overloaded function symbols. */
38139a96 2694 std::vector<symbol *> functions;
ba18742c 2695 /* For xmethods, the vector of xmethod workers. */
38139a96 2696 std::vector<xmethod_worker_up> xmethods;
c5aa993b 2697 struct type *basetype = NULL;
6b850546 2698 LONGEST boffset;
7322dca9 2699
8d577d32 2700 const char *obj_type_name = NULL;
7322dca9 2701 const char *func_name = NULL;
06d3e5b0 2702 gdb::unique_xmalloc_ptr<char> temp_func;
8d577d32 2703 enum oload_classification match_quality;
4c3376c8 2704 enum oload_classification method_match_quality = INCOMPATIBLE;
233e8b28
SC
2705 enum oload_classification src_method_match_quality = INCOMPATIBLE;
2706 enum oload_classification ext_method_match_quality = INCOMPATIBLE;
4c3376c8 2707 enum oload_classification func_match_quality = INCOMPATIBLE;
c906108c 2708
ac3eeb49 2709 /* Get the list of overloaded methods or functions. */
4c3376c8 2710 if (method == METHOD || method == BOTH)
c906108c 2711 {
a2ca50ae 2712 gdb_assert (obj);
94af9270
KS
2713
2714 /* OBJ may be a pointer value rather than the object itself. */
2715 obj = coerce_ref (obj);
78134374 2716 while (check_typedef (value_type (obj))->code () == TYPE_CODE_PTR)
94af9270 2717 obj = coerce_ref (value_ind (obj));
7d93a1e0 2718 obj_type_name = value_type (obj)->name ();
94af9270
KS
2719
2720 /* First check whether this is a data member, e.g. a pointer to
2721 a function. */
78134374 2722 if (check_typedef (value_type (obj))->code () == TYPE_CODE_STRUCT)
94af9270 2723 {
8a13d42d 2724 *valp = search_struct_field (name, obj,
94af9270
KS
2725 check_typedef (value_type (obj)), 0);
2726 if (*valp)
2727 {
2728 *staticp = 1;
2729 return 0;
2730 }
2731 }
c906108c 2732
4c3376c8 2733 /* Retrieve the list of methods with the name NAME. */
38139a96
PA
2734 value_find_oload_method_list (&temp, name, 0, &methods,
2735 &xmethods, &basetype, &boffset);
4c3376c8 2736 /* If this is a method only search, and no methods were found
dda83cd7 2737 the search has failed. */
38139a96 2738 if (method == METHOD && methods.empty () && xmethods.empty ())
8a3fe4f8 2739 error (_("Couldn't find method %s%s%s"),
c5aa993b
JM
2740 obj_type_name,
2741 (obj_type_name && *obj_type_name) ? "::" : "",
2742 name);
4a1970e4 2743 /* If we are dealing with stub method types, they should have
ac3eeb49
MS
2744 been resolved by find_method_list via
2745 value_find_oload_method_list above. */
38139a96 2746 if (!methods.empty ())
4c3376c8 2747 {
38139a96 2748 gdb_assert (TYPE_SELF_TYPE (methods[0].type) != NULL);
4c3376c8 2749
85cca2bc
PA
2750 src_method_oload_champ
2751 = find_oload_champ (args,
38139a96
PA
2752 methods.size (),
2753 methods.data (), NULL, NULL,
85cca2bc 2754 &src_method_badness);
233e8b28
SC
2755
2756 src_method_match_quality = classify_oload_match
6b1747cd 2757 (src_method_badness, args.size (),
38139a96 2758 oload_method_static_p (methods.data (), src_method_oload_champ));
233e8b28 2759 }
4c3376c8 2760
38139a96 2761 if (!xmethods.empty ())
233e8b28 2762 {
85cca2bc
PA
2763 ext_method_oload_champ
2764 = find_oload_champ (args,
38139a96
PA
2765 xmethods.size (),
2766 NULL, xmethods.data (), NULL,
85cca2bc 2767 &ext_method_badness);
233e8b28 2768 ext_method_match_quality = classify_oload_match (ext_method_badness,
6b1747cd 2769 args.size (), 0);
4c3376c8
SW
2770 }
2771
233e8b28
SC
2772 if (src_method_oload_champ >= 0 && ext_method_oload_champ >= 0)
2773 {
2774 switch (compare_badness (ext_method_badness, src_method_badness))
2775 {
2776 case 0: /* Src method and xmethod are equally good. */
233e8b28
SC
2777 /* If src method and xmethod are equally good, then
2778 xmethod should be the winner. Hence, fall through to the
2779 case where a xmethod is better than the source
2780 method, except when the xmethod match quality is
2781 non-standard. */
2782 /* FALLTHROUGH */
2783 case 1: /* Src method and ext method are incompatible. */
2784 /* If ext method match is not standard, then let source method
2785 win. Otherwise, fallthrough to let xmethod win. */
2786 if (ext_method_match_quality != STANDARD)
2787 {
2788 method_oload_champ = src_method_oload_champ;
2789 method_badness = src_method_badness;
2790 ext_method_oload_champ = -1;
2791 method_match_quality = src_method_match_quality;
2792 break;
2793 }
2794 /* FALLTHROUGH */
2795 case 2: /* Ext method is champion. */
2796 method_oload_champ = ext_method_oload_champ;
2797 method_badness = ext_method_badness;
2798 src_method_oload_champ = -1;
2799 method_match_quality = ext_method_match_quality;
2800 break;
2801 case 3: /* Src method is champion. */
2802 method_oload_champ = src_method_oload_champ;
2803 method_badness = src_method_badness;
2804 ext_method_oload_champ = -1;
2805 method_match_quality = src_method_match_quality;
2806 break;
2807 default:
2808 gdb_assert_not_reached ("Unexpected overload comparison "
2809 "result");
2810 break;
2811 }
2812 }
2813 else if (src_method_oload_champ >= 0)
2814 {
2815 method_oload_champ = src_method_oload_champ;
2816 method_badness = src_method_badness;
2817 method_match_quality = src_method_match_quality;
2818 }
2819 else if (ext_method_oload_champ >= 0)
2820 {
2821 method_oload_champ = ext_method_oload_champ;
2822 method_badness = ext_method_badness;
2823 method_match_quality = ext_method_match_quality;
2824 }
c906108c 2825 }
4c3376c8
SW
2826
2827 if (method == NON_METHOD || method == BOTH)
c906108c 2828 {
7322dca9 2829 const char *qualified_name = NULL;
c906108c 2830
b021a221 2831 /* If the overload match is being search for both as a method
dda83cd7
SM
2832 and non member function, the first argument must now be
2833 dereferenced. */
4c3376c8 2834 if (method == BOTH)
2b214ea6 2835 args[0] = value_ind (args[0]);
4c3376c8 2836
7322dca9 2837 if (fsym)
dda83cd7
SM
2838 {
2839 qualified_name = fsym->natural_name ();
7322dca9 2840
dda83cd7 2841 /* If we have a function with a C++ name, try to extract just
7322dca9
SW
2842 the function part. Do not try this for non-functions (e.g.
2843 function pointers). */
dda83cd7 2844 if (qualified_name
5f9c5a63 2845 && (check_typedef (fsym->type ())->code ()
78134374 2846 == TYPE_CODE_FUNC))
dda83cd7 2847 {
b926417a 2848 temp_func = cp_func_name (qualified_name);
7322dca9
SW
2849
2850 /* If cp_func_name did not remove anything, the name of the
dda83cd7
SM
2851 symbol did not include scope or argument types - it was
2852 probably a C-style function. */
06d3e5b0 2853 if (temp_func != nullptr)
7322dca9 2854 {
06d3e5b0 2855 if (strcmp (temp_func.get (), qualified_name) == 0)
7322dca9
SW
2856 func_name = NULL;
2857 else
06d3e5b0 2858 func_name = temp_func.get ();
7322dca9 2859 }
dda83cd7
SM
2860 }
2861 }
7322dca9 2862 else
94af9270 2863 {
7322dca9
SW
2864 func_name = name;
2865 qualified_name = name;
94af9270 2866 }
d9639e13 2867
94af9270
KS
2868 /* If there was no C++ name, this must be a C-style function or
2869 not a function at all. Just return the same symbol. Do the
2870 same if cp_func_name fails for some reason. */
8d577d32 2871 if (func_name == NULL)
dda83cd7 2872 {
917317f4 2873 *symp = fsym;
dda83cd7
SM
2874 return 0;
2875 }
917317f4 2876
6b1747cd 2877 func_oload_champ = find_oload_champ_namespace (args,
dda83cd7
SM
2878 func_name,
2879 qualified_name,
2880 &functions,
2881 &func_badness,
2882 no_adl);
8d577d32 2883
4c3376c8 2884 if (func_oload_champ >= 0)
6b1747cd
PA
2885 func_match_quality = classify_oload_match (func_badness,
2886 args.size (), 0);
8d577d32
DC
2887 }
2888
7322dca9 2889 /* Did we find a match ? */
4c3376c8 2890 if (method_oload_champ == -1 && func_oload_champ == -1)
79afc5ef 2891 throw_error (NOT_FOUND_ERROR,
dda83cd7
SM
2892 _("No symbol \"%s\" in current context."),
2893 name);
8d577d32 2894
4c3376c8
SW
2895 /* If we have found both a method match and a function
2896 match, find out which one is better, and calculate match
2897 quality. */
2898 if (method_oload_champ >= 0 && func_oload_champ >= 0)
2899 {
2900 switch (compare_badness (func_badness, method_badness))
dda83cd7 2901 {
4c3376c8 2902 case 0: /* Top two contenders are equally good. */
b021a221
MS
2903 /* FIXME: GDB does not support the general ambiguous case.
2904 All candidates should be collected and presented the
2905 user. */
4c3376c8
SW
2906 error (_("Ambiguous overload resolution"));
2907 break;
2908 case 1: /* Incomparable top contenders. */
2909 /* This is an error incompatible candidates
2910 should not have been proposed. */
3e43a32a
MS
2911 error (_("Internal error: incompatible "
2912 "overload candidates proposed"));
4c3376c8
SW
2913 break;
2914 case 2: /* Function champion. */
2915 method_oload_champ = -1;
2916 match_quality = func_match_quality;
2917 break;
2918 case 3: /* Method champion. */
2919 func_oload_champ = -1;
2920 match_quality = method_match_quality;
2921 break;
2922 default:
2923 error (_("Internal error: unexpected overload comparison result"));
2924 break;
dda83cd7 2925 }
4c3376c8
SW
2926 }
2927 else
2928 {
2929 /* We have either a method match or a function match. */
2930 if (method_oload_champ >= 0)
2931 match_quality = method_match_quality;
2932 else
2933 match_quality = func_match_quality;
2934 }
8d577d32
DC
2935
2936 if (match_quality == INCOMPATIBLE)
2937 {
4c3376c8 2938 if (method == METHOD)
8a3fe4f8 2939 error (_("Cannot resolve method %s%s%s to any overloaded instance"),
8d577d32
DC
2940 obj_type_name,
2941 (obj_type_name && *obj_type_name) ? "::" : "",
2942 name);
2943 else
8a3fe4f8 2944 error (_("Cannot resolve function %s to any overloaded instance"),
8d577d32
DC
2945 func_name);
2946 }
2947 else if (match_quality == NON_STANDARD)
2948 {
4c3376c8 2949 if (method == METHOD)
3e43a32a
MS
2950 warning (_("Using non-standard conversion to match "
2951 "method %s%s%s to supplied arguments"),
8d577d32
DC
2952 obj_type_name,
2953 (obj_type_name && *obj_type_name) ? "::" : "",
2954 name);
2955 else
3e43a32a
MS
2956 warning (_("Using non-standard conversion to match "
2957 "function %s to supplied arguments"),
8d577d32
DC
2958 func_name);
2959 }
2960
4c3376c8 2961 if (staticp != NULL)
38139a96 2962 *staticp = oload_method_static_p (methods.data (), method_oload_champ);
4c3376c8
SW
2963
2964 if (method_oload_champ >= 0)
8d577d32 2965 {
233e8b28
SC
2966 if (src_method_oload_champ >= 0)
2967 {
38139a96 2968 if (TYPE_FN_FIELD_VIRTUAL_P (methods, method_oload_champ)
e66d4446
SC
2969 && noside != EVAL_AVOID_SIDE_EFFECTS)
2970 {
38139a96 2971 *valp = value_virtual_fn_field (&temp, methods.data (),
e66d4446
SC
2972 method_oload_champ, basetype,
2973 boffset);
2974 }
233e8b28 2975 else
38139a96 2976 *valp = value_fn_field (&temp, methods.data (),
85cca2bc 2977 method_oload_champ, basetype, boffset);
233e8b28 2978 }
8d577d32 2979 else
ba18742c 2980 *valp = value_from_xmethod
38139a96 2981 (std::move (xmethods[ext_method_oload_champ]));
8d577d32
DC
2982 }
2983 else
38139a96 2984 *symp = functions[func_oload_champ];
8d577d32
DC
2985
2986 if (objp)
2987 {
a4295225 2988 struct type *temp_type = check_typedef (value_type (temp));
da096638 2989 struct type *objtype = check_typedef (obj_type);
a109c7c1 2990
78134374 2991 if (temp_type->code () != TYPE_CODE_PTR
809f3be1 2992 && objtype->is_pointer_or_reference ())
8d577d32
DC
2993 {
2994 temp = value_addr (temp);
2995 }
2996 *objp = temp;
2997 }
7322dca9 2998
8d577d32
DC
2999 switch (match_quality)
3000 {
3001 case INCOMPATIBLE:
3002 return 100;
3003 case NON_STANDARD:
3004 return 10;
3005 default: /* STANDARD */
3006 return 0;
3007 }
3008}
3009
3010/* Find the best overload match, searching for FUNC_NAME in namespaces
3011 contained in QUALIFIED_NAME until it either finds a good match or
3012 runs out of namespaces. It stores the overloaded functions in
82ceee50 3013 *OLOAD_SYMS, and the badness vector in *OLOAD_CHAMP_BV. If NO_ADL,
30baf67b 3014 argument dependent lookup is not performed. */
8d577d32
DC
3015
3016static int
6b1747cd 3017find_oload_champ_namespace (gdb::array_view<value *> args,
8d577d32
DC
3018 const char *func_name,
3019 const char *qualified_name,
0891c3cc 3020 std::vector<symbol *> *oload_syms,
82ceee50 3021 badness_vector *oload_champ_bv,
7322dca9 3022 const int no_adl)
8d577d32
DC
3023{
3024 int oload_champ;
3025
6b1747cd 3026 find_oload_champ_namespace_loop (args,
8d577d32
DC
3027 func_name,
3028 qualified_name, 0,
3029 oload_syms, oload_champ_bv,
7322dca9
SW
3030 &oload_champ,
3031 no_adl);
8d577d32
DC
3032
3033 return oload_champ;
3034}
3035
3036/* Helper function for find_oload_champ_namespace; NAMESPACE_LEN is
3037 how deep we've looked for namespaces, and the champ is stored in
3038 OLOAD_CHAMP. The return value is 1 if the champ is a good one, 0
7322dca9 3039 if it isn't. Other arguments are the same as in
82ceee50 3040 find_oload_champ_namespace. */
8d577d32
DC
3041
3042static int
6b1747cd 3043find_oload_champ_namespace_loop (gdb::array_view<value *> args,
8d577d32
DC
3044 const char *func_name,
3045 const char *qualified_name,
3046 int namespace_len,
0891c3cc 3047 std::vector<symbol *> *oload_syms,
82ceee50 3048 badness_vector *oload_champ_bv,
7322dca9
SW
3049 int *oload_champ,
3050 const int no_adl)
8d577d32
DC
3051{
3052 int next_namespace_len = namespace_len;
3053 int searched_deeper = 0;
8d577d32 3054 int new_oload_champ;
8d577d32
DC
3055 char *new_namespace;
3056
3057 if (next_namespace_len != 0)
3058 {
3059 gdb_assert (qualified_name[next_namespace_len] == ':');
3060 next_namespace_len += 2;
c906108c 3061 }
ac3eeb49
MS
3062 next_namespace_len +=
3063 cp_find_first_component (qualified_name + next_namespace_len);
8d577d32 3064
581e13c1 3065 /* First, see if we have a deeper namespace we can search in.
ac3eeb49 3066 If we get a good match there, use it. */
8d577d32
DC
3067
3068 if (qualified_name[next_namespace_len] == ':')
3069 {
3070 searched_deeper = 1;
3071
6b1747cd 3072 if (find_oload_champ_namespace_loop (args,
8d577d32
DC
3073 func_name, qualified_name,
3074 next_namespace_len,
3075 oload_syms, oload_champ_bv,
7322dca9 3076 oload_champ, no_adl))
8d577d32
DC
3077 {
3078 return 1;
3079 }
3080 };
3081
3082 /* If we reach here, either we're in the deepest namespace or we
3083 didn't find a good match in a deeper namespace. But, in the
3084 latter case, we still have a bad match in a deeper namespace;
3085 note that we might not find any match at all in the current
3086 namespace. (There's always a match in the deepest namespace,
3087 because this overload mechanism only gets called if there's a
3088 function symbol to start off with.) */
3089
224c3ddb 3090 new_namespace = (char *) alloca (namespace_len + 1);
8d577d32
DC
3091 strncpy (new_namespace, qualified_name, namespace_len);
3092 new_namespace[namespace_len] = '\0';
0891c3cc
PA
3093
3094 std::vector<symbol *> new_oload_syms
3095 = make_symbol_overload_list (func_name, new_namespace);
7322dca9
SW
3096
3097 /* If we have reached the deepest level perform argument
3098 determined lookup. */
3099 if (!searched_deeper && !no_adl)
da096638
KS
3100 {
3101 int ix;
3102 struct type **arg_types;
3103
3104 /* Prepare list of argument types for overload resolution. */
3105 arg_types = (struct type **)
6b1747cd
PA
3106 alloca (args.size () * (sizeof (struct type *)));
3107 for (ix = 0; ix < args.size (); ix++)
da096638 3108 arg_types[ix] = value_type (args[ix]);
0891c3cc
PA
3109 add_symbol_overload_list_adl ({arg_types, args.size ()}, func_name,
3110 &new_oload_syms);
da096638 3111 }
7322dca9 3112
82ceee50 3113 badness_vector new_oload_champ_bv;
85cca2bc
PA
3114 new_oload_champ = find_oload_champ (args,
3115 new_oload_syms.size (),
0891c3cc 3116 NULL, NULL, new_oload_syms.data (),
8d577d32
DC
3117 &new_oload_champ_bv);
3118
3119 /* Case 1: We found a good match. Free earlier matches (if any),
3120 and return it. Case 2: We didn't find a good match, but we're
3121 not the deepest function. Then go with the bad match that the
3122 deeper function found. Case 3: We found a bad match, and we're
3123 the deepest function. Then return what we found, even though
3124 it's a bad match. */
3125
3126 if (new_oload_champ != -1
6b1747cd 3127 && classify_oload_match (new_oload_champ_bv, args.size (), 0) == STANDARD)
8d577d32 3128 {
0891c3cc 3129 *oload_syms = std::move (new_oload_syms);
8d577d32 3130 *oload_champ = new_oload_champ;
82ceee50 3131 *oload_champ_bv = std::move (new_oload_champ_bv);
8d577d32
DC
3132 return 1;
3133 }
3134 else if (searched_deeper)
3135 {
8d577d32
DC
3136 return 0;
3137 }
3138 else
3139 {
0891c3cc 3140 *oload_syms = std::move (new_oload_syms);
8d577d32 3141 *oload_champ = new_oload_champ;
82ceee50 3142 *oload_champ_bv = std::move (new_oload_champ_bv);
8d577d32
DC
3143 return 0;
3144 }
3145}
3146
6b1747cd 3147/* Look for a function to take ARGS. Find the best match from among
38139a96
PA
3148 the overloaded methods or functions given by METHODS or FUNCTIONS
3149 or XMETHODS, respectively. One, and only one of METHODS, FUNCTIONS
3150 and XMETHODS can be non-NULL.
233e8b28 3151
38139a96
PA
3152 NUM_FNS is the length of the array pointed at by METHODS, FUNCTIONS
3153 or XMETHODS, whichever is non-NULL.
233e8b28 3154
8d577d32 3155 Return the index of the best match; store an indication of the
82ceee50 3156 quality of the match in OLOAD_CHAMP_BV. */
8d577d32
DC
3157
3158static int
6b1747cd 3159find_oload_champ (gdb::array_view<value *> args,
85cca2bc 3160 size_t num_fns,
38139a96
PA
3161 fn_field *methods,
3162 xmethod_worker_up *xmethods,
3163 symbol **functions,
82ceee50 3164 badness_vector *oload_champ_bv)
8d577d32 3165{
ac3eeb49 3166 /* A measure of how good an overloaded instance is. */
82ceee50 3167 badness_vector bv;
ac3eeb49
MS
3168 /* Index of best overloaded function. */
3169 int oload_champ = -1;
3170 /* Current ambiguity state for overload resolution. */
3171 int oload_ambiguous = 0;
3172 /* 0 => no ambiguity, 1 => two good funcs, 2 => incomparable funcs. */
8d577d32 3173
9cf95373 3174 /* A champion can be found among methods alone, or among functions
233e8b28
SC
3175 alone, or in xmethods alone, but not in more than one of these
3176 groups. */
38139a96 3177 gdb_assert ((methods != NULL) + (functions != NULL) + (xmethods != NULL)
233e8b28 3178 == 1);
9cf95373 3179
ac3eeb49 3180 /* Consider each candidate in turn. */
85cca2bc 3181 for (size_t ix = 0; ix < num_fns; ix++)
c906108c 3182 {
8d577d32 3183 int jj;
233e8b28 3184 int static_offset = 0;
6b1747cd 3185 std::vector<type *> parm_types;
8d577d32 3186
38139a96
PA
3187 if (xmethods != NULL)
3188 parm_types = xmethods[ix]->get_arg_types ();
db577aea
AC
3189 else
3190 {
6b1747cd
PA
3191 size_t nparms;
3192
38139a96 3193 if (methods != NULL)
233e8b28 3194 {
1f704f76 3195 nparms = TYPE_FN_FIELD_TYPE (methods, ix)->num_fields ();
38139a96 3196 static_offset = oload_method_static_p (methods, ix);
233e8b28
SC
3197 }
3198 else
5f9c5a63 3199 nparms = functions[ix]->type ()->num_fields ();
233e8b28 3200
6b1747cd 3201 parm_types.reserve (nparms);
233e8b28 3202 for (jj = 0; jj < nparms; jj++)
6b1747cd 3203 {
38139a96 3204 type *t = (methods != NULL
5d14b6e5 3205 ? (TYPE_FN_FIELD_ARGS (methods, ix)[jj].type ())
5f9c5a63 3206 : functions[ix]->type ()->field (jj).type ());
6b1747cd
PA
3207 parm_types.push_back (t);
3208 }
db577aea 3209 }
c906108c 3210
ac3eeb49 3211 /* Compare parameter types to supplied argument types. Skip
dda83cd7 3212 THIS for static methods. */
6b1747cd
PA
3213 bv = rank_function (parm_types,
3214 args.slice (static_offset));
c5aa993b 3215
e9194a1a
TBA
3216 if (overload_debug)
3217 {
3218 if (methods != NULL)
6cb06a8c
TT
3219 gdb_printf (gdb_stderr,
3220 "Overloaded method instance %s, # of parms %d\n",
3221 methods[ix].physname, (int) parm_types.size ());
e9194a1a 3222 else if (xmethods != NULL)
6cb06a8c
TT
3223 gdb_printf (gdb_stderr,
3224 "Xmethod worker, # of parms %d\n",
3225 (int) parm_types.size ());
e9194a1a 3226 else
6cb06a8c
TT
3227 gdb_printf (gdb_stderr,
3228 "Overloaded function instance "
3229 "%s # of parms %d\n",
3230 functions[ix]->demangled_name (),
3231 (int) parm_types.size ());
a992a3b0 3232
6cb06a8c
TT
3233 gdb_printf (gdb_stderr,
3234 "...Badness of length : {%d, %d}\n",
3235 bv[0].rank, bv[0].subrank);
a992a3b0
TBA
3236
3237 for (jj = 1; jj < bv.size (); jj++)
6cb06a8c
TT
3238 gdb_printf (gdb_stderr,
3239 "...Badness of arg %d : {%d, %d}\n",
3240 jj, bv[jj].rank, bv[jj].subrank);
e9194a1a
TBA
3241 }
3242
82ceee50 3243 if (oload_champ_bv->empty ())
c5aa993b 3244 {
82ceee50 3245 *oload_champ_bv = std::move (bv);
c5aa993b 3246 oload_champ = 0;
c5aa993b 3247 }
ac3eeb49
MS
3248 else /* See whether current candidate is better or worse than
3249 previous best. */
8d577d32 3250 switch (compare_badness (bv, *oload_champ_bv))
c5aa993b 3251 {
ac3eeb49
MS
3252 case 0: /* Top two contenders are equally good. */
3253 oload_ambiguous = 1;
c5aa993b 3254 break;
ac3eeb49
MS
3255 case 1: /* Incomparable top contenders. */
3256 oload_ambiguous = 2;
c5aa993b 3257 break;
ac3eeb49 3258 case 2: /* New champion, record details. */
82ceee50 3259 *oload_champ_bv = std::move (bv);
c5aa993b
JM
3260 oload_ambiguous = 0;
3261 oload_champ = ix;
c5aa993b
JM
3262 break;
3263 case 3:
3264 default:
3265 break;
3266 }
6b1ba9a0 3267 if (overload_debug)
6cb06a8c
TT
3268 gdb_printf (gdb_stderr, "Overload resolution "
3269 "champion is %d, ambiguous? %d\n",
3270 oload_champ, oload_ambiguous);
c906108c
SS
3271 }
3272
8d577d32
DC
3273 return oload_champ;
3274}
6b1ba9a0 3275
8d577d32
DC
3276/* Return 1 if we're looking at a static method, 0 if we're looking at
3277 a non-static method or a function that isn't a method. */
c906108c 3278
8d577d32 3279static int
2bca57ba 3280oload_method_static_p (struct fn_field *fns_ptr, int index)
8d577d32 3281{
2bca57ba 3282 if (fns_ptr && index >= 0 && TYPE_FN_FIELD_STATIC_P (fns_ptr, index))
8d577d32 3283 return 1;
c906108c 3284 else
8d577d32
DC
3285 return 0;
3286}
c906108c 3287
8d577d32
DC
3288/* Check how good an overload match OLOAD_CHAMP_BV represents. */
3289
3290static enum oload_classification
82ceee50 3291classify_oload_match (const badness_vector &oload_champ_bv,
8d577d32
DC
3292 int nargs,
3293 int static_offset)
3294{
3295 int ix;
da096638 3296 enum oload_classification worst = STANDARD;
8d577d32
DC
3297
3298 for (ix = 1; ix <= nargs - static_offset; ix++)
7f8c9282 3299 {
6403aeea 3300 /* If this conversion is as bad as INCOMPATIBLE_TYPE_BADNESS
dda83cd7 3301 or worse return INCOMPATIBLE. */
82ceee50 3302 if (compare_ranks (oload_champ_bv[ix],
dda83cd7 3303 INCOMPATIBLE_TYPE_BADNESS) <= 0)
ac3eeb49 3304 return INCOMPATIBLE; /* Truly mismatched types. */
6403aeea 3305 /* Otherwise If this conversion is as bad as
dda83cd7 3306 NS_POINTER_CONVERSION_BADNESS or worse return NON_STANDARD. */
82ceee50 3307 else if (compare_ranks (oload_champ_bv[ix],
dda83cd7 3308 NS_POINTER_CONVERSION_BADNESS) <= 0)
da096638 3309 worst = NON_STANDARD; /* Non-standard type conversions
ac3eeb49 3310 needed. */
7f8c9282 3311 }
02f0d45d 3312
da096638
KS
3313 /* If no INCOMPATIBLE classification was found, return the worst one
3314 that was found (if any). */
3315 return worst;
c906108c
SS
3316}
3317
ac3eeb49
MS
3318/* C++: return 1 is NAME is a legitimate name for the destructor of
3319 type TYPE. If TYPE does not have a destructor, or if NAME is
d8228535
JK
3320 inappropriate for TYPE, an error is signaled. Parameter TYPE should not yet
3321 have CHECK_TYPEDEF applied, this function will apply it itself. */
3322
c906108c 3323int
d8228535 3324destructor_name_p (const char *name, struct type *type)
c906108c 3325{
c906108c
SS
3326 if (name[0] == '~')
3327 {
a737d952 3328 const char *dname = type_name_or_error (type);
d8228535 3329 const char *cp = strchr (dname, '<');
c906108c
SS
3330 unsigned int len;
3331
3332 /* Do not compare the template part for template classes. */
3333 if (cp == NULL)
3334 len = strlen (dname);
3335 else
3336 len = cp - dname;
bf896cb0 3337 if (strlen (name + 1) != len || strncmp (dname, name + 1, len) != 0)
8a3fe4f8 3338 error (_("name of destructor must equal name of class"));
c906108c
SS
3339 else
3340 return 1;
3341 }
3342 return 0;
3343}
3344
3d567982
TT
3345/* Find an enum constant named NAME in TYPE. TYPE must be an "enum
3346 class". If the name is found, return a value representing it;
3347 otherwise throw an exception. */
3348
3349static struct value *
3350enum_constant_from_type (struct type *type, const char *name)
3351{
3352 int i;
3353 int name_len = strlen (name);
3354
78134374 3355 gdb_assert (type->code () == TYPE_CODE_ENUM
3bc440a2 3356 && type->is_declared_class ());
3d567982 3357
1f704f76 3358 for (i = TYPE_N_BASECLASSES (type); i < type->num_fields (); ++i)
3d567982 3359 {
33d16dd9 3360 const char *fname = type->field (i).name ();
3d567982
TT
3361 int len;
3362
2ad53ea1 3363 if (type->field (i).loc_kind () != FIELD_LOC_KIND_ENUMVAL
3d567982
TT
3364 || fname == NULL)
3365 continue;
3366
3367 /* Look for the trailing "::NAME", since enum class constant
3368 names are qualified here. */
3369 len = strlen (fname);
3370 if (len + 2 >= name_len
3371 && fname[len - name_len - 2] == ':'
3372 && fname[len - name_len - 1] == ':'
3373 && strcmp (&fname[len - name_len], name) == 0)
970db518 3374 return value_from_longest (type, type->field (i).loc_enumval ());
3d567982
TT
3375 }
3376
3377 error (_("no constant named \"%s\" in enum \"%s\""),
7d93a1e0 3378 name, type->name ());
3d567982
TT
3379}
3380
79c2c32d 3381/* C++: Given an aggregate type CURTYPE, and a member name NAME,
0d5de010
DJ
3382 return the appropriate member (or the address of the member, if
3383 WANT_ADDRESS). This function is used to resolve user expressions
3384 of the form "DOMAIN::NAME". For more details on what happens, see
3385 the comment before value_struct_elt_for_reference. */
79c2c32d
DC
3386
3387struct value *
c848d642 3388value_aggregate_elt (struct type *curtype, const char *name,
072bba3b 3389 struct type *expect_type, int want_address,
79c2c32d
DC
3390 enum noside noside)
3391{
78134374 3392 switch (curtype->code ())
79c2c32d
DC
3393 {
3394 case TYPE_CODE_STRUCT:
3395 case TYPE_CODE_UNION:
ac3eeb49 3396 return value_struct_elt_for_reference (curtype, 0, curtype,
072bba3b 3397 name, expect_type,
0d5de010 3398 want_address, noside);
79c2c32d 3399 case TYPE_CODE_NAMESPACE:
ac3eeb49
MS
3400 return value_namespace_elt (curtype, name,
3401 want_address, noside);
3d567982
TT
3402
3403 case TYPE_CODE_ENUM:
3404 return enum_constant_from_type (curtype, name);
3405
79c2c32d
DC
3406 default:
3407 internal_error (__FILE__, __LINE__,
e2e0b3e5 3408 _("non-aggregate type in value_aggregate_elt"));
79c2c32d
DC
3409 }
3410}
3411
072bba3b 3412/* Compares the two method/function types T1 and T2 for "equality"
b021a221 3413 with respect to the methods' parameters. If the types of the
072bba3b
KS
3414 two parameter lists are the same, returns 1; 0 otherwise. This
3415 comparison may ignore any artificial parameters in T1 if
3416 SKIP_ARTIFICIAL is non-zero. This function will ALWAYS skip
3417 the first artificial parameter in T1, assumed to be a 'this' pointer.
3418
3419 The type T2 is expected to have come from make_params (in eval.c). */
3420
3421static int
3422compare_parameters (struct type *t1, struct type *t2, int skip_artificial)
3423{
3424 int start = 0;
3425
1f704f76 3426 if (t1->num_fields () > 0 && TYPE_FIELD_ARTIFICIAL (t1, 0))
072bba3b
KS
3427 ++start;
3428
3429 /* If skipping artificial fields, find the first real field
581e13c1 3430 in T1. */
072bba3b
KS
3431 if (skip_artificial)
3432 {
1f704f76 3433 while (start < t1->num_fields ()
072bba3b
KS
3434 && TYPE_FIELD_ARTIFICIAL (t1, start))
3435 ++start;
3436 }
3437
581e13c1 3438 /* Now compare parameters. */
072bba3b
KS
3439
3440 /* Special case: a method taking void. T1 will contain no
3441 non-artificial fields, and T2 will contain TYPE_CODE_VOID. */
1f704f76 3442 if ((t1->num_fields () - start) == 0 && t2->num_fields () == 1
940da03e 3443 && t2->field (0).type ()->code () == TYPE_CODE_VOID)
072bba3b
KS
3444 return 1;
3445
1f704f76 3446 if ((t1->num_fields () - start) == t2->num_fields ())
072bba3b
KS
3447 {
3448 int i;
a109c7c1 3449
1f704f76 3450 for (i = 0; i < t2->num_fields (); ++i)
072bba3b 3451 {
940da03e
SM
3452 if (compare_ranks (rank_one_type (t1->field (start + i).type (),
3453 t2->field (i).type (), NULL),
dda83cd7 3454 EXACT_MATCH_BADNESS) != 0)
072bba3b
KS
3455 return 0;
3456 }
3457
3458 return 1;
3459 }
3460
3461 return 0;
3462}
3463
9f6b697b
WP
3464/* C++: Given an aggregate type VT, and a class type CLS, search
3465 recursively for CLS using value V; If found, store the offset
3466 which is either fetched from the virtual base pointer if CLS
3467 is virtual or accumulated offset of its parent classes if
3468 CLS is non-virtual in *BOFFS, set ISVIRT to indicate if CLS
3469 is virtual, and return true. If not found, return false. */
3470
3471static bool
3472get_baseclass_offset (struct type *vt, struct type *cls,
3473 struct value *v, int *boffs, bool *isvirt)
3474{
3475 for (int i = 0; i < TYPE_N_BASECLASSES (vt); i++)
3476 {
940da03e 3477 struct type *t = vt->field (i).type ();
9f6b697b 3478 if (types_equal (t, cls))
dda83cd7
SM
3479 {
3480 if (BASETYPE_VIA_VIRTUAL (vt, i))
3481 {
50888e42 3482 const gdb_byte *adr = value_contents_for_printing (v).data ();
9f6b697b
WP
3483 *boffs = baseclass_offset (vt, i, adr, value_offset (v),
3484 value_as_long (v), v);
3485 *isvirt = true;
dda83cd7
SM
3486 }
3487 else
9f6b697b 3488 *isvirt = false;
dda83cd7
SM
3489 return true;
3490 }
9f6b697b
WP
3491
3492 if (get_baseclass_offset (check_typedef (t), cls, v, boffs, isvirt))
dda83cd7 3493 {
9f6b697b
WP
3494 if (*isvirt == false) /* Add non-virtual base offset. */
3495 {
50888e42 3496 const gdb_byte *adr = value_contents_for_printing (v).data ();
9f6b697b
WP
3497 *boffs += baseclass_offset (vt, i, adr, value_offset (v),
3498 value_as_long (v), v);
3499 }
3500 return true;
3501 }
3502 }
3503
3504 return false;
3505}
3506
c906108c 3507/* C++: Given an aggregate type CURTYPE, and a member name NAME,
ac3eeb49
MS
3508 return the address of this member as a "pointer to member" type.
3509 If INTYPE is non-null, then it will be the type of the member we
3510 are looking for. This will help us resolve "pointers to member
3511 functions". This function is used to resolve user expressions of
3512 the form "DOMAIN::NAME". */
c906108c 3513
63d06c5c 3514static struct value *
fba45db2 3515value_struct_elt_for_reference (struct type *domain, int offset,
c848d642 3516 struct type *curtype, const char *name,
ac3eeb49
MS
3517 struct type *intype,
3518 int want_address,
63d06c5c 3519 enum noside noside)
c906108c 3520{
bf2977b5 3521 struct type *t = check_typedef (curtype);
52f0bd74 3522 int i;
b926417a 3523 struct value *result;
c906108c 3524
78134374
SM
3525 if (t->code () != TYPE_CODE_STRUCT
3526 && t->code () != TYPE_CODE_UNION)
3e43a32a
MS
3527 error (_("Internal error: non-aggregate type "
3528 "to value_struct_elt_for_reference"));
c906108c 3529
1f704f76 3530 for (i = t->num_fields () - 1; i >= TYPE_N_BASECLASSES (t); i--)
c906108c 3531 {
33d16dd9 3532 const char *t_field_name = t->field (i).name ();
c5aa993b 3533
6314a349 3534 if (t_field_name && strcmp (t_field_name, name) == 0)
c906108c 3535 {
ceacbf6e 3536 if (field_is_static (&t->field (i)))
c906108c 3537 {
b926417a 3538 struct value *v = value_static_field (t, i);
0d5de010
DJ
3539 if (want_address)
3540 v = value_addr (v);
c906108c
SS
3541 return v;
3542 }
3543 if (TYPE_FIELD_PACKED (t, i))
8a3fe4f8 3544 error (_("pointers to bitfield members not allowed"));
c5aa993b 3545
0d5de010
DJ
3546 if (want_address)
3547 return value_from_longest
940da03e 3548 (lookup_memberptr_type (t->field (i).type (), domain),
b610c045 3549 offset + (LONGEST) (t->field (i).loc_bitpos () >> 3));
f7e3ecae 3550 else if (noside != EVAL_NORMAL)
940da03e 3551 return allocate_value (t->field (i).type ());
0d5de010 3552 else
f7e3ecae
KS
3553 {
3554 /* Try to evaluate NAME as a qualified name with implicit
3555 this pointer. In this case, attempt to return the
3556 equivalent to `this->*(&TYPE::NAME)'. */
b926417a 3557 struct value *v = value_of_this_silent (current_language);
f7e3ecae
KS
3558 if (v != NULL)
3559 {
9f6b697b 3560 struct value *ptr, *this_v = v;
f7e3ecae
KS
3561 long mem_offset;
3562 struct type *type, *tmp;
3563
3564 ptr = value_aggregate_elt (domain, name, NULL, 1, noside);
3565 type = check_typedef (value_type (ptr));
3566 gdb_assert (type != NULL
78134374 3567 && type->code () == TYPE_CODE_MEMBERPTR);
4bfb94b8 3568 tmp = lookup_pointer_type (TYPE_SELF_TYPE (type));
f7e3ecae
KS
3569 v = value_cast_pointers (tmp, v, 1);
3570 mem_offset = value_as_long (ptr);
9f6b697b
WP
3571 if (domain != curtype)
3572 {
3573 /* Find class offset of type CURTYPE from either its
3574 parent type DOMAIN or the type of implied this. */
3575 int boff = 0;
3576 bool isvirt = false;
3577 if (get_baseclass_offset (domain, curtype, v, &boff,
3578 &isvirt))
dda83cd7 3579 mem_offset += boff;
9f6b697b 3580 else
dda83cd7
SM
3581 {
3582 struct type *p = check_typedef (value_type (this_v));
27710edb 3583 p = check_typedef (p->target_type ());
dda83cd7 3584 if (get_baseclass_offset (p, curtype, this_v,
9f6b697b 3585 &boff, &isvirt))
dda83cd7
SM
3586 mem_offset += boff;
3587 }
9f6b697b 3588 }
27710edb 3589 tmp = lookup_pointer_type (type->target_type ());
f7e3ecae
KS
3590 result = value_from_pointer (tmp,
3591 value_as_long (v) + mem_offset);
3592 return value_ind (result);
3593 }
3594
3595 error (_("Cannot reference non-static field \"%s\""), name);
3596 }
c906108c
SS
3597 }
3598 }
3599
ac3eeb49
MS
3600 /* C++: If it was not found as a data field, then try to return it
3601 as a pointer to a method. */
c906108c 3602
c906108c 3603 /* Perform all necessary dereferencing. */
78134374 3604 while (intype && intype->code () == TYPE_CODE_PTR)
27710edb 3605 intype = intype->target_type ();
c906108c
SS
3606
3607 for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
3608 {
0d5cff50 3609 const char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
c906108c 3610
6314a349 3611 if (t_field_name && strcmp (t_field_name, name) == 0)
c906108c 3612 {
072bba3b
KS
3613 int j;
3614 int len = TYPE_FN_FIELDLIST_LENGTH (t, i);
c906108c 3615 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
c5aa993b 3616
de17c821
DJ
3617 check_stub_method_group (t, i);
3618
c906108c
SS
3619 if (intype)
3620 {
072bba3b
KS
3621 for (j = 0; j < len; ++j)
3622 {
3693fdb3
PA
3623 if (TYPE_CONST (intype) != TYPE_FN_FIELD_CONST (f, j))
3624 continue;
3625 if (TYPE_VOLATILE (intype) != TYPE_FN_FIELD_VOLATILE (f, j))
3626 continue;
3627
072bba3b 3628 if (compare_parameters (TYPE_FN_FIELD_TYPE (f, j), intype, 0)
3e43a32a
MS
3629 || compare_parameters (TYPE_FN_FIELD_TYPE (f, j),
3630 intype, 1))
072bba3b
KS
3631 break;
3632 }
3633
3634 if (j == len)
3e43a32a
MS
3635 error (_("no member function matches "
3636 "that type instantiation"));
7f79b1c5 3637 }
c906108c 3638 else
072bba3b
KS
3639 {
3640 int ii;
7f79b1c5
DJ
3641
3642 j = -1;
53832f31 3643 for (ii = 0; ii < len; ++ii)
072bba3b 3644 {
7f79b1c5
DJ
3645 /* Skip artificial methods. This is necessary if,
3646 for example, the user wants to "print
3647 subclass::subclass" with only one user-defined
53832f31
TT
3648 constructor. There is no ambiguity in this case.
3649 We are careful here to allow artificial methods
3650 if they are the unique result. */
072bba3b 3651 if (TYPE_FN_FIELD_ARTIFICIAL (f, ii))
53832f31
TT
3652 {
3653 if (j == -1)
3654 j = ii;
3655 continue;
3656 }
072bba3b 3657
7f79b1c5
DJ
3658 /* Desired method is ambiguous if more than one
3659 method is defined. */
53832f31 3660 if (j != -1 && !TYPE_FN_FIELD_ARTIFICIAL (f, j))
3e43a32a
MS
3661 error (_("non-unique member `%s' requires "
3662 "type instantiation"), name);
072bba3b 3663
7f79b1c5
DJ
3664 j = ii;
3665 }
53832f31
TT
3666
3667 if (j == -1)
3668 error (_("no matching member function"));
072bba3b 3669 }
c5aa993b 3670
0d5de010
DJ
3671 if (TYPE_FN_FIELD_STATIC_P (f, j))
3672 {
ac3eeb49
MS
3673 struct symbol *s =
3674 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
d12307c1 3675 0, VAR_DOMAIN, 0).symbol;
a109c7c1 3676
0d5de010
DJ
3677 if (s == NULL)
3678 return NULL;
3679
3680 if (want_address)
63e43d3a 3681 return value_addr (read_var_value (s, 0, 0));
0d5de010 3682 else
63e43d3a 3683 return read_var_value (s, 0, 0);
0d5de010
DJ
3684 }
3685
c906108c
SS
3686 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
3687 {
0d5de010
DJ
3688 if (want_address)
3689 {
3690 result = allocate_value
3691 (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
ad4820ab 3692 cplus_make_method_ptr (value_type (result),
50888e42 3693 value_contents_writeable (result).data (),
0d5de010
DJ
3694 TYPE_FN_FIELD_VOFFSET (f, j), 1);
3695 }
3696 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
3697 return allocate_value (TYPE_FN_FIELD_TYPE (f, j));
3698 else
3699 error (_("Cannot reference virtual member function \"%s\""),
3700 name);
c906108c
SS
3701 }
3702 else
3703 {
ac3eeb49
MS
3704 struct symbol *s =
3705 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
d12307c1 3706 0, VAR_DOMAIN, 0).symbol;
a109c7c1 3707
c906108c 3708 if (s == NULL)
0d5de010
DJ
3709 return NULL;
3710
b926417a 3711 struct value *v = read_var_value (s, 0, 0);
0d5de010
DJ
3712 if (!want_address)
3713 result = v;
c906108c
SS
3714 else
3715 {
0d5de010 3716 result = allocate_value (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
ad4820ab 3717 cplus_make_method_ptr (value_type (result),
50888e42 3718 value_contents_writeable (result).data (),
42ae5230 3719 value_address (v), 0);
c906108c 3720 }
c906108c 3721 }
0d5de010 3722 return result;
c906108c
SS
3723 }
3724 }
3725 for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
3726 {
f23631e4 3727 struct value *v;
c906108c
SS
3728 int base_offset;
3729
3730 if (BASETYPE_VIA_VIRTUAL (t, i))
3731 base_offset = 0;
3732 else
3733 base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
3734 v = value_struct_elt_for_reference (domain,
3735 offset + base_offset,
3736 TYPE_BASECLASS (t, i),
ac3eeb49
MS
3737 name, intype,
3738 want_address, noside);
c906108c
SS
3739 if (v)
3740 return v;
3741 }
63d06c5c
DC
3742
3743 /* As a last chance, pretend that CURTYPE is a namespace, and look
3744 it up that way; this (frequently) works for types nested inside
3745 classes. */
3746
ac3eeb49
MS
3747 return value_maybe_namespace_elt (curtype, name,
3748 want_address, noside);
c906108c
SS
3749}
3750
79c2c32d
DC
3751/* C++: Return the member NAME of the namespace given by the type
3752 CURTYPE. */
3753
3754static struct value *
3755value_namespace_elt (const struct type *curtype,
c848d642 3756 const char *name, int want_address,
79c2c32d 3757 enum noside noside)
63d06c5c
DC
3758{
3759 struct value *retval = value_maybe_namespace_elt (curtype, name,
ac3eeb49
MS
3760 want_address,
3761 noside);
63d06c5c
DC
3762
3763 if (retval == NULL)
ac3eeb49 3764 error (_("No symbol \"%s\" in namespace \"%s\"."),
7d93a1e0 3765 name, curtype->name ());
63d06c5c
DC
3766
3767 return retval;
3768}
3769
3770/* A helper function used by value_namespace_elt and
3771 value_struct_elt_for_reference. It looks up NAME inside the
3772 context CURTYPE; this works if CURTYPE is a namespace or if CURTYPE
3773 is a class and NAME refers to a type in CURTYPE itself (as opposed
3774 to, say, some base class of CURTYPE). */
3775
3776static struct value *
3777value_maybe_namespace_elt (const struct type *curtype,
c848d642 3778 const char *name, int want_address,
63d06c5c 3779 enum noside noside)
79c2c32d 3780{
7d93a1e0 3781 const char *namespace_name = curtype->name ();
d12307c1 3782 struct block_symbol sym;
0d5de010 3783 struct value *result;
79c2c32d 3784
13387711 3785 sym = cp_lookup_symbol_namespace (namespace_name, name,
41f62f39
JK
3786 get_selected_block (0), VAR_DOMAIN);
3787
d12307c1 3788 if (sym.symbol == NULL)
63d06c5c 3789 return NULL;
79c2c32d 3790 else if ((noside == EVAL_AVOID_SIDE_EFFECTS)
66d7f48f 3791 && (sym.symbol->aclass () == LOC_TYPEDEF))
5f9c5a63 3792 result = allocate_value (sym.symbol->type ());
79c2c32d 3793 else
d12307c1 3794 result = value_of_variable (sym.symbol, sym.block);
0d5de010 3795
ae6a105d 3796 if (want_address)
0d5de010
DJ
3797 result = value_addr (result);
3798
3799 return result;
79c2c32d
DC
3800}
3801
dfcee124 3802/* Given a pointer or a reference value V, find its real (RTTI) type.
ac3eeb49 3803
c906108c 3804 Other parameters FULL, TOP, USING_ENC as with value_rtti_type()
ac3eeb49 3805 and refer to the values computed for the object pointed to. */
c906108c
SS
3806
3807struct type *
dfcee124 3808value_rtti_indirect_type (struct value *v, int *full,
6b850546 3809 LONGEST *top, int *using_enc)
c906108c 3810{
f7e5394d 3811 struct value *target = NULL;
dfcee124
AG
3812 struct type *type, *real_type, *target_type;
3813
3814 type = value_type (v);
3815 type = check_typedef (type);
aa006118 3816 if (TYPE_IS_REFERENCE (type))
dfcee124 3817 target = coerce_ref (v);
78134374 3818 else if (type->code () == TYPE_CODE_PTR)
f7e5394d 3819 {
f7e5394d 3820
a70b8144 3821 try
dda83cd7 3822 {
f7e5394d 3823 target = value_ind (v);
dda83cd7 3824 }
230d2906 3825 catch (const gdb_exception_error &except)
f7e5394d
SM
3826 {
3827 if (except.error == MEMORY_ERROR)
3828 {
3829 /* value_ind threw a memory error. The pointer is NULL or
dda83cd7
SM
3830 contains an uninitialized value: we can't determine any
3831 type. */
f7e5394d
SM
3832 return NULL;
3833 }
eedc3f4f 3834 throw;
f7e5394d
SM
3835 }
3836 }
dfcee124
AG
3837 else
3838 return NULL;
c906108c 3839
dfcee124
AG
3840 real_type = value_rtti_type (target, full, top, using_enc);
3841
3842 if (real_type)
3843 {
3844 /* Copy qualifiers to the referenced object. */
3845 target_type = value_type (target);
3846 real_type = make_cv_type (TYPE_CONST (target_type),
3847 TYPE_VOLATILE (target_type), real_type, NULL);
aa006118 3848 if (TYPE_IS_REFERENCE (type))
dda83cd7 3849 real_type = lookup_reference_type (real_type, type->code ());
78134374 3850 else if (type->code () == TYPE_CODE_PTR)
dda83cd7 3851 real_type = lookup_pointer_type (real_type);
dfcee124 3852 else
dda83cd7 3853 internal_error (__FILE__, __LINE__, _("Unexpected value type."));
dfcee124
AG
3854
3855 /* Copy qualifiers to the pointer/reference. */
3856 real_type = make_cv_type (TYPE_CONST (type), TYPE_VOLATILE (type),
3857 real_type, NULL);
3858 }
c906108c 3859
dfcee124 3860 return real_type;
c906108c
SS
3861}
3862
3863/* Given a value pointed to by ARGP, check its real run-time type, and
3864 if that is different from the enclosing type, create a new value
3865 using the real run-time type as the enclosing type (and of the same
3866 type as ARGP) and return it, with the embedded offset adjusted to
ac3eeb49
MS
3867 be the correct offset to the enclosed object. RTYPE is the type,
3868 and XFULL, XTOP, and XUSING_ENC are the other parameters, computed
3869 by value_rtti_type(). If these are available, they can be supplied
3870 and a second call to value_rtti_type() is avoided. (Pass RTYPE ==
3871 NULL if they're not available. */
c906108c 3872
f23631e4 3873struct value *
ac3eeb49
MS
3874value_full_object (struct value *argp,
3875 struct type *rtype,
3876 int xfull, int xtop,
fba45db2 3877 int xusing_enc)
c906108c 3878{
c5aa993b 3879 struct type *real_type;
c906108c 3880 int full = 0;
6b850546 3881 LONGEST top = -1;
c906108c 3882 int using_enc = 0;
f23631e4 3883 struct value *new_val;
c906108c
SS
3884
3885 if (rtype)
3886 {
3887 real_type = rtype;
3888 full = xfull;
3889 top = xtop;
3890 using_enc = xusing_enc;
3891 }
3892 else
3893 real_type = value_rtti_type (argp, &full, &top, &using_enc);
3894
ac3eeb49 3895 /* If no RTTI data, or if object is already complete, do nothing. */
4754a64e 3896 if (!real_type || real_type == value_enclosing_type (argp))
c906108c
SS
3897 return argp;
3898
a7860e76
TT
3899 /* In a destructor we might see a real type that is a superclass of
3900 the object's type. In this case it is better to leave the object
3901 as-is. */
3902 if (full
df86565b 3903 && real_type->length () < value_enclosing_type (argp)->length ())
a7860e76
TT
3904 return argp;
3905
c906108c 3906 /* If we have the full object, but for some reason the enclosing
ac3eeb49
MS
3907 type is wrong, set it. */
3908 /* pai: FIXME -- sounds iffy */
c906108c
SS
3909 if (full)
3910 {
4dfea560
DE
3911 argp = value_copy (argp);
3912 set_value_enclosing_type (argp, real_type);
c906108c
SS
3913 return argp;
3914 }
3915
581e13c1 3916 /* Check if object is in memory. */
c906108c
SS
3917 if (VALUE_LVAL (argp) != lval_memory)
3918 {
3e43a32a
MS
3919 warning (_("Couldn't retrieve complete object of RTTI "
3920 "type %s; object may be in register(s)."),
7d93a1e0 3921 real_type->name ());
c5aa993b 3922
c906108c
SS
3923 return argp;
3924 }
c5aa993b 3925
ac3eeb49
MS
3926 /* All other cases -- retrieve the complete object. */
3927 /* Go back by the computed top_offset from the beginning of the
3928 object, adjusting for the embedded offset of argp if that's what
3929 value_rtti_type used for its computation. */
42ae5230 3930 new_val = value_at_lazy (real_type, value_address (argp) - top +
13c3b5f5 3931 (using_enc ? 0 : value_embedded_offset (argp)));
04624583 3932 deprecated_set_value_type (new_val, value_type (argp));
13c3b5f5
AC
3933 set_value_embedded_offset (new_val, (using_enc
3934 ? top + value_embedded_offset (argp)
3935 : top));
c906108c
SS
3936 return new_val;
3937}
3938
389e51db 3939
85bc8cb7
JK
3940/* Return the value of the local variable, if one exists. Throw error
3941 otherwise, such as if the request is made in an inappropriate context. */
c906108c 3942
f23631e4 3943struct value *
85bc8cb7 3944value_of_this (const struct language_defn *lang)
c906108c 3945{
63e43d3a 3946 struct block_symbol sym;
3977b71f 3947 const struct block *b;
206415a3 3948 struct frame_info *frame;
c906108c 3949
5bae7c4e 3950 if (lang->name_of_this () == NULL)
85bc8cb7 3951 error (_("no `this' in current language"));
aee28ec6 3952
85bc8cb7 3953 frame = get_selected_frame (_("no frame selected"));
c906108c 3954
66a17cb6 3955 b = get_frame_block (frame, NULL);
c906108c 3956
63e43d3a
PMR
3957 sym = lookup_language_this (lang, b);
3958 if (sym.symbol == NULL)
85bc8cb7 3959 error (_("current stack frame does not contain a variable named `%s'"),
5bae7c4e 3960 lang->name_of_this ());
85bc8cb7 3961
63e43d3a 3962 return read_var_value (sym.symbol, sym.block, frame);
85bc8cb7
JK
3963}
3964
3965/* Return the value of the local variable, if one exists. Return NULL
3966 otherwise. Never throw error. */
3967
3968struct value *
3969value_of_this_silent (const struct language_defn *lang)
3970{
3971 struct value *ret = NULL;
85bc8cb7 3972
a70b8144 3973 try
c906108c 3974 {
85bc8cb7 3975 ret = value_of_this (lang);
c906108c 3976 }
230d2906 3977 catch (const gdb_exception_error &except)
492d29ea
PA
3978 {
3979 }
c906108c 3980
d069f99d
AF
3981 return ret;
3982}
3983
ac3eeb49
MS
3984/* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH
3985 elements long, starting at LOWBOUND. The result has the same lower
3986 bound as the original ARRAY. */
c906108c 3987
f23631e4
AC
3988struct value *
3989value_slice (struct value *array, int lowbound, int length)
c906108c
SS
3990{
3991 struct type *slice_range_type, *slice_type, *range_type;
7a67d0fe 3992 LONGEST lowerbound, upperbound;
f23631e4 3993 struct value *slice;
c906108c 3994 struct type *array_type;
ac3eeb49 3995
df407dfe 3996 array_type = check_typedef (value_type (array));
78134374
SM
3997 if (array_type->code () != TYPE_CODE_ARRAY
3998 && array_type->code () != TYPE_CODE_STRING)
8a3fe4f8 3999 error (_("cannot take slice of non-array"));
ac3eeb49 4000
a7067863
AB
4001 if (type_not_allocated (array_type))
4002 error (_("array not allocated"));
4003 if (type_not_associated (array_type))
4004 error (_("array not associated"));
4005
3d967001 4006 range_type = array_type->index_type ();
1f8d2881 4007 if (!get_discrete_bounds (range_type, &lowerbound, &upperbound))
8a3fe4f8 4008 error (_("slice from bad array or bitstring"));
ac3eeb49 4009
c906108c 4010 if (lowbound < lowerbound || length < 0
db034ac5 4011 || lowbound + length - 1 > upperbound)
8a3fe4f8 4012 error (_("slice out of range"));
ac3eeb49 4013
c906108c
SS
4014 /* FIXME-type-allocation: need a way to free this type when we are
4015 done with it. */
cafb3438 4016 slice_range_type = create_static_range_type (NULL,
27710edb 4017 range_type->target_type (),
0c9c3474
SA
4018 lowbound,
4019 lowbound + length - 1);
ac3eeb49 4020
a7c88acd 4021 {
27710edb 4022 struct type *element_type = array_type->target_type ();
a7c88acd 4023 LONGEST offset
df86565b 4024 = (lowbound - lowerbound) * check_typedef (element_type)->length ();
ac3eeb49 4025
cafb3438 4026 slice_type = create_array_type (NULL,
a7c88acd
JB
4027 element_type,
4028 slice_range_type);
78134374 4029 slice_type->set_code (array_type->code ());
ac3eeb49 4030
a7c88acd
JB
4031 if (VALUE_LVAL (array) == lval_memory && value_lazy (array))
4032 slice = allocate_value_lazy (slice_type);
4033 else
4034 {
4035 slice = allocate_value (slice_type);
4036 value_contents_copy (slice, 0, array, offset,
3ae385af 4037 type_length_units (slice_type));
a7c88acd
JB
4038 }
4039
4040 set_value_component_location (slice, array);
a7c88acd
JB
4041 set_value_offset (slice, value_offset (array) + offset);
4042 }
ac3eeb49 4043
c906108c
SS
4044 return slice;
4045}
4046
6b4a335b 4047/* See value.h. */
c906108c 4048
f23631e4 4049struct value *
6b4a335b 4050value_literal_complex (struct value *arg1,
ac3eeb49
MS
4051 struct value *arg2,
4052 struct type *type)
c906108c 4053{
f23631e4 4054 struct value *val;
27710edb 4055 struct type *real_type = type->target_type ();
c906108c
SS
4056
4057 val = allocate_value (type);
4058 arg1 = value_cast (real_type, arg1);
4059 arg2 = value_cast (real_type, arg2);
4060
df86565b 4061 int len = real_type->length ();
4bce7cda
SM
4062
4063 copy (value_contents (arg1),
4064 value_contents_raw (val).slice (0, len));
4065 copy (value_contents (arg2),
4066 value_contents_raw (val).slice (len, len));
4067
c906108c
SS
4068 return val;
4069}
4070
4c99290d
TT
4071/* See value.h. */
4072
4073struct value *
4074value_real_part (struct value *value)
4075{
4076 struct type *type = check_typedef (value_type (value));
27710edb 4077 struct type *ttype = type->target_type ();
4c99290d 4078
78134374 4079 gdb_assert (type->code () == TYPE_CODE_COMPLEX);
4c99290d
TT
4080 return value_from_component (value, ttype, 0);
4081}
4082
4083/* See value.h. */
4084
4085struct value *
4086value_imaginary_part (struct value *value)
4087{
4088 struct type *type = check_typedef (value_type (value));
27710edb 4089 struct type *ttype = type->target_type ();
4c99290d 4090
78134374 4091 gdb_assert (type->code () == TYPE_CODE_COMPLEX);
4c99290d 4092 return value_from_component (value, ttype,
df86565b 4093 check_typedef (ttype)->length ());
4c99290d
TT
4094}
4095
ac3eeb49 4096/* Cast a value into the appropriate complex data type. */
c906108c 4097
f23631e4
AC
4098static struct value *
4099cast_into_complex (struct type *type, struct value *val)
c906108c 4100{
27710edb 4101 struct type *real_type = type->target_type ();
ac3eeb49 4102
78134374 4103 if (value_type (val)->code () == TYPE_CODE_COMPLEX)
c906108c 4104 {
27710edb 4105 struct type *val_real_type = value_type (val)->target_type ();
f23631e4
AC
4106 struct value *re_val = allocate_value (val_real_type);
4107 struct value *im_val = allocate_value (val_real_type);
df86565b 4108 int len = val_real_type->length ();
c906108c 4109
4bce7cda
SM
4110 copy (value_contents (val).slice (0, len),
4111 value_contents_raw (re_val));
4112 copy (value_contents (val).slice (len, len),
4113 value_contents_raw (im_val));
c906108c
SS
4114
4115 return value_literal_complex (re_val, im_val, type);
4116 }
78134374
SM
4117 else if (value_type (val)->code () == TYPE_CODE_FLT
4118 || value_type (val)->code () == TYPE_CODE_INT)
ac3eeb49
MS
4119 return value_literal_complex (val,
4120 value_zero (real_type, not_lval),
4121 type);
c906108c 4122 else
8a3fe4f8 4123 error (_("cannot cast non-number to complex"));
c906108c
SS
4124}
4125
6c265988 4126void _initialize_valops ();
c906108c 4127void
6c265988 4128_initialize_valops ()
c906108c 4129{
5bf193a2
AC
4130 add_setshow_boolean_cmd ("overload-resolution", class_support,
4131 &overload_resolution, _("\
4132Set overload resolution in evaluating C++ functions."), _("\
ac3eeb49
MS
4133Show overload resolution in evaluating C++ functions."),
4134 NULL, NULL,
920d2a44 4135 show_overload_resolution,
5bf193a2 4136 &setlist, &showlist);
c906108c 4137 overload_resolution = 1;
c906108c 4138}