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