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