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