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