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