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