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