Update
[gdb.git] / gdb / valops.c
blob69ebb15f82137a5beb6150c2a1973ae2d5b5a8da
1 /* Perform non-arithmetic operations on values, for GDB.
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 Free Software Foundation, Inc.
7 This file is part of GDB.
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.
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.
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/>. */
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"
41 #include <errno.h>
42 #include "gdb_string.h"
43 #include "gdb_assert.h"
44 #include "cp-support.h"
45 #include "observer.h"
47 extern int overload_debug;
48 /* Local functions. */
50 static int typecmp (int staticp, int varargs, int nargs,
51 struct field t1[], struct value *t2[]);
53 static struct value *search_struct_field (char *, struct value *,
54 int, struct type *, int);
56 static struct value *search_struct_method (char *, struct value **,
57 struct value **,
58 int, int *, struct type *);
60 static int find_oload_champ_namespace (struct type **, int,
61 const char *, const char *,
62 struct symbol ***,
63 struct badness_vector **);
65 static
66 int find_oload_champ_namespace_loop (struct type **, int,
67 const char *, const char *,
68 int, struct symbol ***,
69 struct badness_vector **, int *);
71 static int find_oload_champ (struct type **, int, int, int,
72 struct fn_field *, struct symbol **,
73 struct badness_vector **);
75 static int oload_method_static (int, struct fn_field *, int);
77 enum oload_classification { STANDARD, NON_STANDARD, INCOMPATIBLE };
79 static enum
80 oload_classification classify_oload_match (struct badness_vector *,
81 int, int);
83 static int check_field_in (struct type *, const char *);
85 static struct value *value_struct_elt_for_reference (struct type *,
86 int, struct type *,
87 char *,
88 struct type *,
89 int, enum noside);
91 static struct value *value_namespace_elt (const struct type *,
92 char *, int , enum noside);
94 static struct value *value_maybe_namespace_elt (const struct type *,
95 char *, int,
96 enum noside);
98 static CORE_ADDR allocate_space_in_inferior (int);
100 static struct value *cast_into_complex (struct type *, struct value *);
102 static struct fn_field *find_method_list (struct value **, char *,
103 int, struct type *, int *,
104 struct type **, int *);
106 void _initialize_valops (void);
108 #if 0
109 /* Flag for whether we want to abandon failed expression evals by
110 default. */
112 static int auto_abandon = 0;
113 #endif
115 int overload_resolution = 0;
116 static void
117 show_overload_resolution (struct ui_file *file, int from_tty,
118 struct cmd_list_element *c,
119 const char *value)
121 fprintf_filtered (file, _("\
122 Overload resolution in evaluating C++ functions is %s.\n"),
123 value);
126 /* Find the address of function name NAME in the inferior. */
128 struct value *
129 find_function_in_inferior (const char *name)
131 struct symbol *sym;
132 sym = lookup_symbol (name, 0, VAR_DOMAIN, 0, NULL);
133 if (sym != NULL)
135 if (SYMBOL_CLASS (sym) != LOC_BLOCK)
137 error (_("\"%s\" exists in this program but is not a function."),
138 name);
140 return value_of_variable (sym, NULL);
142 else
144 struct minimal_symbol *msymbol =
145 lookup_minimal_symbol (name, NULL, NULL);
146 if (msymbol != NULL)
148 struct type *type;
149 CORE_ADDR maddr;
150 type = lookup_pointer_type (builtin_type_char);
151 type = lookup_function_type (type);
152 type = lookup_pointer_type (type);
153 maddr = SYMBOL_VALUE_ADDRESS (msymbol);
154 return value_from_pointer (type, maddr);
156 else
158 if (!target_has_execution)
159 error (_("evaluation of this expression requires the target program to be active"));
160 else
161 error (_("evaluation of this expression requires the program to have a function \"%s\"."), name);
166 /* Allocate NBYTES of space in the inferior using the inferior's
167 malloc and return a value that is a pointer to the allocated
168 space. */
170 struct value *
171 value_allocate_space_in_inferior (int len)
173 struct value *blocklen;
174 struct value *val =
175 find_function_in_inferior (gdbarch_name_of_malloc (current_gdbarch));
177 blocklen = value_from_longest (builtin_type_int, (LONGEST) len);
178 val = call_function_by_hand (val, 1, &blocklen);
179 if (value_logical_not (val))
181 if (!target_has_execution)
182 error (_("No memory available to program now: you need to start the target first"));
183 else
184 error (_("No memory available to program: call to malloc failed"));
186 return val;
189 static CORE_ADDR
190 allocate_space_in_inferior (int len)
192 return value_as_long (value_allocate_space_in_inferior (len));
195 /* Cast one pointer or reference type to another. Both TYPE and
196 the type of ARG2 should be pointer types, or else both should be
197 reference types. Returns the new pointer or reference. */
199 struct value *
200 value_cast_pointers (struct type *type, struct value *arg2)
202 struct type *type2 = check_typedef (value_type (arg2));
203 struct type *t1 = check_typedef (TYPE_TARGET_TYPE (type));
204 struct type *t2 = check_typedef (TYPE_TARGET_TYPE (type2));
206 if (TYPE_CODE (t1) == TYPE_CODE_STRUCT
207 && TYPE_CODE (t2) == TYPE_CODE_STRUCT
208 && !value_logical_not (arg2))
210 struct value *v;
212 /* Look in the type of the source to see if it contains the
213 type of the target as a superclass. If so, we'll need to
214 offset the pointer rather than just change its type. */
215 if (TYPE_NAME (t1) != NULL)
217 struct value *v2;
219 if (TYPE_CODE (type2) == TYPE_CODE_REF)
220 v2 = coerce_ref (arg2);
221 else
222 v2 = value_ind (arg2);
223 v = search_struct_field (type_name_no_tag (t1),
224 v2, 0, t2, 1);
225 if (v)
227 v = value_addr (v);
228 deprecated_set_value_type (v, type);
229 return v;
233 /* Look in the type of the target to see if it contains the
234 type of the source as a superclass. If so, we'll need to
235 offset the pointer rather than just change its type.
236 FIXME: This fails silently with virtual inheritance. */
237 if (TYPE_NAME (t2) != NULL)
239 v = search_struct_field (type_name_no_tag (t2),
240 value_zero (t1, not_lval), 0, t1, 1);
241 if (v)
243 CORE_ADDR addr2 = value_as_address (arg2);
244 addr2 -= (VALUE_ADDRESS (v)
245 + value_offset (v)
246 + value_embedded_offset (v));
247 return value_from_pointer (type, addr2);
252 /* No superclass found, just change the pointer type. */
253 arg2 = value_copy (arg2);
254 deprecated_set_value_type (arg2, type);
255 arg2 = value_change_enclosing_type (arg2, type);
256 set_value_pointed_to_offset (arg2, 0); /* pai: chk_val */
257 return arg2;
260 /* Cast value ARG2 to type TYPE and return as a value.
261 More general than a C cast: accepts any two types of the same length,
262 and if ARG2 is an lvalue it can be cast into anything at all. */
263 /* In C++, casts may change pointer or object representations. */
265 struct value *
266 value_cast (struct type *type, struct value *arg2)
268 enum type_code code1;
269 enum type_code code2;
270 int scalar;
271 struct type *type2;
273 int convert_to_boolean = 0;
275 if (value_type (arg2) == type)
276 return arg2;
278 CHECK_TYPEDEF (type);
279 code1 = TYPE_CODE (type);
280 arg2 = coerce_ref (arg2);
281 type2 = check_typedef (value_type (arg2));
283 /* You can't cast to a reference type. See value_cast_pointers
284 instead. */
285 gdb_assert (code1 != TYPE_CODE_REF);
287 /* A cast to an undetermined-length array_type, such as
288 (TYPE [])OBJECT, is treated like a cast to (TYPE [N])OBJECT,
289 where N is sizeof(OBJECT)/sizeof(TYPE). */
290 if (code1 == TYPE_CODE_ARRAY)
292 struct type *element_type = TYPE_TARGET_TYPE (type);
293 unsigned element_length = TYPE_LENGTH (check_typedef (element_type));
294 if (element_length > 0
295 && TYPE_ARRAY_UPPER_BOUND_TYPE (type) == BOUND_CANNOT_BE_DETERMINED)
297 struct type *range_type = TYPE_INDEX_TYPE (type);
298 int val_length = TYPE_LENGTH (type2);
299 LONGEST low_bound, high_bound, new_length;
300 if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
301 low_bound = 0, high_bound = 0;
302 new_length = val_length / element_length;
303 if (val_length % element_length != 0)
304 warning (_("array element type size does not divide object size in cast"));
305 /* FIXME-type-allocation: need a way to free this type when
306 we are done with it. */
307 range_type = create_range_type ((struct type *) NULL,
308 TYPE_TARGET_TYPE (range_type),
309 low_bound,
310 new_length + low_bound - 1);
311 deprecated_set_value_type (arg2,
312 create_array_type ((struct type *) NULL,
313 element_type,
314 range_type));
315 return arg2;
319 if (current_language->c_style_arrays
320 && TYPE_CODE (type2) == TYPE_CODE_ARRAY)
321 arg2 = value_coerce_array (arg2);
323 if (TYPE_CODE (type2) == TYPE_CODE_FUNC)
324 arg2 = value_coerce_function (arg2);
326 type2 = check_typedef (value_type (arg2));
327 code2 = TYPE_CODE (type2);
329 if (code1 == TYPE_CODE_COMPLEX)
330 return cast_into_complex (type, arg2);
331 if (code1 == TYPE_CODE_BOOL)
333 code1 = TYPE_CODE_INT;
334 convert_to_boolean = 1;
336 if (code1 == TYPE_CODE_CHAR)
337 code1 = TYPE_CODE_INT;
338 if (code2 == TYPE_CODE_BOOL || code2 == TYPE_CODE_CHAR)
339 code2 = TYPE_CODE_INT;
341 scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_FLT
342 || code2 == TYPE_CODE_DECFLOAT || code2 == TYPE_CODE_ENUM
343 || code2 == TYPE_CODE_RANGE);
345 if (code1 == TYPE_CODE_STRUCT
346 && code2 == TYPE_CODE_STRUCT
347 && TYPE_NAME (type) != 0)
349 /* Look in the type of the source to see if it contains the
350 type of the target as a superclass. If so, we'll need to
351 offset the object in addition to changing its type. */
352 struct value *v = search_struct_field (type_name_no_tag (type),
353 arg2, 0, type2, 1);
354 if (v)
356 deprecated_set_value_type (v, type);
357 return v;
360 if (code1 == TYPE_CODE_FLT && scalar)
361 return value_from_double (type, value_as_double (arg2));
362 else if (code1 == TYPE_CODE_DECFLOAT && scalar)
364 int dec_len = TYPE_LENGTH (type);
365 gdb_byte dec[16];
367 if (code2 == TYPE_CODE_FLT)
368 decimal_from_floating (arg2, dec, dec_len);
369 else if (code2 == TYPE_CODE_DECFLOAT)
370 decimal_convert (value_contents (arg2), TYPE_LENGTH (type2),
371 dec, dec_len);
372 else
373 /* The only option left is an integral type. */
374 decimal_from_integral (arg2, dec, dec_len);
376 return value_from_decfloat (type, dec);
378 else if ((code1 == TYPE_CODE_INT || code1 == TYPE_CODE_ENUM
379 || code1 == TYPE_CODE_RANGE)
380 && (scalar || code2 == TYPE_CODE_PTR
381 || code2 == TYPE_CODE_MEMBERPTR))
383 LONGEST longest;
385 /* When we cast pointers to integers, we mustn't use
386 gdbarch_pointer_to_address to find the address the pointer
387 represents, as value_as_long would. GDB should evaluate
388 expressions just as the compiler would --- and the compiler
389 sees a cast as a simple reinterpretation of the pointer's
390 bits. */
391 if (code2 == TYPE_CODE_PTR)
392 longest = extract_unsigned_integer (value_contents (arg2),
393 TYPE_LENGTH (type2));
394 else
395 longest = value_as_long (arg2);
396 return value_from_longest (type, convert_to_boolean ?
397 (LONGEST) (longest ? 1 : 0) : longest);
399 else if (code1 == TYPE_CODE_PTR && (code2 == TYPE_CODE_INT
400 || code2 == TYPE_CODE_ENUM
401 || code2 == TYPE_CODE_RANGE))
403 /* TYPE_LENGTH (type) is the length of a pointer, but we really
404 want the length of an address! -- we are really dealing with
405 addresses (i.e., gdb representations) not pointers (i.e.,
406 target representations) here.
408 This allows things like "print *(int *)0x01000234" to work
409 without printing a misleading message -- which would
410 otherwise occur when dealing with a target having two byte
411 pointers and four byte addresses. */
413 int addr_bit = gdbarch_addr_bit (current_gdbarch);
415 LONGEST longest = value_as_long (arg2);
416 if (addr_bit < sizeof (LONGEST) * HOST_CHAR_BIT)
418 if (longest >= ((LONGEST) 1 << addr_bit)
419 || longest <= -((LONGEST) 1 << addr_bit))
420 warning (_("value truncated"));
422 return value_from_longest (type, longest);
424 else if (code1 == TYPE_CODE_METHODPTR && code2 == TYPE_CODE_INT
425 && value_as_long (arg2) == 0)
427 struct value *result = allocate_value (type);
428 cplus_make_method_ptr (value_contents_writeable (result), 0, 0);
429 return result;
431 else if (code1 == TYPE_CODE_MEMBERPTR && code2 == TYPE_CODE_INT
432 && value_as_long (arg2) == 0)
434 /* The Itanium C++ ABI represents NULL pointers to members as
435 minus one, instead of biasing the normal case. */
436 return value_from_longest (type, -1);
438 else if (TYPE_LENGTH (type) == TYPE_LENGTH (type2))
440 if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
441 return value_cast_pointers (type, arg2);
443 arg2 = value_copy (arg2);
444 deprecated_set_value_type (arg2, type);
445 arg2 = value_change_enclosing_type (arg2, type);
446 set_value_pointed_to_offset (arg2, 0); /* pai: chk_val */
447 return arg2;
449 else if (VALUE_LVAL (arg2) == lval_memory)
450 return value_at_lazy (type,
451 VALUE_ADDRESS (arg2) + value_offset (arg2));
452 else if (code1 == TYPE_CODE_VOID)
454 return value_zero (builtin_type_void, not_lval);
456 else
458 error (_("Invalid cast."));
459 return 0;
463 /* Create a value of type TYPE that is zero, and return it. */
465 struct value *
466 value_zero (struct type *type, enum lval_type lv)
468 struct value *val = allocate_value (type);
469 VALUE_LVAL (val) = lv;
471 return val;
474 /* Create a value of numeric type TYPE that is one, and return it. */
476 struct value *
477 value_one (struct type *type, enum lval_type lv)
479 struct type *type1 = check_typedef (type);
480 struct value *val = NULL; /* avoid -Wall warning */
482 if (TYPE_CODE (type1) == TYPE_CODE_DECFLOAT)
484 struct value *int_one = value_from_longest (builtin_type_int, 1);
485 struct value *val;
486 gdb_byte v[16];
488 decimal_from_integral (int_one, v, TYPE_LENGTH (builtin_type_int));
489 val = value_from_decfloat (type, v);
491 else if (TYPE_CODE (type1) == TYPE_CODE_FLT)
493 val = value_from_double (type, (DOUBLEST) 1);
495 else if (is_integral_type (type1))
497 val = value_from_longest (type, (LONGEST) 1);
499 else
501 error (_("Not a numeric type."));
504 VALUE_LVAL (val) = lv;
505 return val;
508 /* Return a value with type TYPE located at ADDR.
510 Call value_at only if the data needs to be fetched immediately;
511 if we can be 'lazy' and defer the fetch, perhaps indefinately, call
512 value_at_lazy instead. value_at_lazy simply records the address of
513 the data and sets the lazy-evaluation-required flag. The lazy flag
514 is tested in the value_contents macro, which is used if and when
515 the contents are actually required.
517 Note: value_at does *NOT* handle embedded offsets; perform such
518 adjustments before or after calling it. */
520 struct value *
521 value_at (struct type *type, CORE_ADDR addr)
523 struct value *val;
525 if (TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
526 error (_("Attempt to dereference a generic pointer."));
528 val = allocate_value (type);
530 read_memory (addr, value_contents_all_raw (val), TYPE_LENGTH (type));
532 VALUE_LVAL (val) = lval_memory;
533 VALUE_ADDRESS (val) = addr;
535 return val;
538 /* Return a lazy value with type TYPE located at ADDR (cf. value_at). */
540 struct value *
541 value_at_lazy (struct type *type, CORE_ADDR addr)
543 struct value *val;
545 if (TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
546 error (_("Attempt to dereference a generic pointer."));
548 val = allocate_value (type);
550 VALUE_LVAL (val) = lval_memory;
551 VALUE_ADDRESS (val) = addr;
552 set_value_lazy (val, 1);
554 return val;
557 /* Called only from the value_contents and value_contents_all()
558 macros, if the current data for a variable needs to be loaded into
559 value_contents(VAL). Fetches the data from the user's process, and
560 clears the lazy flag to indicate that the data in the buffer is
561 valid.
563 If the value is zero-length, we avoid calling read_memory, which
564 would abort. We mark the value as fetched anyway -- all 0 bytes of
567 This function returns a value because it is used in the
568 value_contents macro as part of an expression, where a void would
569 not work. The value is ignored. */
572 value_fetch_lazy (struct value *val)
574 CORE_ADDR addr = VALUE_ADDRESS (val) + value_offset (val);
575 int length = TYPE_LENGTH (value_enclosing_type (val));
577 struct type *type = value_type (val);
578 if (length)
579 read_memory (addr, value_contents_all_raw (val), length);
581 set_value_lazy (val, 0);
582 return 0;
586 /* Store the contents of FROMVAL into the location of TOVAL.
587 Return a new value with the location of TOVAL and contents of FROMVAL. */
589 struct value *
590 value_assign (struct value *toval, struct value *fromval)
592 struct type *type;
593 struct value *val;
594 struct frame_id old_frame;
596 if (!deprecated_value_modifiable (toval))
597 error (_("Left operand of assignment is not a modifiable lvalue."));
599 toval = coerce_ref (toval);
601 type = value_type (toval);
602 if (VALUE_LVAL (toval) != lval_internalvar)
603 fromval = value_cast (type, fromval);
604 else
605 fromval = coerce_array (fromval);
606 CHECK_TYPEDEF (type);
608 /* Since modifying a register can trash the frame chain, and
609 modifying memory can trash the frame cache, we save the old frame
610 and then restore the new frame afterwards. */
611 old_frame = get_frame_id (deprecated_safe_get_selected_frame ());
613 switch (VALUE_LVAL (toval))
615 case lval_internalvar:
616 set_internalvar (VALUE_INTERNALVAR (toval), fromval);
617 val = value_copy (VALUE_INTERNALVAR (toval)->value);
618 val = value_change_enclosing_type (val,
619 value_enclosing_type (fromval));
620 set_value_embedded_offset (val, value_embedded_offset (fromval));
621 set_value_pointed_to_offset (val,
622 value_pointed_to_offset (fromval));
623 return val;
625 case lval_internalvar_component:
626 set_internalvar_component (VALUE_INTERNALVAR (toval),
627 value_offset (toval),
628 value_bitpos (toval),
629 value_bitsize (toval),
630 fromval);
631 break;
633 case lval_memory:
635 const gdb_byte *dest_buffer;
636 CORE_ADDR changed_addr;
637 int changed_len;
638 gdb_byte buffer[sizeof (LONGEST)];
640 if (value_bitsize (toval))
642 /* We assume that the argument to read_memory is in units
643 of host chars. FIXME: Is that correct? */
644 changed_len = (value_bitpos (toval)
645 + value_bitsize (toval)
646 + HOST_CHAR_BIT - 1)
647 / HOST_CHAR_BIT;
649 if (changed_len > (int) sizeof (LONGEST))
650 error (_("Can't handle bitfields which don't fit in a %d bit word."),
651 (int) sizeof (LONGEST) * HOST_CHAR_BIT);
653 read_memory (VALUE_ADDRESS (toval) + value_offset (toval),
654 buffer, changed_len);
655 modify_field (buffer, value_as_long (fromval),
656 value_bitpos (toval), value_bitsize (toval));
657 changed_addr = VALUE_ADDRESS (toval) + value_offset (toval);
658 dest_buffer = buffer;
660 else
662 changed_addr = VALUE_ADDRESS (toval) + value_offset (toval);
663 changed_len = TYPE_LENGTH (type);
664 dest_buffer = value_contents (fromval);
667 write_memory (changed_addr, dest_buffer, changed_len);
668 if (deprecated_memory_changed_hook)
669 deprecated_memory_changed_hook (changed_addr, changed_len);
671 break;
673 case lval_register:
675 struct frame_info *frame;
676 int value_reg;
678 /* Figure out which frame this is in currently. */
679 frame = frame_find_by_id (VALUE_FRAME_ID (toval));
680 value_reg = VALUE_REGNUM (toval);
682 if (!frame)
683 error (_("Value being assigned to is no longer active."));
685 if (gdbarch_convert_register_p
686 (current_gdbarch, VALUE_REGNUM (toval), type))
688 /* If TOVAL is a special machine register requiring
689 conversion of program values to a special raw
690 format. */
691 gdbarch_value_to_register (current_gdbarch, frame,
692 VALUE_REGNUM (toval), type,
693 value_contents (fromval));
695 else
697 if (value_bitsize (toval))
699 int changed_len;
700 gdb_byte buffer[sizeof (LONGEST)];
702 changed_len = (value_bitpos (toval)
703 + value_bitsize (toval)
704 + HOST_CHAR_BIT - 1)
705 / HOST_CHAR_BIT;
707 if (changed_len > (int) sizeof (LONGEST))
708 error (_("Can't handle bitfields which don't fit in a %d bit word."),
709 (int) sizeof (LONGEST) * HOST_CHAR_BIT);
711 get_frame_register_bytes (frame, value_reg,
712 value_offset (toval),
713 changed_len, buffer);
715 modify_field (buffer, value_as_long (fromval),
716 value_bitpos (toval),
717 value_bitsize (toval));
719 put_frame_register_bytes (frame, value_reg,
720 value_offset (toval),
721 changed_len, buffer);
723 else
725 put_frame_register_bytes (frame, value_reg,
726 value_offset (toval),
727 TYPE_LENGTH (type),
728 value_contents (fromval));
732 if (deprecated_register_changed_hook)
733 deprecated_register_changed_hook (-1);
734 observer_notify_target_changed (&current_target);
735 break;
738 default:
739 error (_("Left operand of assignment is not an lvalue."));
742 /* Assigning to the stack pointer, frame pointer, and other
743 (architecture and calling convention specific) registers may
744 cause the frame cache to be out of date. Assigning to memory
745 also can. We just do this on all assignments to registers or
746 memory, for simplicity's sake; I doubt the slowdown matters. */
747 switch (VALUE_LVAL (toval))
749 case lval_memory:
750 case lval_register:
752 reinit_frame_cache ();
754 /* Having destroyed the frame cache, restore the selected
755 frame. */
757 /* FIXME: cagney/2002-11-02: There has to be a better way of
758 doing this. Instead of constantly saving/restoring the
759 frame. Why not create a get_selected_frame() function that,
760 having saved the selected frame's ID can automatically
761 re-find the previously selected frame automatically. */
764 struct frame_info *fi = frame_find_by_id (old_frame);
765 if (fi != NULL)
766 select_frame (fi);
769 break;
770 default:
771 break;
774 /* If the field does not entirely fill a LONGEST, then zero the sign
775 bits. If the field is signed, and is negative, then sign
776 extend. */
777 if ((value_bitsize (toval) > 0)
778 && (value_bitsize (toval) < 8 * (int) sizeof (LONGEST)))
780 LONGEST fieldval = value_as_long (fromval);
781 LONGEST valmask = (((ULONGEST) 1) << value_bitsize (toval)) - 1;
783 fieldval &= valmask;
784 if (!TYPE_UNSIGNED (type)
785 && (fieldval & (valmask ^ (valmask >> 1))))
786 fieldval |= ~valmask;
788 fromval = value_from_longest (type, fieldval);
791 val = value_copy (toval);
792 memcpy (value_contents_raw (val), value_contents (fromval),
793 TYPE_LENGTH (type));
794 deprecated_set_value_type (val, type);
795 val = value_change_enclosing_type (val,
796 value_enclosing_type (fromval));
797 set_value_embedded_offset (val, value_embedded_offset (fromval));
798 set_value_pointed_to_offset (val, value_pointed_to_offset (fromval));
800 return val;
803 /* Extend a value VAL to COUNT repetitions of its type. */
805 struct value *
806 value_repeat (struct value *arg1, int count)
808 struct value *val;
810 if (VALUE_LVAL (arg1) != lval_memory)
811 error (_("Only values in memory can be extended with '@'."));
812 if (count < 1)
813 error (_("Invalid number %d of repetitions."), count);
815 val = allocate_repeat_value (value_enclosing_type (arg1), count);
817 read_memory (VALUE_ADDRESS (arg1) + value_offset (arg1),
818 value_contents_all_raw (val),
819 TYPE_LENGTH (value_enclosing_type (val)));
820 VALUE_LVAL (val) = lval_memory;
821 VALUE_ADDRESS (val) = VALUE_ADDRESS (arg1) + value_offset (arg1);
823 return val;
826 struct value *
827 value_of_variable (struct symbol *var, struct block *b)
829 struct value *val;
830 struct frame_info *frame = NULL;
832 if (!b)
833 frame = NULL; /* Use selected frame. */
834 else if (symbol_read_needs_frame (var))
836 frame = block_innermost_frame (b);
837 if (!frame)
839 if (BLOCK_FUNCTION (b)
840 && SYMBOL_PRINT_NAME (BLOCK_FUNCTION (b)))
841 error (_("No frame is currently executing in block %s."),
842 SYMBOL_PRINT_NAME (BLOCK_FUNCTION (b)));
843 else
844 error (_("No frame is currently executing in specified block"));
848 val = read_var_value (var, frame);
849 if (!val)
850 error (_("Address of symbol \"%s\" is unknown."), SYMBOL_PRINT_NAME (var));
852 return val;
855 /* Given a value which is an array, return a value which is a pointer
856 to its first element, regardless of whether or not the array has a
857 nonzero lower bound.
859 FIXME: A previous comment here indicated that this routine should
860 be substracting the array's lower bound. It's not clear to me that
861 this is correct. Given an array subscripting operation, it would
862 certainly work to do the adjustment here, essentially computing:
864 (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
866 However I believe a more appropriate and logical place to account
867 for the lower bound is to do so in value_subscript, essentially
868 computing:
870 (&array[0] + ((index - lowerbound) * sizeof array[0]))
872 As further evidence consider what would happen with operations
873 other than array subscripting, where the caller would get back a
874 value that had an address somewhere before the actual first element
875 of the array, and the information about the lower bound would be
876 lost because of the coercion to pointer type.
879 struct value *
880 value_coerce_array (struct value *arg1)
882 struct type *type = check_typedef (value_type (arg1));
884 if (VALUE_LVAL (arg1) != lval_memory)
885 error (_("Attempt to take address of value not located in memory."));
887 return value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
888 (VALUE_ADDRESS (arg1) + value_offset (arg1)));
891 /* Given a value which is a function, return a value which is a pointer
892 to it. */
894 struct value *
895 value_coerce_function (struct value *arg1)
897 struct value *retval;
899 if (VALUE_LVAL (arg1) != lval_memory)
900 error (_("Attempt to take address of value not located in memory."));
902 retval = value_from_pointer (lookup_pointer_type (value_type (arg1)),
903 (VALUE_ADDRESS (arg1) + value_offset (arg1)));
904 return retval;
907 /* Return a pointer value for the object for which ARG1 is the
908 contents. */
910 struct value *
911 value_addr (struct value *arg1)
913 struct value *arg2;
915 struct type *type = check_typedef (value_type (arg1));
916 if (TYPE_CODE (type) == TYPE_CODE_REF)
918 /* Copy the value, but change the type from (T&) to (T*). We
919 keep the same location information, which is efficient, and
920 allows &(&X) to get the location containing the reference. */
921 arg2 = value_copy (arg1);
922 deprecated_set_value_type (arg2,
923 lookup_pointer_type (TYPE_TARGET_TYPE (type)));
924 return arg2;
926 if (TYPE_CODE (type) == TYPE_CODE_FUNC)
927 return value_coerce_function (arg1);
929 if (VALUE_LVAL (arg1) != lval_memory)
930 error (_("Attempt to take address of value not located in memory."));
932 /* Get target memory address */
933 arg2 = value_from_pointer (lookup_pointer_type (value_type (arg1)),
934 (VALUE_ADDRESS (arg1)
935 + value_offset (arg1)
936 + value_embedded_offset (arg1)));
938 /* This may be a pointer to a base subobject; so remember the
939 full derived object's type ... */
940 arg2 = value_change_enclosing_type (arg2, lookup_pointer_type (value_enclosing_type (arg1)));
941 /* ... and also the relative position of the subobject in the full
942 object. */
943 set_value_pointed_to_offset (arg2, value_embedded_offset (arg1));
944 return arg2;
947 /* Return a reference value for the object for which ARG1 is the
948 contents. */
950 struct value *
951 value_ref (struct value *arg1)
953 struct value *arg2;
955 struct type *type = check_typedef (value_type (arg1));
956 if (TYPE_CODE (type) == TYPE_CODE_REF)
957 return arg1;
959 arg2 = value_addr (arg1);
960 deprecated_set_value_type (arg2, lookup_reference_type (type));
961 return arg2;
964 /* Given a value of a pointer type, apply the C unary * operator to
965 it. */
967 struct value *
968 value_ind (struct value *arg1)
970 struct type *base_type;
971 struct value *arg2;
973 arg1 = coerce_array (arg1);
975 base_type = check_typedef (value_type (arg1));
977 /* Allow * on an integer so we can cast it to whatever we want.
978 This returns an int, which seems like the most C-like thing to
979 do. "long long" variables are rare enough that
980 BUILTIN_TYPE_LONGEST would seem to be a mistake. */
981 if (TYPE_CODE (base_type) == TYPE_CODE_INT)
982 return value_at_lazy (builtin_type_int,
983 (CORE_ADDR) value_as_address (arg1));
984 else if (TYPE_CODE (base_type) == TYPE_CODE_PTR)
986 struct type *enc_type;
987 /* We may be pointing to something embedded in a larger object.
988 Get the real type of the enclosing object. */
989 enc_type = check_typedef (value_enclosing_type (arg1));
990 enc_type = TYPE_TARGET_TYPE (enc_type);
992 if (TYPE_CODE (check_typedef (enc_type)) == TYPE_CODE_FUNC
993 || TYPE_CODE (check_typedef (enc_type)) == TYPE_CODE_METHOD)
994 /* For functions, go through find_function_addr, which knows
995 how to handle function descriptors. */
996 arg2 = value_at_lazy (enc_type,
997 find_function_addr (arg1, NULL));
998 else
999 /* Retrieve the enclosing object pointed to */
1000 arg2 = value_at_lazy (enc_type,
1001 (value_as_address (arg1)
1002 - value_pointed_to_offset (arg1)));
1004 /* Re-adjust type. */
1005 deprecated_set_value_type (arg2, TYPE_TARGET_TYPE (base_type));
1006 /* Add embedding info. */
1007 arg2 = value_change_enclosing_type (arg2, enc_type);
1008 set_value_embedded_offset (arg2, value_pointed_to_offset (arg1));
1010 /* We may be pointing to an object of some derived type. */
1011 arg2 = value_full_object (arg2, NULL, 0, 0, 0);
1012 return arg2;
1015 error (_("Attempt to take contents of a non-pointer value."));
1016 return 0; /* For lint -- never reached. */
1019 /* Create a value for an array by allocating space in the inferior,
1020 copying the data into that space, and then setting up an array
1021 value.
1023 The array bounds are set from LOWBOUND and HIGHBOUND, and the array
1024 is populated from the values passed in ELEMVEC.
1026 The element type of the array is inherited from the type of the
1027 first element, and all elements must have the same size (though we
1028 don't currently enforce any restriction on their types). */
1030 struct value *
1031 value_array (int lowbound, int highbound, struct value **elemvec)
1033 int nelem;
1034 int idx;
1035 unsigned int typelength;
1036 struct value *val;
1037 struct type *rangetype;
1038 struct type *arraytype;
1039 CORE_ADDR addr;
1041 /* Validate that the bounds are reasonable and that each of the
1042 elements have the same size. */
1044 nelem = highbound - lowbound + 1;
1045 if (nelem <= 0)
1047 error (_("bad array bounds (%d, %d)"), lowbound, highbound);
1049 typelength = TYPE_LENGTH (value_enclosing_type (elemvec[0]));
1050 for (idx = 1; idx < nelem; idx++)
1052 if (TYPE_LENGTH (value_enclosing_type (elemvec[idx])) != typelength)
1054 error (_("array elements must all be the same size"));
1058 rangetype = create_range_type ((struct type *) NULL,
1059 builtin_type_int,
1060 lowbound, highbound);
1061 arraytype = create_array_type ((struct type *) NULL,
1062 value_enclosing_type (elemvec[0]),
1063 rangetype);
1065 if (!current_language->c_style_arrays)
1067 val = allocate_value (arraytype);
1068 for (idx = 0; idx < nelem; idx++)
1070 memcpy (value_contents_all_raw (val) + (idx * typelength),
1071 value_contents_all (elemvec[idx]),
1072 typelength);
1074 return val;
1077 /* Allocate space to store the array in the inferior, and then
1078 initialize it by copying in each element. FIXME: Is it worth it
1079 to create a local buffer in which to collect each value and then
1080 write all the bytes in one operation? */
1082 addr = allocate_space_in_inferior (nelem * typelength);
1083 for (idx = 0; idx < nelem; idx++)
1085 write_memory (addr + (idx * typelength),
1086 value_contents_all (elemvec[idx]),
1087 typelength);
1090 /* Create the array type and set up an array value to be evaluated
1091 lazily. */
1093 val = value_at_lazy (arraytype, addr);
1094 return (val);
1097 /* Create a value for a string constant by allocating space in the
1098 inferior, copying the data into that space, and returning the
1099 address with type TYPE_CODE_STRING. PTR points to the string
1100 constant data; LEN is number of characters.
1102 Note that string types are like array of char types with a lower
1103 bound of zero and an upper bound of LEN - 1. Also note that the
1104 string may contain embedded null bytes. */
1106 struct value *
1107 value_string (char *ptr, int len)
1109 struct value *val;
1110 int lowbound = current_language->string_lower_bound;
1111 struct type *rangetype = create_range_type ((struct type *) NULL,
1112 builtin_type_int,
1113 lowbound,
1114 len + lowbound - 1);
1115 struct type *stringtype
1116 = create_string_type ((struct type *) NULL, rangetype);
1117 CORE_ADDR addr;
1119 if (current_language->c_style_arrays == 0)
1121 val = allocate_value (stringtype);
1122 memcpy (value_contents_raw (val), ptr, len);
1123 return val;
1127 /* Allocate space to store the string in the inferior, and then copy
1128 LEN bytes from PTR in gdb to that address in the inferior. */
1130 addr = allocate_space_in_inferior (len);
1131 write_memory (addr, (gdb_byte *) ptr, len);
1133 val = value_at_lazy (stringtype, addr);
1134 return (val);
1137 struct value *
1138 value_bitstring (char *ptr, int len)
1140 struct value *val;
1141 struct type *domain_type = create_range_type (NULL,
1142 builtin_type_int,
1143 0, len - 1);
1144 struct type *type = create_set_type ((struct type *) NULL,
1145 domain_type);
1146 TYPE_CODE (type) = TYPE_CODE_BITSTRING;
1147 val = allocate_value (type);
1148 memcpy (value_contents_raw (val), ptr, TYPE_LENGTH (type));
1149 return val;
1152 /* See if we can pass arguments in T2 to a function which takes
1153 arguments of types T1. T1 is a list of NARGS arguments, and T2 is
1154 a NULL-terminated vector. If some arguments need coercion of some
1155 sort, then the coerced values are written into T2. Return value is
1156 0 if the arguments could be matched, or the position at which they
1157 differ if not.
1159 STATICP is nonzero if the T1 argument list came from a static
1160 member function. T2 will still include the ``this'' pointer, but
1161 it will be skipped.
1163 For non-static member functions, we ignore the first argument,
1164 which is the type of the instance variable. This is because we
1165 want to handle calls with objects from derived classes. This is
1166 not entirely correct: we should actually check to make sure that a
1167 requested operation is type secure, shouldn't we? FIXME. */
1169 static int
1170 typecmp (int staticp, int varargs, int nargs,
1171 struct field t1[], struct value *t2[])
1173 int i;
1175 if (t2 == 0)
1176 internal_error (__FILE__, __LINE__,
1177 _("typecmp: no argument list"));
1179 /* Skip ``this'' argument if applicable. T2 will always include
1180 THIS. */
1181 if (staticp)
1182 t2 ++;
1184 for (i = 0;
1185 (i < nargs) && TYPE_CODE (t1[i].type) != TYPE_CODE_VOID;
1186 i++)
1188 struct type *tt1, *tt2;
1190 if (!t2[i])
1191 return i + 1;
1193 tt1 = check_typedef (t1[i].type);
1194 tt2 = check_typedef (value_type (t2[i]));
1196 if (TYPE_CODE (tt1) == TYPE_CODE_REF
1197 /* We should be doing hairy argument matching, as below. */
1198 && (TYPE_CODE (check_typedef (TYPE_TARGET_TYPE (tt1))) == TYPE_CODE (tt2)))
1200 if (TYPE_CODE (tt2) == TYPE_CODE_ARRAY)
1201 t2[i] = value_coerce_array (t2[i]);
1202 else
1203 t2[i] = value_ref (t2[i]);
1204 continue;
1207 /* djb - 20000715 - Until the new type structure is in the
1208 place, and we can attempt things like implicit conversions,
1209 we need to do this so you can take something like a map<const
1210 char *>, and properly access map["hello"], because the
1211 argument to [] will be a reference to a pointer to a char,
1212 and the argument will be a pointer to a char. */
1213 while (TYPE_CODE(tt1) == TYPE_CODE_REF
1214 || TYPE_CODE (tt1) == TYPE_CODE_PTR)
1216 tt1 = check_typedef( TYPE_TARGET_TYPE(tt1) );
1218 while (TYPE_CODE(tt2) == TYPE_CODE_ARRAY
1219 || TYPE_CODE(tt2) == TYPE_CODE_PTR
1220 || TYPE_CODE(tt2) == TYPE_CODE_REF)
1222 tt2 = check_typedef (TYPE_TARGET_TYPE(tt2));
1224 if (TYPE_CODE (tt1) == TYPE_CODE (tt2))
1225 continue;
1226 /* Array to pointer is a `trivial conversion' according to the
1227 ARM. */
1229 /* We should be doing much hairier argument matching (see
1230 section 13.2 of the ARM), but as a quick kludge, just check
1231 for the same type code. */
1232 if (TYPE_CODE (t1[i].type) != TYPE_CODE (value_type (t2[i])))
1233 return i + 1;
1235 if (varargs || t2[i] == NULL)
1236 return 0;
1237 return i + 1;
1240 /* Helper function used by value_struct_elt to recurse through
1241 baseclasses. Look for a field NAME in ARG1. Adjust the address of
1242 ARG1 by OFFSET bytes, and search in it assuming it has (class) type
1243 TYPE. If found, return value, else return NULL.
1245 If LOOKING_FOR_BASECLASS, then instead of looking for struct
1246 fields, look for a baseclass named NAME. */
1248 static struct value *
1249 search_struct_field (char *name, struct value *arg1, int offset,
1250 struct type *type, int looking_for_baseclass)
1252 int i;
1253 int nbases = TYPE_N_BASECLASSES (type);
1255 CHECK_TYPEDEF (type);
1257 if (!looking_for_baseclass)
1258 for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
1260 char *t_field_name = TYPE_FIELD_NAME (type, i);
1262 if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
1264 struct value *v;
1265 if (TYPE_FIELD_STATIC (type, i))
1267 v = value_static_field (type, i);
1268 if (v == 0)
1269 error (_("field %s is nonexistent or has been optimised out"),
1270 name);
1272 else
1274 v = value_primitive_field (arg1, offset, i, type);
1275 if (v == 0)
1276 error (_("there is no field named %s"), name);
1278 return v;
1281 if (t_field_name
1282 && (t_field_name[0] == '\0'
1283 || (TYPE_CODE (type) == TYPE_CODE_UNION
1284 && (strcmp_iw (t_field_name, "else") == 0))))
1286 struct type *field_type = TYPE_FIELD_TYPE (type, i);
1287 if (TYPE_CODE (field_type) == TYPE_CODE_UNION
1288 || TYPE_CODE (field_type) == TYPE_CODE_STRUCT)
1290 /* Look for a match through the fields of an anonymous
1291 union, or anonymous struct. C++ provides anonymous
1292 unions.
1294 In the GNU Chill (now deleted from GDB)
1295 implementation of variant record types, each
1296 <alternative field> has an (anonymous) union type,
1297 each member of the union represents a <variant
1298 alternative>. Each <variant alternative> is
1299 represented as a struct, with a member for each
1300 <variant field>. */
1302 struct value *v;
1303 int new_offset = offset;
1305 /* This is pretty gross. In G++, the offset in an
1306 anonymous union is relative to the beginning of the
1307 enclosing struct. In the GNU Chill (now deleted
1308 from GDB) implementation of variant records, the
1309 bitpos is zero in an anonymous union field, so we
1310 have to add the offset of the union here. */
1311 if (TYPE_CODE (field_type) == TYPE_CODE_STRUCT
1312 || (TYPE_NFIELDS (field_type) > 0
1313 && TYPE_FIELD_BITPOS (field_type, 0) == 0))
1314 new_offset += TYPE_FIELD_BITPOS (type, i) / 8;
1316 v = search_struct_field (name, arg1, new_offset,
1317 field_type,
1318 looking_for_baseclass);
1319 if (v)
1320 return v;
1325 for (i = 0; i < nbases; i++)
1327 struct value *v;
1328 struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
1329 /* If we are looking for baseclasses, this is what we get when
1330 we hit them. But it could happen that the base part's member
1331 name is not yet filled in. */
1332 int found_baseclass = (looking_for_baseclass
1333 && TYPE_BASECLASS_NAME (type, i) != NULL
1334 && (strcmp_iw (name,
1335 TYPE_BASECLASS_NAME (type,
1336 i)) == 0));
1338 if (BASETYPE_VIA_VIRTUAL (type, i))
1340 int boffset;
1341 struct value *v2 = allocate_value (basetype);
1343 boffset = baseclass_offset (type, i,
1344 value_contents (arg1) + offset,
1345 VALUE_ADDRESS (arg1)
1346 + value_offset (arg1) + offset);
1347 if (boffset == -1)
1348 error (_("virtual baseclass botch"));
1350 /* The virtual base class pointer might have been clobbered
1351 by the user program. Make sure that it still points to a
1352 valid memory location. */
1354 boffset += offset;
1355 if (boffset < 0 || boffset >= TYPE_LENGTH (type))
1357 CORE_ADDR base_addr;
1359 base_addr =
1360 VALUE_ADDRESS (arg1) + value_offset (arg1) + boffset;
1361 if (target_read_memory (base_addr,
1362 value_contents_raw (v2),
1363 TYPE_LENGTH (basetype)) != 0)
1364 error (_("virtual baseclass botch"));
1365 VALUE_LVAL (v2) = lval_memory;
1366 VALUE_ADDRESS (v2) = base_addr;
1368 else
1370 VALUE_LVAL (v2) = VALUE_LVAL (arg1);
1371 VALUE_ADDRESS (v2) = VALUE_ADDRESS (arg1);
1372 VALUE_FRAME_ID (v2) = VALUE_FRAME_ID (arg1);
1373 set_value_offset (v2, value_offset (arg1) + boffset);
1374 if (value_lazy (arg1))
1375 set_value_lazy (v2, 1);
1376 else
1377 memcpy (value_contents_raw (v2),
1378 value_contents_raw (arg1) + boffset,
1379 TYPE_LENGTH (basetype));
1382 if (found_baseclass)
1383 return v2;
1384 v = search_struct_field (name, v2, 0,
1385 TYPE_BASECLASS (type, i),
1386 looking_for_baseclass);
1388 else if (found_baseclass)
1389 v = value_primitive_field (arg1, offset, i, type);
1390 else
1391 v = search_struct_field (name, arg1,
1392 offset + TYPE_BASECLASS_BITPOS (type,
1393 i) / 8,
1394 basetype, looking_for_baseclass);
1395 if (v)
1396 return v;
1398 return NULL;
1401 /* Helper function used by value_struct_elt to recurse through
1402 baseclasses. Look for a field NAME in ARG1. Adjust the address of
1403 ARG1 by OFFSET bytes, and search in it assuming it has (class) type
1404 TYPE.
1406 If found, return value, else if name matched and args not return
1407 (value) -1, else return NULL. */
1409 static struct value *
1410 search_struct_method (char *name, struct value **arg1p,
1411 struct value **args, int offset,
1412 int *static_memfuncp, struct type *type)
1414 int i;
1415 struct value *v;
1416 int name_matched = 0;
1417 char dem_opname[64];
1419 CHECK_TYPEDEF (type);
1420 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
1422 char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
1423 /* FIXME! May need to check for ARM demangling here */
1424 if (strncmp (t_field_name, "__", 2) == 0 ||
1425 strncmp (t_field_name, "op", 2) == 0 ||
1426 strncmp (t_field_name, "type", 4) == 0)
1428 if (cplus_demangle_opname (t_field_name, dem_opname, DMGL_ANSI))
1429 t_field_name = dem_opname;
1430 else if (cplus_demangle_opname (t_field_name, dem_opname, 0))
1431 t_field_name = dem_opname;
1433 if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
1435 int j = TYPE_FN_FIELDLIST_LENGTH (type, i) - 1;
1436 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
1437 name_matched = 1;
1439 check_stub_method_group (type, i);
1440 if (j > 0 && args == 0)
1441 error (_("cannot resolve overloaded method `%s': no arguments supplied"), name);
1442 else if (j == 0 && args == 0)
1444 v = value_fn_field (arg1p, f, j, type, offset);
1445 if (v != NULL)
1446 return v;
1448 else
1449 while (j >= 0)
1451 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
1452 TYPE_VARARGS (TYPE_FN_FIELD_TYPE (f, j)),
1453 TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (f, j)),
1454 TYPE_FN_FIELD_ARGS (f, j), args))
1456 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
1457 return value_virtual_fn_field (arg1p, f, j,
1458 type, offset);
1459 if (TYPE_FN_FIELD_STATIC_P (f, j)
1460 && static_memfuncp)
1461 *static_memfuncp = 1;
1462 v = value_fn_field (arg1p, f, j, type, offset);
1463 if (v != NULL)
1464 return v;
1466 j--;
1471 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1473 int base_offset;
1475 if (BASETYPE_VIA_VIRTUAL (type, i))
1477 struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
1478 const gdb_byte *base_valaddr;
1480 /* The virtual base class pointer might have been
1481 clobbered by the user program. Make sure that it
1482 still points to a valid memory location. */
1484 if (offset < 0 || offset >= TYPE_LENGTH (type))
1486 gdb_byte *tmp = alloca (TYPE_LENGTH (baseclass));
1487 if (target_read_memory (VALUE_ADDRESS (*arg1p)
1488 + value_offset (*arg1p) + offset,
1489 tmp, TYPE_LENGTH (baseclass)) != 0)
1490 error (_("virtual baseclass botch"));
1491 base_valaddr = tmp;
1493 else
1494 base_valaddr = value_contents (*arg1p) + offset;
1496 base_offset = baseclass_offset (type, i, base_valaddr,
1497 VALUE_ADDRESS (*arg1p)
1498 + value_offset (*arg1p) + offset);
1499 if (base_offset == -1)
1500 error (_("virtual baseclass botch"));
1502 else
1504 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
1506 v = search_struct_method (name, arg1p, args, base_offset + offset,
1507 static_memfuncp, TYPE_BASECLASS (type, i));
1508 if (v == (struct value *) - 1)
1510 name_matched = 1;
1512 else if (v)
1514 /* FIXME-bothner: Why is this commented out? Why is it here? */
1515 /* *arg1p = arg1_tmp; */
1516 return v;
1519 if (name_matched)
1520 return (struct value *) - 1;
1521 else
1522 return NULL;
1525 /* Given *ARGP, a value of type (pointer to a)* structure/union,
1526 extract the component named NAME from the ultimate target
1527 structure/union and return it as a value with its appropriate type.
1528 ERR is used in the error message if *ARGP's type is wrong.
1530 C++: ARGS is a list of argument types to aid in the selection of
1531 an appropriate method. Also, handle derived types.
1533 STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
1534 where the truthvalue of whether the function that was resolved was
1535 a static member function or not is stored.
1537 ERR is an error message to be printed in case the field is not
1538 found. */
1540 struct value *
1541 value_struct_elt (struct value **argp, struct value **args,
1542 char *name, int *static_memfuncp, char *err)
1544 struct type *t;
1545 struct value *v;
1547 *argp = coerce_array (*argp);
1549 t = check_typedef (value_type (*argp));
1551 /* Follow pointers until we get to a non-pointer. */
1553 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1555 *argp = value_ind (*argp);
1556 /* Don't coerce fn pointer to fn and then back again! */
1557 if (TYPE_CODE (value_type (*argp)) != TYPE_CODE_FUNC)
1558 *argp = coerce_array (*argp);
1559 t = check_typedef (value_type (*argp));
1562 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
1563 && TYPE_CODE (t) != TYPE_CODE_UNION)
1564 error (_("Attempt to extract a component of a value that is not a %s."), err);
1566 /* Assume it's not, unless we see that it is. */
1567 if (static_memfuncp)
1568 *static_memfuncp = 0;
1570 if (!args)
1572 /* if there are no arguments ...do this... */
1574 /* Try as a field first, because if we succeed, there is less
1575 work to be done. */
1576 v = search_struct_field (name, *argp, 0, t, 0);
1577 if (v)
1578 return v;
1580 /* C++: If it was not found as a data field, then try to
1581 return it as a pointer to a method. */
1583 if (destructor_name_p (name, t))
1584 error (_("Cannot get value of destructor"));
1586 v = search_struct_method (name, argp, args, 0,
1587 static_memfuncp, t);
1589 if (v == (struct value *) - 1)
1590 error (_("Cannot take address of method %s."), name);
1591 else if (v == 0)
1593 if (TYPE_NFN_FIELDS (t))
1594 error (_("There is no member or method named %s."), name);
1595 else
1596 error (_("There is no member named %s."), name);
1598 return v;
1601 if (destructor_name_p (name, t))
1603 if (!args[1])
1605 /* Destructors are a special case. */
1606 int m_index, f_index;
1608 v = NULL;
1609 if (get_destructor_fn_field (t, &m_index, &f_index))
1611 v = value_fn_field (NULL,
1612 TYPE_FN_FIELDLIST1 (t, m_index),
1613 f_index, NULL, 0);
1615 if (v == NULL)
1616 error (_("could not find destructor function named %s."),
1617 name);
1618 else
1619 return v;
1621 else
1623 error (_("destructor should not have any argument"));
1626 else
1627 v = search_struct_method (name, argp, args, 0,
1628 static_memfuncp, t);
1630 if (v == (struct value *) - 1)
1632 error (_("One of the arguments you tried to pass to %s could not be converted to what the function wants."), name);
1634 else if (v == 0)
1636 /* See if user tried to invoke data as function. If so, hand it
1637 back. If it's not callable (i.e., a pointer to function),
1638 gdb should give an error. */
1639 v = search_struct_field (name, *argp, 0, t, 0);
1642 if (!v)
1643 error (_("Structure has no component named %s."), name);
1644 return v;
1647 /* Search through the methods of an object (and its bases) to find a
1648 specified method. Return the pointer to the fn_field list of
1649 overloaded instances.
1651 Helper function for value_find_oload_list.
1652 ARGP is a pointer to a pointer to a value (the object).
1653 METHOD is a string containing the method name.
1654 OFFSET is the offset within the value.
1655 TYPE is the assumed type of the object.
1656 NUM_FNS is the number of overloaded instances.
1657 BASETYPE is set to the actual type of the subobject where the
1658 method is found.
1659 BOFFSET is the offset of the base subobject where the method is found.
1662 static struct fn_field *
1663 find_method_list (struct value **argp, char *method,
1664 int offset, struct type *type, int *num_fns,
1665 struct type **basetype, int *boffset)
1667 int i;
1668 struct fn_field *f;
1669 CHECK_TYPEDEF (type);
1671 *num_fns = 0;
1673 /* First check in object itself. */
1674 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; i--)
1676 /* pai: FIXME What about operators and type conversions? */
1677 char *fn_field_name = TYPE_FN_FIELDLIST_NAME (type, i);
1678 if (fn_field_name && (strcmp_iw (fn_field_name, method) == 0))
1680 int len = TYPE_FN_FIELDLIST_LENGTH (type, i);
1681 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
1683 *num_fns = len;
1684 *basetype = type;
1685 *boffset = offset;
1687 /* Resolve any stub methods. */
1688 check_stub_method_group (type, i);
1690 return f;
1694 /* Not found in object, check in base subobjects. */
1695 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1697 int base_offset;
1698 if (BASETYPE_VIA_VIRTUAL (type, i))
1700 base_offset = value_offset (*argp) + offset;
1701 base_offset = baseclass_offset (type, i,
1702 value_contents (*argp) + base_offset,
1703 VALUE_ADDRESS (*argp) + base_offset);
1704 if (base_offset == -1)
1705 error (_("virtual baseclass botch"));
1707 else /* Non-virtual base, simply use bit position from debug
1708 info. */
1710 base_offset = TYPE_BASECLASS_BITPOS (type, i) / 8;
1712 f = find_method_list (argp, method, base_offset + offset,
1713 TYPE_BASECLASS (type, i), num_fns,
1714 basetype, boffset);
1715 if (f)
1716 return f;
1718 return NULL;
1721 /* Return the list of overloaded methods of a specified name.
1723 ARGP is a pointer to a pointer to a value (the object).
1724 METHOD is the method name.
1725 OFFSET is the offset within the value contents.
1726 NUM_FNS is the number of overloaded instances.
1727 BASETYPE is set to the type of the base subobject that defines the
1728 method.
1729 BOFFSET is the offset of the base subobject which defines the method.
1732 struct fn_field *
1733 value_find_oload_method_list (struct value **argp, char *method,
1734 int offset, int *num_fns,
1735 struct type **basetype, int *boffset)
1737 struct type *t;
1739 t = check_typedef (value_type (*argp));
1741 /* Code snarfed from value_struct_elt. */
1742 while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_CODE (t) == TYPE_CODE_REF)
1744 *argp = value_ind (*argp);
1745 /* Don't coerce fn pointer to fn and then back again! */
1746 if (TYPE_CODE (value_type (*argp)) != TYPE_CODE_FUNC)
1747 *argp = coerce_array (*argp);
1748 t = check_typedef (value_type (*argp));
1751 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
1752 && TYPE_CODE (t) != TYPE_CODE_UNION)
1753 error (_("Attempt to extract a component of a value that is not a struct or union"));
1755 return find_method_list (argp, method, 0, t, num_fns,
1756 basetype, boffset);
1759 /* Given an array of argument types (ARGTYPES) (which includes an
1760 entry for "this" in the case of C++ methods), the number of
1761 arguments NARGS, the NAME of a function whether it's a method or
1762 not (METHOD), and the degree of laxness (LAX) in conforming to
1763 overload resolution rules in ANSI C++, find the best function that
1764 matches on the argument types according to the overload resolution
1765 rules.
1767 In the case of class methods, the parameter OBJ is an object value
1768 in which to search for overloaded methods.
1770 In the case of non-method functions, the parameter FSYM is a symbol
1771 corresponding to one of the overloaded functions.
1773 Return value is an integer: 0 -> good match, 10 -> debugger applied
1774 non-standard coercions, 100 -> incompatible.
1776 If a method is being searched for, VALP will hold the value.
1777 If a non-method is being searched for, SYMP will hold the symbol
1778 for it.
1780 If a method is being searched for, and it is a static method,
1781 then STATICP will point to a non-zero value.
1783 Note: This function does *not* check the value of
1784 overload_resolution. Caller must check it to see whether overload
1785 resolution is permitted.
1789 find_overload_match (struct type **arg_types, int nargs,
1790 char *name, int method, int lax,
1791 struct value **objp, struct symbol *fsym,
1792 struct value **valp, struct symbol **symp,
1793 int *staticp)
1795 struct value *obj = (objp ? *objp : NULL);
1796 /* Index of best overloaded function. */
1797 int oload_champ;
1798 /* The measure for the current best match. */
1799 struct badness_vector *oload_champ_bv = NULL;
1800 struct value *temp = obj;
1801 /* For methods, the list of overloaded methods. */
1802 struct fn_field *fns_ptr = NULL;
1803 /* For non-methods, the list of overloaded function symbols. */
1804 struct symbol **oload_syms = NULL;
1805 /* Number of overloaded instances being considered. */
1806 int num_fns = 0;
1807 struct type *basetype = NULL;
1808 int boffset;
1809 int ix;
1810 int static_offset;
1811 struct cleanup *old_cleanups = NULL;
1813 const char *obj_type_name = NULL;
1814 char *func_name = NULL;
1815 enum oload_classification match_quality;
1817 /* Get the list of overloaded methods or functions. */
1818 if (method)
1820 gdb_assert (obj);
1821 obj_type_name = TYPE_NAME (value_type (obj));
1822 /* Hack: evaluate_subexp_standard often passes in a pointer
1823 value rather than the object itself, so try again. */
1824 if ((!obj_type_name || !*obj_type_name)
1825 && (TYPE_CODE (value_type (obj)) == TYPE_CODE_PTR))
1826 obj_type_name = TYPE_NAME (TYPE_TARGET_TYPE (value_type (obj)));
1828 fns_ptr = value_find_oload_method_list (&temp, name,
1829 0, &num_fns,
1830 &basetype, &boffset);
1831 if (!fns_ptr || !num_fns)
1832 error (_("Couldn't find method %s%s%s"),
1833 obj_type_name,
1834 (obj_type_name && *obj_type_name) ? "::" : "",
1835 name);
1836 /* If we are dealing with stub method types, they should have
1837 been resolved by find_method_list via
1838 value_find_oload_method_list above. */
1839 gdb_assert (TYPE_DOMAIN_TYPE (fns_ptr[0].type) != NULL);
1840 oload_champ = find_oload_champ (arg_types, nargs, method,
1841 num_fns, fns_ptr,
1842 oload_syms, &oload_champ_bv);
1844 else
1846 const char *qualified_name = SYMBOL_CPLUS_DEMANGLED_NAME (fsym);
1848 /* If we have a C++ name, try to extract just the function
1849 part. */
1850 if (qualified_name)
1851 func_name = cp_func_name (qualified_name);
1853 /* If there was no C++ name, this must be a C-style function.
1854 Just return the same symbol. Do the same if cp_func_name
1855 fails for some reason. */
1856 if (func_name == NULL)
1858 *symp = fsym;
1859 return 0;
1862 old_cleanups = make_cleanup (xfree, func_name);
1863 make_cleanup (xfree, oload_syms);
1864 make_cleanup (xfree, oload_champ_bv);
1866 oload_champ = find_oload_champ_namespace (arg_types, nargs,
1867 func_name,
1868 qualified_name,
1869 &oload_syms,
1870 &oload_champ_bv);
1873 /* Check how bad the best match is. */
1875 match_quality =
1876 classify_oload_match (oload_champ_bv, nargs,
1877 oload_method_static (method, fns_ptr,
1878 oload_champ));
1880 if (match_quality == INCOMPATIBLE)
1882 if (method)
1883 error (_("Cannot resolve method %s%s%s to any overloaded instance"),
1884 obj_type_name,
1885 (obj_type_name && *obj_type_name) ? "::" : "",
1886 name);
1887 else
1888 error (_("Cannot resolve function %s to any overloaded instance"),
1889 func_name);
1891 else if (match_quality == NON_STANDARD)
1893 if (method)
1894 warning (_("Using non-standard conversion to match method %s%s%s to supplied arguments"),
1895 obj_type_name,
1896 (obj_type_name && *obj_type_name) ? "::" : "",
1897 name);
1898 else
1899 warning (_("Using non-standard conversion to match function %s to supplied arguments"),
1900 func_name);
1903 if (method)
1905 if (staticp != NULL)
1906 *staticp = oload_method_static (method, fns_ptr, oload_champ);
1907 if (TYPE_FN_FIELD_VIRTUAL_P (fns_ptr, oload_champ))
1908 *valp = value_virtual_fn_field (&temp, fns_ptr, oload_champ,
1909 basetype, boffset);
1910 else
1911 *valp = value_fn_field (&temp, fns_ptr, oload_champ,
1912 basetype, boffset);
1914 else
1916 *symp = oload_syms[oload_champ];
1919 if (objp)
1921 if (TYPE_CODE (value_type (temp)) != TYPE_CODE_PTR
1922 && TYPE_CODE (value_type (*objp)) == TYPE_CODE_PTR)
1924 temp = value_addr (temp);
1926 *objp = temp;
1928 if (old_cleanups != NULL)
1929 do_cleanups (old_cleanups);
1931 switch (match_quality)
1933 case INCOMPATIBLE:
1934 return 100;
1935 case NON_STANDARD:
1936 return 10;
1937 default: /* STANDARD */
1938 return 0;
1942 /* Find the best overload match, searching for FUNC_NAME in namespaces
1943 contained in QUALIFIED_NAME until it either finds a good match or
1944 runs out of namespaces. It stores the overloaded functions in
1945 *OLOAD_SYMS, and the badness vector in *OLOAD_CHAMP_BV. The
1946 calling function is responsible for freeing *OLOAD_SYMS and
1947 *OLOAD_CHAMP_BV. */
1949 static int
1950 find_oload_champ_namespace (struct type **arg_types, int nargs,
1951 const char *func_name,
1952 const char *qualified_name,
1953 struct symbol ***oload_syms,
1954 struct badness_vector **oload_champ_bv)
1956 int oload_champ;
1958 find_oload_champ_namespace_loop (arg_types, nargs,
1959 func_name,
1960 qualified_name, 0,
1961 oload_syms, oload_champ_bv,
1962 &oload_champ);
1964 return oload_champ;
1967 /* Helper function for find_oload_champ_namespace; NAMESPACE_LEN is
1968 how deep we've looked for namespaces, and the champ is stored in
1969 OLOAD_CHAMP. The return value is 1 if the champ is a good one, 0
1970 if it isn't.
1972 It is the caller's responsibility to free *OLOAD_SYMS and
1973 *OLOAD_CHAMP_BV. */
1975 static int
1976 find_oload_champ_namespace_loop (struct type **arg_types, int nargs,
1977 const char *func_name,
1978 const char *qualified_name,
1979 int namespace_len,
1980 struct symbol ***oload_syms,
1981 struct badness_vector **oload_champ_bv,
1982 int *oload_champ)
1984 int next_namespace_len = namespace_len;
1985 int searched_deeper = 0;
1986 int num_fns = 0;
1987 struct cleanup *old_cleanups;
1988 int new_oload_champ;
1989 struct symbol **new_oload_syms;
1990 struct badness_vector *new_oload_champ_bv;
1991 char *new_namespace;
1993 if (next_namespace_len != 0)
1995 gdb_assert (qualified_name[next_namespace_len] == ':');
1996 next_namespace_len += 2;
1998 next_namespace_len +=
1999 cp_find_first_component (qualified_name + next_namespace_len);
2001 /* Initialize these to values that can safely be xfree'd. */
2002 *oload_syms = NULL;
2003 *oload_champ_bv = NULL;
2005 /* First, see if we have a deeper namespace we can search in.
2006 If we get a good match there, use it. */
2008 if (qualified_name[next_namespace_len] == ':')
2010 searched_deeper = 1;
2012 if (find_oload_champ_namespace_loop (arg_types, nargs,
2013 func_name, qualified_name,
2014 next_namespace_len,
2015 oload_syms, oload_champ_bv,
2016 oload_champ))
2018 return 1;
2022 /* If we reach here, either we're in the deepest namespace or we
2023 didn't find a good match in a deeper namespace. But, in the
2024 latter case, we still have a bad match in a deeper namespace;
2025 note that we might not find any match at all in the current
2026 namespace. (There's always a match in the deepest namespace,
2027 because this overload mechanism only gets called if there's a
2028 function symbol to start off with.) */
2030 old_cleanups = make_cleanup (xfree, *oload_syms);
2031 old_cleanups = make_cleanup (xfree, *oload_champ_bv);
2032 new_namespace = alloca (namespace_len + 1);
2033 strncpy (new_namespace, qualified_name, namespace_len);
2034 new_namespace[namespace_len] = '\0';
2035 new_oload_syms = make_symbol_overload_list (func_name,
2036 new_namespace);
2037 while (new_oload_syms[num_fns])
2038 ++num_fns;
2040 new_oload_champ = find_oload_champ (arg_types, nargs, 0, num_fns,
2041 NULL, new_oload_syms,
2042 &new_oload_champ_bv);
2044 /* Case 1: We found a good match. Free earlier matches (if any),
2045 and return it. Case 2: We didn't find a good match, but we're
2046 not the deepest function. Then go with the bad match that the
2047 deeper function found. Case 3: We found a bad match, and we're
2048 the deepest function. Then return what we found, even though
2049 it's a bad match. */
2051 if (new_oload_champ != -1
2052 && classify_oload_match (new_oload_champ_bv, nargs, 0) == STANDARD)
2054 *oload_syms = new_oload_syms;
2055 *oload_champ = new_oload_champ;
2056 *oload_champ_bv = new_oload_champ_bv;
2057 do_cleanups (old_cleanups);
2058 return 1;
2060 else if (searched_deeper)
2062 xfree (new_oload_syms);
2063 xfree (new_oload_champ_bv);
2064 discard_cleanups (old_cleanups);
2065 return 0;
2067 else
2069 gdb_assert (new_oload_champ != -1);
2070 *oload_syms = new_oload_syms;
2071 *oload_champ = new_oload_champ;
2072 *oload_champ_bv = new_oload_champ_bv;
2073 discard_cleanups (old_cleanups);
2074 return 0;
2078 /* Look for a function to take NARGS args of types ARG_TYPES. Find
2079 the best match from among the overloaded methods or functions
2080 (depending on METHOD) given by FNS_PTR or OLOAD_SYMS, respectively.
2081 The number of methods/functions in the list is given by NUM_FNS.
2082 Return the index of the best match; store an indication of the
2083 quality of the match in OLOAD_CHAMP_BV.
2085 It is the caller's responsibility to free *OLOAD_CHAMP_BV. */
2087 static int
2088 find_oload_champ (struct type **arg_types, int nargs, int method,
2089 int num_fns, struct fn_field *fns_ptr,
2090 struct symbol **oload_syms,
2091 struct badness_vector **oload_champ_bv)
2093 int ix;
2094 /* A measure of how good an overloaded instance is. */
2095 struct badness_vector *bv;
2096 /* Index of best overloaded function. */
2097 int oload_champ = -1;
2098 /* Current ambiguity state for overload resolution. */
2099 int oload_ambiguous = 0;
2100 /* 0 => no ambiguity, 1 => two good funcs, 2 => incomparable funcs. */
2102 *oload_champ_bv = NULL;
2104 /* Consider each candidate in turn. */
2105 for (ix = 0; ix < num_fns; ix++)
2107 int jj;
2108 int static_offset = oload_method_static (method, fns_ptr, ix);
2109 int nparms;
2110 struct type **parm_types;
2112 if (method)
2114 nparms = TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (fns_ptr, ix));
2116 else
2118 /* If it's not a method, this is the proper place. */
2119 nparms = TYPE_NFIELDS (SYMBOL_TYPE (oload_syms[ix]));
2122 /* Prepare array of parameter types. */
2123 parm_types = (struct type **)
2124 xmalloc (nparms * (sizeof (struct type *)));
2125 for (jj = 0; jj < nparms; jj++)
2126 parm_types[jj] = (method
2127 ? (TYPE_FN_FIELD_ARGS (fns_ptr, ix)[jj].type)
2128 : TYPE_FIELD_TYPE (SYMBOL_TYPE (oload_syms[ix]),
2129 jj));
2131 /* Compare parameter types to supplied argument types. Skip
2132 THIS for static methods. */
2133 bv = rank_function (parm_types, nparms,
2134 arg_types + static_offset,
2135 nargs - static_offset);
2137 if (!*oload_champ_bv)
2139 *oload_champ_bv = bv;
2140 oload_champ = 0;
2142 else /* See whether current candidate is better or worse than
2143 previous best. */
2144 switch (compare_badness (bv, *oload_champ_bv))
2146 case 0: /* Top two contenders are equally good. */
2147 oload_ambiguous = 1;
2148 break;
2149 case 1: /* Incomparable top contenders. */
2150 oload_ambiguous = 2;
2151 break;
2152 case 2: /* New champion, record details. */
2153 *oload_champ_bv = bv;
2154 oload_ambiguous = 0;
2155 oload_champ = ix;
2156 break;
2157 case 3:
2158 default:
2159 break;
2161 xfree (parm_types);
2162 if (overload_debug)
2164 if (method)
2165 fprintf_filtered (gdb_stderr,
2166 "Overloaded method instance %s, # of parms %d\n",
2167 fns_ptr[ix].physname, nparms);
2168 else
2169 fprintf_filtered (gdb_stderr,
2170 "Overloaded function instance %s # of parms %d\n",
2171 SYMBOL_DEMANGLED_NAME (oload_syms[ix]),
2172 nparms);
2173 for (jj = 0; jj < nargs - static_offset; jj++)
2174 fprintf_filtered (gdb_stderr,
2175 "...Badness @ %d : %d\n",
2176 jj, bv->rank[jj]);
2177 fprintf_filtered (gdb_stderr,
2178 "Overload resolution champion is %d, ambiguous? %d\n",
2179 oload_champ, oload_ambiguous);
2183 return oload_champ;
2186 /* Return 1 if we're looking at a static method, 0 if we're looking at
2187 a non-static method or a function that isn't a method. */
2189 static int
2190 oload_method_static (int method, struct fn_field *fns_ptr, int index)
2192 if (method && TYPE_FN_FIELD_STATIC_P (fns_ptr, index))
2193 return 1;
2194 else
2195 return 0;
2198 /* Check how good an overload match OLOAD_CHAMP_BV represents. */
2200 static enum oload_classification
2201 classify_oload_match (struct badness_vector *oload_champ_bv,
2202 int nargs,
2203 int static_offset)
2205 int ix;
2207 for (ix = 1; ix <= nargs - static_offset; ix++)
2209 if (oload_champ_bv->rank[ix] >= 100)
2210 return INCOMPATIBLE; /* Truly mismatched types. */
2211 else if (oload_champ_bv->rank[ix] >= 10)
2212 return NON_STANDARD; /* Non-standard type conversions
2213 needed. */
2216 return STANDARD; /* Only standard conversions needed. */
2219 /* C++: return 1 is NAME is a legitimate name for the destructor of
2220 type TYPE. If TYPE does not have a destructor, or if NAME is
2221 inappropriate for TYPE, an error is signaled. */
2223 destructor_name_p (const char *name, const struct type *type)
2225 /* Destructors are a special case. */
2227 if (name[0] == '~')
2229 char *dname = type_name_no_tag (type);
2230 char *cp = strchr (dname, '<');
2231 unsigned int len;
2233 /* Do not compare the template part for template classes. */
2234 if (cp == NULL)
2235 len = strlen (dname);
2236 else
2237 len = cp - dname;
2238 if (strlen (name + 1) != len || strncmp (dname, name + 1, len) != 0)
2239 error (_("name of destructor must equal name of class"));
2240 else
2241 return 1;
2243 return 0;
2246 /* Helper function for check_field: Given TYPE, a structure/union,
2247 return 1 if the component named NAME from the ultimate target
2248 structure/union is defined, otherwise, return 0. */
2250 static int
2251 check_field_in (struct type *type, const char *name)
2253 int i;
2255 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
2257 char *t_field_name = TYPE_FIELD_NAME (type, i);
2258 if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
2259 return 1;
2262 /* C++: If it was not found as a data field, then try to return it
2263 as a pointer to a method. */
2265 /* Destructors are a special case. */
2266 if (destructor_name_p (name, type))
2268 int m_index, f_index;
2270 return get_destructor_fn_field (type, &m_index, &f_index);
2273 for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
2275 if (strcmp_iw (TYPE_FN_FIELDLIST_NAME (type, i), name) == 0)
2276 return 1;
2279 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
2280 if (check_field_in (TYPE_BASECLASS (type, i), name))
2281 return 1;
2283 return 0;
2287 /* C++: Given ARG1, a value of type (pointer to a)* structure/union,
2288 return 1 if the component named NAME from the ultimate target
2289 structure/union is defined, otherwise, return 0. */
2292 check_field (struct value *arg1, const char *name)
2294 struct type *t;
2296 arg1 = coerce_array (arg1);
2298 t = value_type (arg1);
2300 /* Follow pointers until we get to a non-pointer. */
2302 for (;;)
2304 CHECK_TYPEDEF (t);
2305 if (TYPE_CODE (t) != TYPE_CODE_PTR
2306 && TYPE_CODE (t) != TYPE_CODE_REF)
2307 break;
2308 t = TYPE_TARGET_TYPE (t);
2311 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2312 && TYPE_CODE (t) != TYPE_CODE_UNION)
2313 error (_("Internal error: `this' is not an aggregate"));
2315 return check_field_in (t, name);
2318 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
2319 return the appropriate member (or the address of the member, if
2320 WANT_ADDRESS). This function is used to resolve user expressions
2321 of the form "DOMAIN::NAME". For more details on what happens, see
2322 the comment before value_struct_elt_for_reference. */
2324 struct value *
2325 value_aggregate_elt (struct type *curtype,
2326 char *name, int want_address,
2327 enum noside noside)
2329 switch (TYPE_CODE (curtype))
2331 case TYPE_CODE_STRUCT:
2332 case TYPE_CODE_UNION:
2333 return value_struct_elt_for_reference (curtype, 0, curtype,
2334 name, NULL,
2335 want_address, noside);
2336 case TYPE_CODE_NAMESPACE:
2337 return value_namespace_elt (curtype, name,
2338 want_address, noside);
2339 default:
2340 internal_error (__FILE__, __LINE__,
2341 _("non-aggregate type in value_aggregate_elt"));
2345 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
2346 return the address of this member as a "pointer to member" type.
2347 If INTYPE is non-null, then it will be the type of the member we
2348 are looking for. This will help us resolve "pointers to member
2349 functions". This function is used to resolve user expressions of
2350 the form "DOMAIN::NAME". */
2352 static struct value *
2353 value_struct_elt_for_reference (struct type *domain, int offset,
2354 struct type *curtype, char *name,
2355 struct type *intype,
2356 int want_address,
2357 enum noside noside)
2359 struct type *t = curtype;
2360 int i;
2361 struct value *v, *result;
2363 if (TYPE_CODE (t) != TYPE_CODE_STRUCT
2364 && TYPE_CODE (t) != TYPE_CODE_UNION)
2365 error (_("Internal error: non-aggregate type to value_struct_elt_for_reference"));
2367 for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
2369 char *t_field_name = TYPE_FIELD_NAME (t, i);
2371 if (t_field_name && strcmp (t_field_name, name) == 0)
2373 if (TYPE_FIELD_STATIC (t, i))
2375 v = value_static_field (t, i);
2376 if (v == NULL)
2377 error (_("static field %s has been optimized out"),
2378 name);
2379 if (want_address)
2380 v = value_addr (v);
2381 return v;
2383 if (TYPE_FIELD_PACKED (t, i))
2384 error (_("pointers to bitfield members not allowed"));
2386 if (want_address)
2387 return value_from_longest
2388 (lookup_memberptr_type (TYPE_FIELD_TYPE (t, i), domain),
2389 offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
2390 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2391 return allocate_value (TYPE_FIELD_TYPE (t, i));
2392 else
2393 error (_("Cannot reference non-static field \"%s\""), name);
2397 /* C++: If it was not found as a data field, then try to return it
2398 as a pointer to a method. */
2400 /* Destructors are a special case. */
2401 if (destructor_name_p (name, t))
2403 error (_("member pointers to destructors not implemented yet"));
2406 /* Perform all necessary dereferencing. */
2407 while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
2408 intype = TYPE_TARGET_TYPE (intype);
2410 for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
2412 char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
2413 char dem_opname[64];
2415 if (strncmp (t_field_name, "__", 2) == 0
2416 || strncmp (t_field_name, "op", 2) == 0
2417 || strncmp (t_field_name, "type", 4) == 0)
2419 if (cplus_demangle_opname (t_field_name,
2420 dem_opname, DMGL_ANSI))
2421 t_field_name = dem_opname;
2422 else if (cplus_demangle_opname (t_field_name,
2423 dem_opname, 0))
2424 t_field_name = dem_opname;
2426 if (t_field_name && strcmp (t_field_name, name) == 0)
2428 int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
2429 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
2431 check_stub_method_group (t, i);
2433 if (intype == 0 && j > 1)
2434 error (_("non-unique member `%s' requires type instantiation"), name);
2435 if (intype)
2437 while (j--)
2438 if (TYPE_FN_FIELD_TYPE (f, j) == intype)
2439 break;
2440 if (j < 0)
2441 error (_("no member function matches that type instantiation"));
2443 else
2444 j = 0;
2446 if (TYPE_FN_FIELD_STATIC_P (f, j))
2448 struct symbol *s =
2449 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
2450 0, VAR_DOMAIN, 0, NULL);
2451 if (s == NULL)
2452 return NULL;
2454 if (want_address)
2455 return value_addr (read_var_value (s, 0));
2456 else
2457 return read_var_value (s, 0);
2460 if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
2462 if (want_address)
2464 result = allocate_value
2465 (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
2466 cplus_make_method_ptr (value_contents_writeable (result),
2467 TYPE_FN_FIELD_VOFFSET (f, j), 1);
2469 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2470 return allocate_value (TYPE_FN_FIELD_TYPE (f, j));
2471 else
2472 error (_("Cannot reference virtual member function \"%s\""),
2473 name);
2475 else
2477 struct symbol *s =
2478 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, j),
2479 0, VAR_DOMAIN, 0, NULL);
2480 if (s == NULL)
2481 return NULL;
2483 v = read_var_value (s, 0);
2484 if (!want_address)
2485 result = v;
2486 else
2488 result = allocate_value (lookup_methodptr_type (TYPE_FN_FIELD_TYPE (f, j)));
2489 cplus_make_method_ptr (value_contents_writeable (result),
2490 VALUE_ADDRESS (v), 0);
2493 return result;
2496 for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
2498 struct value *v;
2499 int base_offset;
2501 if (BASETYPE_VIA_VIRTUAL (t, i))
2502 base_offset = 0;
2503 else
2504 base_offset = TYPE_BASECLASS_BITPOS (t, i) / 8;
2505 v = value_struct_elt_for_reference (domain,
2506 offset + base_offset,
2507 TYPE_BASECLASS (t, i),
2508 name, intype,
2509 want_address, noside);
2510 if (v)
2511 return v;
2514 /* As a last chance, pretend that CURTYPE is a namespace, and look
2515 it up that way; this (frequently) works for types nested inside
2516 classes. */
2518 return value_maybe_namespace_elt (curtype, name,
2519 want_address, noside);
2522 /* C++: Return the member NAME of the namespace given by the type
2523 CURTYPE. */
2525 static struct value *
2526 value_namespace_elt (const struct type *curtype,
2527 char *name, int want_address,
2528 enum noside noside)
2530 struct value *retval = value_maybe_namespace_elt (curtype, name,
2531 want_address,
2532 noside);
2534 if (retval == NULL)
2535 error (_("No symbol \"%s\" in namespace \"%s\"."),
2536 name, TYPE_TAG_NAME (curtype));
2538 return retval;
2541 /* A helper function used by value_namespace_elt and
2542 value_struct_elt_for_reference. It looks up NAME inside the
2543 context CURTYPE; this works if CURTYPE is a namespace or if CURTYPE
2544 is a class and NAME refers to a type in CURTYPE itself (as opposed
2545 to, say, some base class of CURTYPE). */
2547 static struct value *
2548 value_maybe_namespace_elt (const struct type *curtype,
2549 char *name, int want_address,
2550 enum noside noside)
2552 const char *namespace_name = TYPE_TAG_NAME (curtype);
2553 struct symbol *sym;
2554 struct value *result;
2556 sym = cp_lookup_symbol_namespace (namespace_name, name, NULL,
2557 get_selected_block (0),
2558 VAR_DOMAIN, NULL);
2560 if (sym == NULL)
2561 return NULL;
2562 else if ((noside == EVAL_AVOID_SIDE_EFFECTS)
2563 && (SYMBOL_CLASS (sym) == LOC_TYPEDEF))
2564 result = allocate_value (SYMBOL_TYPE (sym));
2565 else
2566 result = value_of_variable (sym, get_selected_block (0));
2568 if (result && want_address)
2569 result = value_addr (result);
2571 return result;
2574 /* Given a pointer value V, find the real (RTTI) type of the object it
2575 points to.
2577 Other parameters FULL, TOP, USING_ENC as with value_rtti_type()
2578 and refer to the values computed for the object pointed to. */
2580 struct type *
2581 value_rtti_target_type (struct value *v, int *full,
2582 int *top, int *using_enc)
2584 struct value *target;
2586 target = value_ind (v);
2588 return value_rtti_type (target, full, top, using_enc);
2591 /* Given a value pointed to by ARGP, check its real run-time type, and
2592 if that is different from the enclosing type, create a new value
2593 using the real run-time type as the enclosing type (and of the same
2594 type as ARGP) and return it, with the embedded offset adjusted to
2595 be the correct offset to the enclosed object. RTYPE is the type,
2596 and XFULL, XTOP, and XUSING_ENC are the other parameters, computed
2597 by value_rtti_type(). If these are available, they can be supplied
2598 and a second call to value_rtti_type() is avoided. (Pass RTYPE ==
2599 NULL if they're not available. */
2601 struct value *
2602 value_full_object (struct value *argp,
2603 struct type *rtype,
2604 int xfull, int xtop,
2605 int xusing_enc)
2607 struct type *real_type;
2608 int full = 0;
2609 int top = -1;
2610 int using_enc = 0;
2611 struct value *new_val;
2613 if (rtype)
2615 real_type = rtype;
2616 full = xfull;
2617 top = xtop;
2618 using_enc = xusing_enc;
2620 else
2621 real_type = value_rtti_type (argp, &full, &top, &using_enc);
2623 /* If no RTTI data, or if object is already complete, do nothing. */
2624 if (!real_type || real_type == value_enclosing_type (argp))
2625 return argp;
2627 /* If we have the full object, but for some reason the enclosing
2628 type is wrong, set it. */
2629 /* pai: FIXME -- sounds iffy */
2630 if (full)
2632 argp = value_change_enclosing_type (argp, real_type);
2633 return argp;
2636 /* Check if object is in memory */
2637 if (VALUE_LVAL (argp) != lval_memory)
2639 warning (_("Couldn't retrieve complete object of RTTI type %s; object may be in register(s)."),
2640 TYPE_NAME (real_type));
2642 return argp;
2645 /* All other cases -- retrieve the complete object. */
2646 /* Go back by the computed top_offset from the beginning of the
2647 object, adjusting for the embedded offset of argp if that's what
2648 value_rtti_type used for its computation. */
2649 new_val = value_at_lazy (real_type, VALUE_ADDRESS (argp) - top +
2650 (using_enc ? 0 : value_embedded_offset (argp)));
2651 deprecated_set_value_type (new_val, value_type (argp));
2652 set_value_embedded_offset (new_val, (using_enc
2653 ? top + value_embedded_offset (argp)
2654 : top));
2655 return new_val;
2659 /* Return the value of the local variable, if one exists.
2660 Flag COMPLAIN signals an error if the request is made in an
2661 inappropriate context. */
2663 struct value *
2664 value_of_local (const char *name, int complain)
2666 struct symbol *func, *sym;
2667 struct block *b;
2668 struct value * ret;
2669 struct frame_info *frame;
2671 if (complain)
2672 frame = get_selected_frame (_("no frame selected"));
2673 else
2675 frame = deprecated_safe_get_selected_frame ();
2676 if (frame == 0)
2677 return 0;
2680 func = get_frame_function (frame);
2681 if (!func)
2683 if (complain)
2684 error (_("no `%s' in nameless context"), name);
2685 else
2686 return 0;
2689 b = SYMBOL_BLOCK_VALUE (func);
2690 if (dict_empty (BLOCK_DICT (b)))
2692 if (complain)
2693 error (_("no args, no `%s'"), name);
2694 else
2695 return 0;
2698 /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
2699 symbol instead of the LOC_ARG one (if both exist). */
2700 sym = lookup_block_symbol (b, name, NULL, VAR_DOMAIN);
2701 if (sym == NULL)
2703 if (complain)
2704 error (_("current stack frame does not contain a variable named `%s'"),
2705 name);
2706 else
2707 return NULL;
2710 ret = read_var_value (sym, frame);
2711 if (ret == 0 && complain)
2712 error (_("`%s' argument unreadable"), name);
2713 return ret;
2716 /* C++/Objective-C: return the value of the class instance variable,
2717 if one exists. Flag COMPLAIN signals an error if the request is
2718 made in an inappropriate context. */
2720 struct value *
2721 value_of_this (int complain)
2723 if (current_language->la_language == language_objc)
2724 return value_of_local ("self", complain);
2725 else
2726 return value_of_local ("this", complain);
2729 /* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH
2730 elements long, starting at LOWBOUND. The result has the same lower
2731 bound as the original ARRAY. */
2733 struct value *
2734 value_slice (struct value *array, int lowbound, int length)
2736 struct type *slice_range_type, *slice_type, *range_type;
2737 LONGEST lowerbound, upperbound;
2738 struct value *slice;
2739 struct type *array_type;
2741 array_type = check_typedef (value_type (array));
2742 if (TYPE_CODE (array_type) != TYPE_CODE_ARRAY
2743 && TYPE_CODE (array_type) != TYPE_CODE_STRING
2744 && TYPE_CODE (array_type) != TYPE_CODE_BITSTRING)
2745 error (_("cannot take slice of non-array"));
2747 range_type = TYPE_INDEX_TYPE (array_type);
2748 if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2749 error (_("slice from bad array or bitstring"));
2751 if (lowbound < lowerbound || length < 0
2752 || lowbound + length - 1 > upperbound)
2753 error (_("slice out of range"));
2755 /* FIXME-type-allocation: need a way to free this type when we are
2756 done with it. */
2757 slice_range_type = create_range_type ((struct type *) NULL,
2758 TYPE_TARGET_TYPE (range_type),
2759 lowbound,
2760 lowbound + length - 1);
2761 if (TYPE_CODE (array_type) == TYPE_CODE_BITSTRING)
2763 int i;
2765 slice_type = create_set_type ((struct type *) NULL,
2766 slice_range_type);
2767 TYPE_CODE (slice_type) = TYPE_CODE_BITSTRING;
2768 slice = value_zero (slice_type, not_lval);
2770 for (i = 0; i < length; i++)
2772 int element = value_bit_index (array_type,
2773 value_contents (array),
2774 lowbound + i);
2775 if (element < 0)
2776 error (_("internal error accessing bitstring"));
2777 else if (element > 0)
2779 int j = i % TARGET_CHAR_BIT;
2780 if (gdbarch_bits_big_endian (current_gdbarch))
2781 j = TARGET_CHAR_BIT - 1 - j;
2782 value_contents_raw (slice)[i / TARGET_CHAR_BIT] |= (1 << j);
2785 /* We should set the address, bitssize, and bitspos, so the
2786 slice can be used on the LHS, but that may require extensions
2787 to value_assign. For now, just leave as a non_lval.
2788 FIXME. */
2790 else
2792 struct type *element_type = TYPE_TARGET_TYPE (array_type);
2793 LONGEST offset =
2794 (lowbound - lowerbound) * TYPE_LENGTH (check_typedef (element_type));
2796 slice_type = create_array_type ((struct type *) NULL,
2797 element_type,
2798 slice_range_type);
2799 TYPE_CODE (slice_type) = TYPE_CODE (array_type);
2801 slice = allocate_value (slice_type);
2802 if (value_lazy (array))
2803 set_value_lazy (slice, 1);
2804 else
2805 memcpy (value_contents_writeable (slice),
2806 value_contents (array) + offset,
2807 TYPE_LENGTH (slice_type));
2809 if (VALUE_LVAL (array) == lval_internalvar)
2810 VALUE_LVAL (slice) = lval_internalvar_component;
2811 else
2812 VALUE_LVAL (slice) = VALUE_LVAL (array);
2814 VALUE_ADDRESS (slice) = VALUE_ADDRESS (array);
2815 VALUE_FRAME_ID (slice) = VALUE_FRAME_ID (array);
2816 set_value_offset (slice, value_offset (array) + offset);
2818 return slice;
2821 /* Create a value for a FORTRAN complex number. Currently most of the
2822 time values are coerced to COMPLEX*16 (i.e. a complex number
2823 composed of 2 doubles. This really should be a smarter routine
2824 that figures out precision inteligently as opposed to assuming
2825 doubles. FIXME: fmb */
2827 struct value *
2828 value_literal_complex (struct value *arg1,
2829 struct value *arg2,
2830 struct type *type)
2832 struct value *val;
2833 struct type *real_type = TYPE_TARGET_TYPE (type);
2835 val = allocate_value (type);
2836 arg1 = value_cast (real_type, arg1);
2837 arg2 = value_cast (real_type, arg2);
2839 memcpy (value_contents_raw (val),
2840 value_contents (arg1), TYPE_LENGTH (real_type));
2841 memcpy (value_contents_raw (val) + TYPE_LENGTH (real_type),
2842 value_contents (arg2), TYPE_LENGTH (real_type));
2843 return val;
2846 /* Cast a value into the appropriate complex data type. */
2848 static struct value *
2849 cast_into_complex (struct type *type, struct value *val)
2851 struct type *real_type = TYPE_TARGET_TYPE (type);
2853 if (TYPE_CODE (value_type (val)) == TYPE_CODE_COMPLEX)
2855 struct type *val_real_type = TYPE_TARGET_TYPE (value_type (val));
2856 struct value *re_val = allocate_value (val_real_type);
2857 struct value *im_val = allocate_value (val_real_type);
2859 memcpy (value_contents_raw (re_val),
2860 value_contents (val), TYPE_LENGTH (val_real_type));
2861 memcpy (value_contents_raw (im_val),
2862 value_contents (val) + TYPE_LENGTH (val_real_type),
2863 TYPE_LENGTH (val_real_type));
2865 return value_literal_complex (re_val, im_val, type);
2867 else if (TYPE_CODE (value_type (val)) == TYPE_CODE_FLT
2868 || TYPE_CODE (value_type (val)) == TYPE_CODE_INT)
2869 return value_literal_complex (val,
2870 value_zero (real_type, not_lval),
2871 type);
2872 else
2873 error (_("cannot cast non-number to complex"));
2876 void
2877 _initialize_valops (void)
2879 add_setshow_boolean_cmd ("overload-resolution", class_support,
2880 &overload_resolution, _("\
2881 Set overload resolution in evaluating C++ functions."), _("\
2882 Show overload resolution in evaluating C++ functions."),
2883 NULL, NULL,
2884 show_overload_resolution,
2885 &setlist, &showlist);
2886 overload_resolution = 1;