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