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