1 /* Perform non-arithmetic operations on values, for GDB.
2 Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
3 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
4 Free Software Foundation, Inc.
6 This file is part of GDB.
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330,
21 Boston, MA 02111-1307, USA. */
38 #include "dictionary.h"
39 #include "cp-support.h"
42 #include "gdb_string.h"
43 #include "gdb_assert.h"
44 #include "cp-support.h"
46 /* Flag indicating HP compilers were used; needed to correctly handle some
47 value operations with HP aCC code/runtime. */
48 extern int hp_som_som_object_present
;
50 extern int overload_debug
;
51 /* Local functions. */
53 static int typecmp (int staticp
, int varargs
, int nargs
,
54 struct field t1
[], struct value
*t2
[]);
56 static CORE_ADDR
value_push (CORE_ADDR
, struct value
*);
58 static struct value
*search_struct_field (char *, struct value
*, int,
61 static struct value
*search_struct_method (char *, struct value
**,
63 int, int *, struct type
*);
65 static int check_field_in (struct type
*, const char *);
68 static struct value
*value_struct_elt_for_reference (struct type
*domain
,
74 static struct value
*value_namespace_elt (const struct type
*curtype
,
78 static CORE_ADDR
allocate_space_in_inferior (int);
80 static struct value
*cast_into_complex (struct type
*, struct value
*);
82 static struct fn_field
*find_method_list (struct value
** argp
, char *method
,
84 struct type
*type
, int *num_fns
,
85 struct type
**basetype
,
88 void _initialize_valops (void);
90 /* Flag for whether we want to abandon failed expression evals by default. */
93 static int auto_abandon
= 0;
96 int overload_resolution
= 0;
98 /* Find the address of function name NAME in the inferior. */
101 find_function_in_inferior (const char *name
)
104 sym
= lookup_symbol (name
, 0, VAR_DOMAIN
, 0, NULL
);
107 if (SYMBOL_CLASS (sym
) != LOC_BLOCK
)
109 error ("\"%s\" exists in this program but is not a function.",
112 return value_of_variable (sym
, NULL
);
116 struct minimal_symbol
*msymbol
= lookup_minimal_symbol (name
, NULL
, NULL
);
121 type
= lookup_pointer_type (builtin_type_char
);
122 type
= lookup_function_type (type
);
123 type
= lookup_pointer_type (type
);
124 maddr
= SYMBOL_VALUE_ADDRESS (msymbol
);
125 return value_from_pointer (type
, maddr
);
129 if (!target_has_execution
)
130 error ("evaluation of this expression requires the target program to be active");
132 error ("evaluation of this expression requires the program to have a function \"%s\".", name
);
137 /* Allocate NBYTES of space in the inferior using the inferior's malloc
138 and return a value that is a pointer to the allocated space. */
141 value_allocate_space_in_inferior (int len
)
143 struct value
*blocklen
;
144 struct value
*val
= find_function_in_inferior (NAME_OF_MALLOC
);
146 blocklen
= value_from_longest (builtin_type_int
, (LONGEST
) len
);
147 val
= call_function_by_hand (val
, 1, &blocklen
);
148 if (value_logical_not (val
))
150 if (!target_has_execution
)
151 error ("No memory available to program now: you need to start the target first");
153 error ("No memory available to program: call to malloc failed");
159 allocate_space_in_inferior (int len
)
161 return value_as_long (value_allocate_space_in_inferior (len
));
164 /* Cast value ARG2 to type TYPE and return as a value.
165 More general than a C cast: accepts any two types of the same length,
166 and if ARG2 is an lvalue it can be cast into anything at all. */
167 /* In C++, casts may change pointer or object representations. */
170 value_cast (struct type
*type
, struct value
*arg2
)
172 enum type_code code1
;
173 enum type_code code2
;
177 int convert_to_boolean
= 0;
179 if (VALUE_TYPE (arg2
) == type
)
182 CHECK_TYPEDEF (type
);
183 code1
= TYPE_CODE (type
);
185 type2
= check_typedef (VALUE_TYPE (arg2
));
187 /* A cast to an undetermined-length array_type, such as (TYPE [])OBJECT,
188 is treated like a cast to (TYPE [N])OBJECT,
189 where N is sizeof(OBJECT)/sizeof(TYPE). */
190 if (code1
== TYPE_CODE_ARRAY
)
192 struct type
*element_type
= TYPE_TARGET_TYPE (type
);
193 unsigned element_length
= TYPE_LENGTH (check_typedef (element_type
));
194 if (element_length
> 0
195 && TYPE_ARRAY_UPPER_BOUND_TYPE (type
) == BOUND_CANNOT_BE_DETERMINED
)
197 struct type
*range_type
= TYPE_INDEX_TYPE (type
);
198 int val_length
= TYPE_LENGTH (type2
);
199 LONGEST low_bound
, high_bound
, new_length
;
200 if (get_discrete_bounds (range_type
, &low_bound
, &high_bound
) < 0)
201 low_bound
= 0, high_bound
= 0;
202 new_length
= val_length
/ element_length
;
203 if (val_length
% element_length
!= 0)
204 warning ("array element type size does not divide object size in cast");
205 /* FIXME-type-allocation: need a way to free this type when we are
207 range_type
= create_range_type ((struct type
*) NULL
,
208 TYPE_TARGET_TYPE (range_type
),
210 new_length
+ low_bound
- 1);
211 VALUE_TYPE (arg2
) = create_array_type ((struct type
*) NULL
,
212 element_type
, range_type
);
217 if (current_language
->c_style_arrays
218 && TYPE_CODE (type2
) == TYPE_CODE_ARRAY
)
219 arg2
= value_coerce_array (arg2
);
221 if (TYPE_CODE (type2
) == TYPE_CODE_FUNC
)
222 arg2
= value_coerce_function (arg2
);
224 type2
= check_typedef (VALUE_TYPE (arg2
));
225 COERCE_VARYING_ARRAY (arg2
, type2
);
226 code2
= TYPE_CODE (type2
);
228 if (code1
== TYPE_CODE_COMPLEX
)
229 return cast_into_complex (type
, arg2
);
230 if (code1
== TYPE_CODE_BOOL
)
232 code1
= TYPE_CODE_INT
;
233 convert_to_boolean
= 1;
235 if (code1
== TYPE_CODE_CHAR
)
236 code1
= TYPE_CODE_INT
;
237 if (code2
== TYPE_CODE_BOOL
|| code2
== TYPE_CODE_CHAR
)
238 code2
= TYPE_CODE_INT
;
240 scalar
= (code2
== TYPE_CODE_INT
|| code2
== TYPE_CODE_FLT
241 || code2
== TYPE_CODE_ENUM
|| code2
== TYPE_CODE_RANGE
);
243 if (code1
== TYPE_CODE_STRUCT
244 && code2
== TYPE_CODE_STRUCT
245 && TYPE_NAME (type
) != 0)
247 /* Look in the type of the source to see if it contains the
248 type of the target as a superclass. If so, we'll need to
249 offset the object in addition to changing its type. */
250 struct value
*v
= search_struct_field (type_name_no_tag (type
),
254 VALUE_TYPE (v
) = type
;
258 if (code1
== TYPE_CODE_FLT
&& scalar
)
259 return value_from_double (type
, value_as_double (arg2
));
260 else if ((code1
== TYPE_CODE_INT
|| code1
== TYPE_CODE_ENUM
261 || code1
== TYPE_CODE_RANGE
)
262 && (scalar
|| code2
== TYPE_CODE_PTR
))
266 if (hp_som_som_object_present
&& /* if target compiled by HP aCC */
267 (code2
== TYPE_CODE_PTR
))
270 struct value
*retvalp
;
272 switch (TYPE_CODE (TYPE_TARGET_TYPE (type2
)))
274 /* With HP aCC, pointers to data members have a bias */
275 case TYPE_CODE_MEMBER
:
276 retvalp
= value_from_longest (type
, value_as_long (arg2
));
277 /* force evaluation */
278 ptr
= (unsigned int *) VALUE_CONTENTS (retvalp
);
279 *ptr
&= ~0x20000000; /* zap 29th bit to remove bias */
282 /* While pointers to methods don't really point to a function */
283 case TYPE_CODE_METHOD
:
284 error ("Pointers to methods not supported with HP aCC");
287 break; /* fall out and go to normal handling */
291 /* When we cast pointers to integers, we mustn't use
292 POINTER_TO_ADDRESS to find the address the pointer
293 represents, as value_as_long would. GDB should evaluate
294 expressions just as the compiler would --- and the compiler
295 sees a cast as a simple reinterpretation of the pointer's
297 if (code2
== TYPE_CODE_PTR
)
298 longest
= extract_unsigned_integer (VALUE_CONTENTS (arg2
),
299 TYPE_LENGTH (type2
));
301 longest
= value_as_long (arg2
);
302 return value_from_longest (type
, convert_to_boolean
?
303 (LONGEST
) (longest
? 1 : 0) : longest
);
305 else if (code1
== TYPE_CODE_PTR
&& (code2
== TYPE_CODE_INT
||
306 code2
== TYPE_CODE_ENUM
||
307 code2
== TYPE_CODE_RANGE
))
309 /* TYPE_LENGTH (type) is the length of a pointer, but we really
310 want the length of an address! -- we are really dealing with
311 addresses (i.e., gdb representations) not pointers (i.e.,
312 target representations) here.
314 This allows things like "print *(int *)0x01000234" to work
315 without printing a misleading message -- which would
316 otherwise occur when dealing with a target having two byte
317 pointers and four byte addresses. */
319 int addr_bit
= TARGET_ADDR_BIT
;
321 LONGEST longest
= value_as_long (arg2
);
322 if (addr_bit
< sizeof (LONGEST
) * HOST_CHAR_BIT
)
324 if (longest
>= ((LONGEST
) 1 << addr_bit
)
325 || longest
<= -((LONGEST
) 1 << addr_bit
))
326 warning ("value truncated");
328 return value_from_longest (type
, longest
);
330 else if (TYPE_LENGTH (type
) == TYPE_LENGTH (type2
))
332 if (code1
== TYPE_CODE_PTR
&& code2
== TYPE_CODE_PTR
)
334 struct type
*t1
= check_typedef (TYPE_TARGET_TYPE (type
));
335 struct type
*t2
= check_typedef (TYPE_TARGET_TYPE (type2
));
336 if (TYPE_CODE (t1
) == TYPE_CODE_STRUCT
337 && TYPE_CODE (t2
) == TYPE_CODE_STRUCT
338 && !value_logical_not (arg2
))
342 /* Look in the type of the source to see if it contains the
343 type of the target as a superclass. If so, we'll need to
344 offset the pointer rather than just change its type. */
345 if (TYPE_NAME (t1
) != NULL
)
347 v
= search_struct_field (type_name_no_tag (t1
),
348 value_ind (arg2
), 0, t2
, 1);
352 VALUE_TYPE (v
) = type
;
357 /* Look in the type of the target to see if it contains the
358 type of the source as a superclass. If so, we'll need to
359 offset the pointer rather than just change its type.
360 FIXME: This fails silently with virtual inheritance. */
361 if (TYPE_NAME (t2
) != NULL
)
363 v
= search_struct_field (type_name_no_tag (t2
),
364 value_zero (t1
, not_lval
), 0, t1
, 1);
367 CORE_ADDR addr2
= value_as_address (arg2
);
368 addr2
-= (VALUE_ADDRESS (v
)
370 + VALUE_EMBEDDED_OFFSET (v
));
371 return value_from_pointer (type
, addr2
);
375 /* No superclass found, just fall through to change ptr type. */
377 VALUE_TYPE (arg2
) = type
;
378 arg2
= value_change_enclosing_type (arg2
, type
);
379 VALUE_POINTED_TO_OFFSET (arg2
) = 0; /* pai: chk_val */
382 else if (VALUE_LVAL (arg2
) == lval_memory
)
384 return value_at_lazy (type
, VALUE_ADDRESS (arg2
) + VALUE_OFFSET (arg2
),
385 VALUE_BFD_SECTION (arg2
));
387 else if (code1
== TYPE_CODE_VOID
)
389 return value_zero (builtin_type_void
, not_lval
);
393 error ("Invalid cast.");
398 /* Create a value of type TYPE that is zero, and return it. */
401 value_zero (struct type
*type
, enum lval_type lv
)
403 struct value
*val
= allocate_value (type
);
405 memset (VALUE_CONTENTS (val
), 0, TYPE_LENGTH (check_typedef (type
)));
406 VALUE_LVAL (val
) = lv
;
411 /* Return a value with type TYPE located at ADDR.
413 Call value_at only if the data needs to be fetched immediately;
414 if we can be 'lazy' and defer the fetch, perhaps indefinately, call
415 value_at_lazy instead. value_at_lazy simply records the address of
416 the data and sets the lazy-evaluation-required flag. The lazy flag
417 is tested in the VALUE_CONTENTS macro, which is used if and when
418 the contents are actually required.
420 Note: value_at does *NOT* handle embedded offsets; perform such
421 adjustments before or after calling it. */
424 value_at (struct type
*type
, CORE_ADDR addr
, asection
*sect
)
428 if (TYPE_CODE (check_typedef (type
)) == TYPE_CODE_VOID
)
429 error ("Attempt to dereference a generic pointer.");
431 val
= allocate_value (type
);
433 read_memory (addr
, VALUE_CONTENTS_ALL_RAW (val
), TYPE_LENGTH (type
));
435 VALUE_LVAL (val
) = lval_memory
;
436 VALUE_ADDRESS (val
) = addr
;
437 VALUE_BFD_SECTION (val
) = sect
;
442 /* Return a lazy value with type TYPE located at ADDR (cf. value_at). */
445 value_at_lazy (struct type
*type
, CORE_ADDR addr
, asection
*sect
)
449 if (TYPE_CODE (check_typedef (type
)) == TYPE_CODE_VOID
)
450 error ("Attempt to dereference a generic pointer.");
452 val
= allocate_value (type
);
454 VALUE_LVAL (val
) = lval_memory
;
455 VALUE_ADDRESS (val
) = addr
;
456 VALUE_LAZY (val
) = 1;
457 VALUE_BFD_SECTION (val
) = sect
;
462 /* Called only from the VALUE_CONTENTS and VALUE_CONTENTS_ALL macros,
463 if the current data for a variable needs to be loaded into
464 VALUE_CONTENTS(VAL). Fetches the data from the user's process, and
465 clears the lazy flag to indicate that the data in the buffer is valid.
467 If the value is zero-length, we avoid calling read_memory, which would
468 abort. We mark the value as fetched anyway -- all 0 bytes of it.
470 This function returns a value because it is used in the VALUE_CONTENTS
471 macro as part of an expression, where a void would not work. The
475 value_fetch_lazy (struct value
*val
)
477 CORE_ADDR addr
= VALUE_ADDRESS (val
) + VALUE_OFFSET (val
);
478 int length
= TYPE_LENGTH (VALUE_ENCLOSING_TYPE (val
));
480 struct type
*type
= VALUE_TYPE (val
);
482 read_memory (addr
, VALUE_CONTENTS_ALL_RAW (val
), length
);
484 VALUE_LAZY (val
) = 0;
489 /* Store the contents of FROMVAL into the location of TOVAL.
490 Return a new value with the location of TOVAL and contents of FROMVAL. */
493 value_assign (struct value
*toval
, struct value
*fromval
)
497 char raw_buffer
[MAX_REGISTER_SIZE
];
499 struct frame_id old_frame
;
501 if (!toval
->modifiable
)
502 error ("Left operand of assignment is not a modifiable lvalue.");
506 type
= VALUE_TYPE (toval
);
507 if (VALUE_LVAL (toval
) != lval_internalvar
)
508 fromval
= value_cast (type
, fromval
);
510 COERCE_ARRAY (fromval
);
511 CHECK_TYPEDEF (type
);
513 /* Since modifying a register can trash the frame chain, and modifying memory
514 can trash the frame cache, we save the old frame and then restore the new
516 old_frame
= get_frame_id (deprecated_selected_frame
);
518 switch (VALUE_LVAL (toval
))
520 case lval_internalvar
:
521 set_internalvar (VALUE_INTERNALVAR (toval
), fromval
);
522 val
= value_copy (VALUE_INTERNALVAR (toval
)->value
);
523 val
= value_change_enclosing_type (val
, VALUE_ENCLOSING_TYPE (fromval
));
524 VALUE_EMBEDDED_OFFSET (val
) = VALUE_EMBEDDED_OFFSET (fromval
);
525 VALUE_POINTED_TO_OFFSET (val
) = VALUE_POINTED_TO_OFFSET (fromval
);
528 case lval_internalvar_component
:
529 set_internalvar_component (VALUE_INTERNALVAR (toval
),
530 VALUE_OFFSET (toval
),
531 VALUE_BITPOS (toval
),
532 VALUE_BITSIZE (toval
),
539 CORE_ADDR changed_addr
;
542 if (VALUE_BITSIZE (toval
))
544 char buffer
[sizeof (LONGEST
)];
545 /* We assume that the argument to read_memory is in units of
546 host chars. FIXME: Is that correct? */
547 changed_len
= (VALUE_BITPOS (toval
)
548 + VALUE_BITSIZE (toval
)
552 if (changed_len
> (int) sizeof (LONGEST
))
553 error ("Can't handle bitfields which don't fit in a %d bit word.",
554 (int) sizeof (LONGEST
) * HOST_CHAR_BIT
);
556 read_memory (VALUE_ADDRESS (toval
) + VALUE_OFFSET (toval
),
557 buffer
, changed_len
);
558 modify_field (buffer
, value_as_long (fromval
),
559 VALUE_BITPOS (toval
), VALUE_BITSIZE (toval
));
560 changed_addr
= VALUE_ADDRESS (toval
) + VALUE_OFFSET (toval
);
561 dest_buffer
= buffer
;
565 changed_addr
= VALUE_ADDRESS (toval
) + VALUE_OFFSET (toval
);
566 changed_len
= use_buffer
;
567 dest_buffer
= raw_buffer
;
571 changed_addr
= VALUE_ADDRESS (toval
) + VALUE_OFFSET (toval
);
572 changed_len
= TYPE_LENGTH (type
);
573 dest_buffer
= VALUE_CONTENTS (fromval
);
576 write_memory (changed_addr
, dest_buffer
, changed_len
);
577 if (memory_changed_hook
)
578 memory_changed_hook (changed_addr
, changed_len
);
579 target_changed_event ();
583 case lval_reg_frame_relative
:
586 struct frame_info
*frame
;
589 /* Figure out which frame this is in currently. */
590 if (VALUE_LVAL (toval
) == lval_register
)
592 frame
= get_current_frame ();
593 value_reg
= VALUE_REGNO (toval
);
597 frame
= frame_find_by_id (VALUE_FRAME_ID (toval
));
598 value_reg
= VALUE_FRAME_REGNUM (toval
);
602 error ("Value being assigned to is no longer active.");
604 if (VALUE_LVAL (toval
) == lval_reg_frame_relative
605 && CONVERT_REGISTER_P (VALUE_FRAME_REGNUM (toval
), type
))
607 /* If TOVAL is a special machine register requiring
608 conversion of program values to a special raw format. */
609 VALUE_TO_REGISTER (frame
, VALUE_FRAME_REGNUM (toval
),
610 type
, VALUE_CONTENTS (fromval
));
614 /* TOVAL is stored in a series of registers in the frame
615 specified by the structure. Copy that value out,
616 modify it, and copy it back in. */
624 /* Locate the first register that falls in the value that
625 needs to be transfered. Compute the offset of the
626 value in that register. */
629 for (reg_offset
= value_reg
, offset
= 0;
630 offset
+ DEPRECATED_REGISTER_RAW_SIZE (reg_offset
) <= VALUE_OFFSET (toval
);
632 byte_offset
= VALUE_OFFSET (toval
) - offset
;
635 /* Compute the number of register aligned values that need
637 if (VALUE_BITSIZE (toval
))
638 amount_to_copy
= byte_offset
+ 1;
640 amount_to_copy
= byte_offset
+ TYPE_LENGTH (type
);
642 /* And a bounce buffer. Be slightly over generous. */
643 buffer
= (char *) alloca (amount_to_copy
+ MAX_REGISTER_SIZE
);
646 for (regno
= reg_offset
, amount_copied
= 0;
647 amount_copied
< amount_to_copy
;
648 amount_copied
+= DEPRECATED_REGISTER_RAW_SIZE (regno
), regno
++)
649 frame_register_read (frame
, regno
, buffer
+ amount_copied
);
651 /* Modify what needs to be modified. */
652 if (VALUE_BITSIZE (toval
))
653 modify_field (buffer
+ byte_offset
,
654 value_as_long (fromval
),
655 VALUE_BITPOS (toval
), VALUE_BITSIZE (toval
));
657 memcpy (buffer
+ VALUE_OFFSET (toval
), raw_buffer
, use_buffer
);
659 memcpy (buffer
+ byte_offset
, VALUE_CONTENTS (fromval
),
663 for (regno
= reg_offset
, amount_copied
= 0;
664 amount_copied
< amount_to_copy
;
665 amount_copied
+= DEPRECATED_REGISTER_RAW_SIZE (regno
), regno
++)
666 put_frame_register (frame
, regno
, buffer
+ amount_copied
);
669 if (register_changed_hook
)
670 register_changed_hook (-1);
671 target_changed_event ();
676 error ("Left operand of assignment is not an lvalue.");
679 /* Assigning to the stack pointer, frame pointer, and other
680 (architecture and calling convention specific) registers may
681 cause the frame cache to be out of date. Assigning to memory
682 also can. We just do this on all assignments to registers or
683 memory, for simplicity's sake; I doubt the slowdown matters. */
684 switch (VALUE_LVAL (toval
))
688 case lval_reg_frame_relative
:
690 reinit_frame_cache ();
692 /* Having destoroyed the frame cache, restore the selected frame. */
694 /* FIXME: cagney/2002-11-02: There has to be a better way of
695 doing this. Instead of constantly saving/restoring the
696 frame. Why not create a get_selected_frame() function that,
697 having saved the selected frame's ID can automatically
698 re-find the previously selected frame automatically. */
701 struct frame_info
*fi
= frame_find_by_id (old_frame
);
711 /* If the field does not entirely fill a LONGEST, then zero the sign bits.
712 If the field is signed, and is negative, then sign extend. */
713 if ((VALUE_BITSIZE (toval
) > 0)
714 && (VALUE_BITSIZE (toval
) < 8 * (int) sizeof (LONGEST
)))
716 LONGEST fieldval
= value_as_long (fromval
);
717 LONGEST valmask
= (((ULONGEST
) 1) << VALUE_BITSIZE (toval
)) - 1;
720 if (!TYPE_UNSIGNED (type
) && (fieldval
& (valmask
^ (valmask
>> 1))))
721 fieldval
|= ~valmask
;
723 fromval
= value_from_longest (type
, fieldval
);
726 val
= value_copy (toval
);
727 memcpy (VALUE_CONTENTS_RAW (val
), VALUE_CONTENTS (fromval
),
729 VALUE_TYPE (val
) = type
;
730 val
= value_change_enclosing_type (val
, VALUE_ENCLOSING_TYPE (fromval
));
731 VALUE_EMBEDDED_OFFSET (val
) = VALUE_EMBEDDED_OFFSET (fromval
);
732 VALUE_POINTED_TO_OFFSET (val
) = VALUE_POINTED_TO_OFFSET (fromval
);
737 /* Extend a value VAL to COUNT repetitions of its type. */
740 value_repeat (struct value
*arg1
, int count
)
744 if (VALUE_LVAL (arg1
) != lval_memory
)
745 error ("Only values in memory can be extended with '@'.");
747 error ("Invalid number %d of repetitions.", count
);
749 val
= allocate_repeat_value (VALUE_ENCLOSING_TYPE (arg1
), count
);
751 read_memory (VALUE_ADDRESS (arg1
) + VALUE_OFFSET (arg1
),
752 VALUE_CONTENTS_ALL_RAW (val
),
753 TYPE_LENGTH (VALUE_ENCLOSING_TYPE (val
)));
754 VALUE_LVAL (val
) = lval_memory
;
755 VALUE_ADDRESS (val
) = VALUE_ADDRESS (arg1
) + VALUE_OFFSET (arg1
);
761 value_of_variable (struct symbol
*var
, struct block
*b
)
764 struct frame_info
*frame
= NULL
;
767 frame
= NULL
; /* Use selected frame. */
768 else if (symbol_read_needs_frame (var
))
770 frame
= block_innermost_frame (b
);
773 if (BLOCK_FUNCTION (b
)
774 && SYMBOL_PRINT_NAME (BLOCK_FUNCTION (b
)))
775 error ("No frame is currently executing in block %s.",
776 SYMBOL_PRINT_NAME (BLOCK_FUNCTION (b
)));
778 error ("No frame is currently executing in specified block");
782 val
= read_var_value (var
, frame
);
784 error ("Address of symbol \"%s\" is unknown.", SYMBOL_PRINT_NAME (var
));
789 /* Given a value which is an array, return a value which is a pointer to its
790 first element, regardless of whether or not the array has a nonzero lower
793 FIXME: A previous comment here indicated that this routine should be
794 substracting the array's lower bound. It's not clear to me that this
795 is correct. Given an array subscripting operation, it would certainly
796 work to do the adjustment here, essentially computing:
798 (&array[0] - (lowerbound * sizeof array[0])) + (index * sizeof array[0])
800 However I believe a more appropriate and logical place to account for
801 the lower bound is to do so in value_subscript, essentially computing:
803 (&array[0] + ((index - lowerbound) * sizeof array[0]))
805 As further evidence consider what would happen with operations other
806 than array subscripting, where the caller would get back a value that
807 had an address somewhere before the actual first element of the array,
808 and the information about the lower bound would be lost because of
809 the coercion to pointer type.
813 value_coerce_array (struct value
*arg1
)
815 struct type
*type
= check_typedef (VALUE_TYPE (arg1
));
817 if (VALUE_LVAL (arg1
) != lval_memory
)
818 error ("Attempt to take address of value not located in memory.");
820 return value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type
)),
821 (VALUE_ADDRESS (arg1
) + VALUE_OFFSET (arg1
)));
824 /* Given a value which is a function, return a value which is a pointer
828 value_coerce_function (struct value
*arg1
)
830 struct value
*retval
;
832 if (VALUE_LVAL (arg1
) != lval_memory
)
833 error ("Attempt to take address of value not located in memory.");
835 retval
= value_from_pointer (lookup_pointer_type (VALUE_TYPE (arg1
)),
836 (VALUE_ADDRESS (arg1
) + VALUE_OFFSET (arg1
)));
837 VALUE_BFD_SECTION (retval
) = VALUE_BFD_SECTION (arg1
);
841 /* Return a pointer value for the object for which ARG1 is the contents. */
844 value_addr (struct value
*arg1
)
848 struct type
*type
= check_typedef (VALUE_TYPE (arg1
));
849 if (TYPE_CODE (type
) == TYPE_CODE_REF
)
851 /* Copy the value, but change the type from (T&) to (T*).
852 We keep the same location information, which is efficient,
853 and allows &(&X) to get the location containing the reference. */
854 arg2
= value_copy (arg1
);
855 VALUE_TYPE (arg2
) = lookup_pointer_type (TYPE_TARGET_TYPE (type
));
858 if (TYPE_CODE (type
) == TYPE_CODE_FUNC
)
859 return value_coerce_function (arg1
);
861 if (VALUE_LVAL (arg1
) != lval_memory
)
862 error ("Attempt to take address of value not located in memory.");
864 /* Get target memory address */
865 arg2
= value_from_pointer (lookup_pointer_type (VALUE_TYPE (arg1
)),
866 (VALUE_ADDRESS (arg1
)
867 + VALUE_OFFSET (arg1
)
868 + VALUE_EMBEDDED_OFFSET (arg1
)));
870 /* This may be a pointer to a base subobject; so remember the
871 full derived object's type ... */
872 arg2
= value_change_enclosing_type (arg2
, lookup_pointer_type (VALUE_ENCLOSING_TYPE (arg1
)));
873 /* ... and also the relative position of the subobject in the full object */
874 VALUE_POINTED_TO_OFFSET (arg2
) = VALUE_EMBEDDED_OFFSET (arg1
);
875 VALUE_BFD_SECTION (arg2
) = VALUE_BFD_SECTION (arg1
);
879 /* Given a value of a pointer type, apply the C unary * operator to it. */
882 value_ind (struct value
*arg1
)
884 struct type
*base_type
;
889 base_type
= check_typedef (VALUE_TYPE (arg1
));
891 if (TYPE_CODE (base_type
) == TYPE_CODE_MEMBER
)
892 error ("not implemented: member types in value_ind");
894 /* Allow * on an integer so we can cast it to whatever we want.
895 This returns an int, which seems like the most C-like thing
896 to do. "long long" variables are rare enough that
897 BUILTIN_TYPE_LONGEST would seem to be a mistake. */
898 if (TYPE_CODE (base_type
) == TYPE_CODE_INT
)
899 return value_at_lazy (builtin_type_int
,
900 (CORE_ADDR
) value_as_long (arg1
),
901 VALUE_BFD_SECTION (arg1
));
902 else if (TYPE_CODE (base_type
) == TYPE_CODE_PTR
)
904 struct type
*enc_type
;
905 /* We may be pointing to something embedded in a larger object */
906 /* Get the real type of the enclosing object */
907 enc_type
= check_typedef (VALUE_ENCLOSING_TYPE (arg1
));
908 enc_type
= TYPE_TARGET_TYPE (enc_type
);
909 /* Retrieve the enclosing object pointed to */
910 arg2
= value_at_lazy (enc_type
,
911 value_as_address (arg1
) - VALUE_POINTED_TO_OFFSET (arg1
),
912 VALUE_BFD_SECTION (arg1
));
914 VALUE_TYPE (arg2
) = TYPE_TARGET_TYPE (base_type
);
915 /* Add embedding info */
916 arg2
= value_change_enclosing_type (arg2
, enc_type
);
917 VALUE_EMBEDDED_OFFSET (arg2
) = VALUE_POINTED_TO_OFFSET (arg1
);
919 /* We may be pointing to an object of some derived type */
920 arg2
= value_full_object (arg2
, NULL
, 0, 0, 0);
924 error ("Attempt to take contents of a non-pointer value.");
925 return 0; /* For lint -- never reached */
928 /* Pushing small parts of stack frames. */
930 /* Push one word (the size of object that a register holds). */
933 push_word (CORE_ADDR sp
, ULONGEST word
)
935 int len
= DEPRECATED_REGISTER_SIZE
;
936 char buffer
[MAX_REGISTER_SIZE
];
938 store_unsigned_integer (buffer
, len
, word
);
939 if (INNER_THAN (1, 2))
941 /* stack grows downward */
943 write_memory (sp
, buffer
, len
);
947 /* stack grows upward */
948 write_memory (sp
, buffer
, len
);
955 /* Push LEN bytes with data at BUFFER. */
958 push_bytes (CORE_ADDR sp
, char *buffer
, int len
)
960 if (INNER_THAN (1, 2))
962 /* stack grows downward */
964 write_memory (sp
, buffer
, len
);
968 /* stack grows upward */
969 write_memory (sp
, buffer
, len
);
976 #ifndef PARM_BOUNDARY
977 #define PARM_BOUNDARY (0)
980 /* Push onto the stack the specified value VALUE. Pad it correctly for
981 it to be an argument to a function. */
984 value_push (CORE_ADDR sp
, struct value
*arg
)
986 int len
= TYPE_LENGTH (VALUE_ENCLOSING_TYPE (arg
));
987 int container_len
= len
;
990 /* How big is the container we're going to put this value in? */
992 container_len
= ((len
+ PARM_BOUNDARY
/ TARGET_CHAR_BIT
- 1)
993 & ~(PARM_BOUNDARY
/ TARGET_CHAR_BIT
- 1));
995 /* Are we going to put it at the high or low end of the container? */
996 if (TARGET_BYTE_ORDER
== BFD_ENDIAN_BIG
)
997 offset
= container_len
- len
;
1001 if (INNER_THAN (1, 2))
1003 /* stack grows downward */
1004 sp
-= container_len
;
1005 write_memory (sp
+ offset
, VALUE_CONTENTS_ALL (arg
), len
);
1009 /* stack grows upward */
1010 write_memory (sp
+ offset
, VALUE_CONTENTS_ALL (arg
), len
);
1011 sp
+= container_len
;
1018 legacy_push_arguments (int nargs
, struct value
**args
, CORE_ADDR sp
,
1019 int struct_return
, CORE_ADDR struct_addr
)
1021 /* ASSERT ( !struct_return); */
1023 for (i
= nargs
- 1; i
>= 0; i
--)
1024 sp
= value_push (sp
, args
[i
]);
1028 /* Create a value for an array by allocating space in the inferior, copying
1029 the data into that space, and then setting up an array value.
1031 The array bounds are set from LOWBOUND and HIGHBOUND, and the array is
1032 populated from the values passed in ELEMVEC.
1034 The element type of the array is inherited from the type of the
1035 first element, and all elements must have the same size (though we
1036 don't currently enforce any restriction on their types). */
1039 value_array (int lowbound
, int highbound
, struct value
**elemvec
)
1043 unsigned int typelength
;
1045 struct type
*rangetype
;
1046 struct type
*arraytype
;
1049 /* Validate that the bounds are reasonable and that each of the elements
1050 have the same size. */
1052 nelem
= highbound
- lowbound
+ 1;
1055 error ("bad array bounds (%d, %d)", lowbound
, highbound
);
1057 typelength
= TYPE_LENGTH (VALUE_ENCLOSING_TYPE (elemvec
[0]));
1058 for (idx
= 1; idx
< nelem
; idx
++)
1060 if (TYPE_LENGTH (VALUE_ENCLOSING_TYPE (elemvec
[idx
])) != typelength
)
1062 error ("array elements must all be the same size");
1066 rangetype
= create_range_type ((struct type
*) NULL
, builtin_type_int
,
1067 lowbound
, highbound
);
1068 arraytype
= create_array_type ((struct type
*) NULL
,
1069 VALUE_ENCLOSING_TYPE (elemvec
[0]), rangetype
);
1071 if (!current_language
->c_style_arrays
)
1073 val
= allocate_value (arraytype
);
1074 for (idx
= 0; idx
< nelem
; idx
++)
1076 memcpy (VALUE_CONTENTS_ALL_RAW (val
) + (idx
* typelength
),
1077 VALUE_CONTENTS_ALL (elemvec
[idx
]),
1080 VALUE_BFD_SECTION (val
) = VALUE_BFD_SECTION (elemvec
[0]);
1084 /* Allocate space to store the array in the inferior, and then initialize
1085 it by copying in each element. FIXME: Is it worth it to create a
1086 local buffer in which to collect each value and then write all the
1087 bytes in one operation? */
1089 addr
= allocate_space_in_inferior (nelem
* typelength
);
1090 for (idx
= 0; idx
< nelem
; idx
++)
1092 write_memory (addr
+ (idx
* typelength
), VALUE_CONTENTS_ALL (elemvec
[idx
]),
1096 /* Create the array type and set up an array value to be evaluated lazily. */
1098 val
= value_at_lazy (arraytype
, addr
, VALUE_BFD_SECTION (elemvec
[0]));
1102 /* Create a value for a string constant by allocating space in the inferior,
1103 copying the data into that space, and returning the address with type
1104 TYPE_CODE_STRING. PTR points to the string constant data; LEN is number
1106 Note that string types are like array of char types with a lower bound of
1107 zero and an upper bound of LEN - 1. Also note that the string may contain
1108 embedded null bytes. */
1111 value_string (char *ptr
, int len
)
1114 int lowbound
= current_language
->string_lower_bound
;
1115 struct type
*rangetype
= create_range_type ((struct type
*) NULL
,
1117 lowbound
, len
+ lowbound
- 1);
1118 struct type
*stringtype
1119 = create_string_type ((struct type
*) NULL
, rangetype
);
1122 if (current_language
->c_style_arrays
== 0)
1124 val
= allocate_value (stringtype
);
1125 memcpy (VALUE_CONTENTS_RAW (val
), ptr
, len
);
1130 /* Allocate space to store the string in the inferior, and then
1131 copy LEN bytes from PTR in gdb to that address in the inferior. */
1133 addr
= allocate_space_in_inferior (len
);
1134 write_memory (addr
, ptr
, len
);
1136 val
= value_at_lazy (stringtype
, addr
, NULL
);
1141 value_bitstring (char *ptr
, int len
)
1144 struct type
*domain_type
= create_range_type (NULL
, builtin_type_int
,
1146 struct type
*type
= create_set_type ((struct type
*) NULL
, domain_type
);
1147 TYPE_CODE (type
) = TYPE_CODE_BITSTRING
;
1148 val
= allocate_value (type
);
1149 memcpy (VALUE_CONTENTS_RAW (val
), ptr
, TYPE_LENGTH (type
));
1153 /* See if we can pass arguments in T2 to a function which takes arguments
1154 of types T1. T1 is a list of NARGS arguments, and T2 is a NULL-terminated
1155 vector. If some arguments need coercion of some sort, then the coerced
1156 values are written into T2. Return value is 0 if the arguments could be
1157 matched, or the position at which they differ if not.
1159 STATICP is nonzero if the T1 argument list came from a
1160 static member function. T2 will still include the ``this'' pointer,
1161 but 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 want
1165 to handle calls with objects from derived classes. This is not
1166 entirely correct: we should actually check to make sure that a
1167 requested operation is type secure, shouldn't we? FIXME. */
1170 typecmp (int staticp
, int varargs
, int nargs
,
1171 struct field t1
[], struct value
*t2
[])
1176 internal_error (__FILE__
, __LINE__
, "typecmp: no argument list");
1178 /* Skip ``this'' argument if applicable. T2 will always include THIS. */
1183 (i
< nargs
) && TYPE_CODE (t1
[i
].type
) != TYPE_CODE_VOID
;
1186 struct type
*tt1
, *tt2
;
1191 tt1
= check_typedef (t1
[i
].type
);
1192 tt2
= check_typedef (VALUE_TYPE (t2
[i
]));
1194 if (TYPE_CODE (tt1
) == TYPE_CODE_REF
1195 /* We should be doing hairy argument matching, as below. */
1196 && (TYPE_CODE (check_typedef (TYPE_TARGET_TYPE (tt1
))) == TYPE_CODE (tt2
)))
1198 if (TYPE_CODE (tt2
) == TYPE_CODE_ARRAY
)
1199 t2
[i
] = value_coerce_array (t2
[i
]);
1201 t2
[i
] = value_addr (t2
[i
]);
1205 /* djb - 20000715 - Until the new type structure is in the
1206 place, and we can attempt things like implicit conversions,
1207 we need to do this so you can take something like a map<const
1208 char *>, and properly access map["hello"], because the
1209 argument to [] will be a reference to a pointer to a char,
1210 and the argument will be a pointer to a char. */
1211 while ( TYPE_CODE(tt1
) == TYPE_CODE_REF
||
1212 TYPE_CODE (tt1
) == TYPE_CODE_PTR
)
1214 tt1
= check_typedef( TYPE_TARGET_TYPE(tt1
) );
1216 while ( TYPE_CODE(tt2
) == TYPE_CODE_ARRAY
||
1217 TYPE_CODE(tt2
) == TYPE_CODE_PTR
||
1218 TYPE_CODE(tt2
) == TYPE_CODE_REF
)
1220 tt2
= check_typedef( TYPE_TARGET_TYPE(tt2
) );
1222 if (TYPE_CODE (tt1
) == TYPE_CODE (tt2
))
1224 /* Array to pointer is a `trivial conversion' according to the ARM. */
1226 /* We should be doing much hairier argument matching (see section 13.2
1227 of the ARM), but as a quick kludge, just check for the same type
1229 if (TYPE_CODE (t1
[i
].type
) != TYPE_CODE (VALUE_TYPE (t2
[i
])))
1232 if (varargs
|| t2
[i
] == NULL
)
1237 /* Helper function used by value_struct_elt to recurse through baseclasses.
1238 Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
1239 and search in it assuming it has (class) type TYPE.
1240 If found, return value, else return NULL.
1242 If LOOKING_FOR_BASECLASS, then instead of looking for struct fields,
1243 look for a baseclass named NAME. */
1245 static struct value
*
1246 search_struct_field (char *name
, struct value
*arg1
, int offset
,
1247 struct type
*type
, int looking_for_baseclass
)
1250 int nbases
= TYPE_N_BASECLASSES (type
);
1252 CHECK_TYPEDEF (type
);
1254 if (!looking_for_baseclass
)
1255 for (i
= TYPE_NFIELDS (type
) - 1; i
>= nbases
; i
--)
1257 char *t_field_name
= TYPE_FIELD_NAME (type
, i
);
1259 if (t_field_name
&& (strcmp_iw (t_field_name
, name
) == 0))
1262 if (TYPE_FIELD_STATIC (type
, i
))
1264 v
= value_static_field (type
, i
);
1266 error ("field %s is nonexistent or has been optimised out",
1271 v
= value_primitive_field (arg1
, offset
, i
, type
);
1273 error ("there is no field named %s", name
);
1279 && (t_field_name
[0] == '\0'
1280 || (TYPE_CODE (type
) == TYPE_CODE_UNION
1281 && (strcmp_iw (t_field_name
, "else") == 0))))
1283 struct type
*field_type
= TYPE_FIELD_TYPE (type
, i
);
1284 if (TYPE_CODE (field_type
) == TYPE_CODE_UNION
1285 || TYPE_CODE (field_type
) == TYPE_CODE_STRUCT
)
1287 /* Look for a match through the fields of an anonymous union,
1288 or anonymous struct. C++ provides anonymous unions.
1290 In the GNU Chill (now deleted from GDB)
1291 implementation of variant record types, each
1292 <alternative field> has an (anonymous) union type,
1293 each member of the union represents a <variant
1294 alternative>. Each <variant alternative> is
1295 represented as a struct, with a member for each
1299 int new_offset
= offset
;
1301 /* This is pretty gross. In G++, the offset in an
1302 anonymous union is relative to the beginning of the
1303 enclosing struct. In the GNU Chill (now deleted
1304 from GDB) implementation of variant records, the
1305 bitpos is zero in an anonymous union field, so we
1306 have to add the offset of the union here. */
1307 if (TYPE_CODE (field_type
) == TYPE_CODE_STRUCT
1308 || (TYPE_NFIELDS (field_type
) > 0
1309 && TYPE_FIELD_BITPOS (field_type
, 0) == 0))
1310 new_offset
+= TYPE_FIELD_BITPOS (type
, i
) / 8;
1312 v
= search_struct_field (name
, arg1
, new_offset
, field_type
,
1313 looking_for_baseclass
);
1320 for (i
= 0; i
< nbases
; i
++)
1323 struct type
*basetype
= check_typedef (TYPE_BASECLASS (type
, i
));
1324 /* If we are looking for baseclasses, this is what we get when we
1325 hit them. But it could happen that the base part's member name
1326 is not yet filled in. */
1327 int found_baseclass
= (looking_for_baseclass
1328 && TYPE_BASECLASS_NAME (type
, i
) != NULL
1329 && (strcmp_iw (name
, TYPE_BASECLASS_NAME (type
, i
)) == 0));
1331 if (BASETYPE_VIA_VIRTUAL (type
, i
))
1334 struct value
*v2
= allocate_value (basetype
);
1336 boffset
= baseclass_offset (type
, i
,
1337 VALUE_CONTENTS (arg1
) + offset
,
1338 VALUE_ADDRESS (arg1
)
1339 + VALUE_OFFSET (arg1
) + offset
);
1341 error ("virtual baseclass botch");
1343 /* The virtual base class pointer might have been clobbered by the
1344 user program. Make sure that it still points to a valid memory
1348 if (boffset
< 0 || boffset
>= TYPE_LENGTH (type
))
1350 CORE_ADDR base_addr
;
1352 base_addr
= VALUE_ADDRESS (arg1
) + VALUE_OFFSET (arg1
) + boffset
;
1353 if (target_read_memory (base_addr
, VALUE_CONTENTS_RAW (v2
),
1354 TYPE_LENGTH (basetype
)) != 0)
1355 error ("virtual baseclass botch");
1356 VALUE_LVAL (v2
) = lval_memory
;
1357 VALUE_ADDRESS (v2
) = base_addr
;
1361 VALUE_LVAL (v2
) = VALUE_LVAL (arg1
);
1362 VALUE_ADDRESS (v2
) = VALUE_ADDRESS (arg1
);
1363 VALUE_OFFSET (v2
) = VALUE_OFFSET (arg1
) + boffset
;
1364 if (VALUE_LAZY (arg1
))
1365 VALUE_LAZY (v2
) = 1;
1367 memcpy (VALUE_CONTENTS_RAW (v2
),
1368 VALUE_CONTENTS_RAW (arg1
) + boffset
,
1369 TYPE_LENGTH (basetype
));
1372 if (found_baseclass
)
1374 v
= search_struct_field (name
, v2
, 0, TYPE_BASECLASS (type
, i
),
1375 looking_for_baseclass
);
1377 else if (found_baseclass
)
1378 v
= value_primitive_field (arg1
, offset
, i
, type
);
1380 v
= search_struct_field (name
, arg1
,
1381 offset
+ TYPE_BASECLASS_BITPOS (type
, i
) / 8,
1382 basetype
, looking_for_baseclass
);
1390 /* Return the offset (in bytes) of the virtual base of type BASETYPE
1391 * in an object pointed to by VALADDR (on the host), assumed to be of
1392 * type TYPE. OFFSET is number of bytes beyond start of ARG to start
1393 * looking (in case VALADDR is the contents of an enclosing object).
1395 * This routine recurses on the primary base of the derived class because
1396 * the virtual base entries of the primary base appear before the other
1397 * virtual base entries.
1399 * If the virtual base is not found, a negative integer is returned.
1400 * The magnitude of the negative integer is the number of entries in
1401 * the virtual table to skip over (entries corresponding to various
1402 * ancestral classes in the chain of primary bases).
1404 * Important: This assumes the HP / Taligent C++ runtime
1405 * conventions. Use baseclass_offset() instead to deal with g++
1409 find_rt_vbase_offset (struct type
*type
, struct type
*basetype
, char *valaddr
,
1410 int offset
, int *boffset_p
, int *skip_p
)
1412 int boffset
; /* offset of virtual base */
1413 int index
; /* displacement to use in virtual table */
1417 CORE_ADDR vtbl
; /* the virtual table pointer */
1418 struct type
*pbc
; /* the primary base class */
1420 /* Look for the virtual base recursively in the primary base, first.
1421 * This is because the derived class object and its primary base
1422 * subobject share the primary virtual table. */
1425 pbc
= TYPE_PRIMARY_BASE (type
);
1428 find_rt_vbase_offset (pbc
, basetype
, valaddr
, offset
, &boffset
, &skip
);
1431 *boffset_p
= boffset
;
1440 /* Find the index of the virtual base according to HP/Taligent
1441 runtime spec. (Depth-first, left-to-right.) */
1442 index
= virtual_base_index_skip_primaries (basetype
, type
);
1446 *skip_p
= skip
+ virtual_base_list_length_skip_primaries (type
);
1451 /* pai: FIXME -- 32x64 possible problem */
1452 /* First word (4 bytes) in object layout is the vtable pointer */
1453 vtbl
= *(CORE_ADDR
*) (valaddr
+ offset
);
1455 /* Before the constructor is invoked, things are usually zero'd out. */
1457 error ("Couldn't find virtual table -- object may not be constructed yet.");
1460 /* Find virtual base's offset -- jump over entries for primary base
1461 * ancestors, then use the index computed above. But also adjust by
1462 * HP_ACC_VBASE_START for the vtable slots before the start of the
1463 * virtual base entries. Offset is negative -- virtual base entries
1464 * appear _before_ the address point of the virtual table. */
1466 /* pai: FIXME -- 32x64 problem, if word = 8 bytes, change multiplier
1469 /* epstein : FIXME -- added param for overlay section. May not be correct */
1470 vp
= value_at (builtin_type_int
, vtbl
+ 4 * (-skip
- index
- HP_ACC_VBASE_START
), NULL
);
1471 boffset
= value_as_long (vp
);
1473 *boffset_p
= boffset
;
1478 /* Helper function used by value_struct_elt to recurse through baseclasses.
1479 Look for a field NAME in ARG1. Adjust the address of ARG1 by OFFSET bytes,
1480 and search in it assuming it has (class) type TYPE.
1481 If found, return value, else if name matched and args not return (value)-1,
1482 else return NULL. */
1484 static struct value
*
1485 search_struct_method (char *name
, struct value
**arg1p
,
1486 struct value
**args
, int offset
,
1487 int *static_memfuncp
, struct type
*type
)
1491 int name_matched
= 0;
1492 char dem_opname
[64];
1494 CHECK_TYPEDEF (type
);
1495 for (i
= TYPE_NFN_FIELDS (type
) - 1; i
>= 0; i
--)
1497 char *t_field_name
= TYPE_FN_FIELDLIST_NAME (type
, i
);
1498 /* FIXME! May need to check for ARM demangling here */
1499 if (strncmp (t_field_name
, "__", 2) == 0 ||
1500 strncmp (t_field_name
, "op", 2) == 0 ||
1501 strncmp (t_field_name
, "type", 4) == 0)
1503 if (cplus_demangle_opname (t_field_name
, dem_opname
, DMGL_ANSI
))
1504 t_field_name
= dem_opname
;
1505 else if (cplus_demangle_opname (t_field_name
, dem_opname
, 0))
1506 t_field_name
= dem_opname
;
1508 if (t_field_name
&& (strcmp_iw (t_field_name
, name
) == 0))
1510 int j
= TYPE_FN_FIELDLIST_LENGTH (type
, i
) - 1;
1511 struct fn_field
*f
= TYPE_FN_FIELDLIST1 (type
, i
);
1514 check_stub_method_group (type
, i
);
1515 if (j
> 0 && args
== 0)
1516 error ("cannot resolve overloaded method `%s': no arguments supplied", name
);
1517 else if (j
== 0 && args
== 0)
1519 v
= value_fn_field (arg1p
, f
, j
, type
, offset
);
1526 if (!typecmp (TYPE_FN_FIELD_STATIC_P (f
, j
),
1527 TYPE_VARARGS (TYPE_FN_FIELD_TYPE (f
, j
)),
1528 TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (f
, j
)),
1529 TYPE_FN_FIELD_ARGS (f
, j
), args
))
1531 if (TYPE_FN_FIELD_VIRTUAL_P (f
, j
))
1532 return value_virtual_fn_field (arg1p
, f
, j
, type
, offset
);
1533 if (TYPE_FN_FIELD_STATIC_P (f
, j
) && static_memfuncp
)
1534 *static_memfuncp
= 1;
1535 v
= value_fn_field (arg1p
, f
, j
, type
, offset
);
1544 for (i
= TYPE_N_BASECLASSES (type
) - 1; i
>= 0; i
--)
1548 if (BASETYPE_VIA_VIRTUAL (type
, i
))
1550 if (TYPE_HAS_VTABLE (type
))
1552 /* HP aCC compiled type, search for virtual base offset
1553 according to HP/Taligent runtime spec. */
1555 find_rt_vbase_offset (type
, TYPE_BASECLASS (type
, i
),
1556 VALUE_CONTENTS_ALL (*arg1p
),
1557 offset
+ VALUE_EMBEDDED_OFFSET (*arg1p
),
1558 &base_offset
, &skip
);
1560 error ("Virtual base class offset not found in vtable");
1564 struct type
*baseclass
= check_typedef (TYPE_BASECLASS (type
, i
));
1567 /* The virtual base class pointer might have been clobbered by the
1568 user program. Make sure that it still points to a valid memory
1571 if (offset
< 0 || offset
>= TYPE_LENGTH (type
))
1573 base_valaddr
= (char *) alloca (TYPE_LENGTH (baseclass
));
1574 if (target_read_memory (VALUE_ADDRESS (*arg1p
)
1575 + VALUE_OFFSET (*arg1p
) + offset
,
1577 TYPE_LENGTH (baseclass
)) != 0)
1578 error ("virtual baseclass botch");
1581 base_valaddr
= VALUE_CONTENTS (*arg1p
) + offset
;
1584 baseclass_offset (type
, i
, base_valaddr
,
1585 VALUE_ADDRESS (*arg1p
)
1586 + VALUE_OFFSET (*arg1p
) + offset
);
1587 if (base_offset
== -1)
1588 error ("virtual baseclass botch");
1593 base_offset
= TYPE_BASECLASS_BITPOS (type
, i
) / 8;
1595 v
= search_struct_method (name
, arg1p
, args
, base_offset
+ offset
,
1596 static_memfuncp
, TYPE_BASECLASS (type
, i
));
1597 if (v
== (struct value
*) - 1)
1603 /* FIXME-bothner: Why is this commented out? Why is it here? */
1604 /* *arg1p = arg1_tmp; */
1609 return (struct value
*) - 1;
1614 /* Given *ARGP, a value of type (pointer to a)* structure/union,
1615 extract the component named NAME from the ultimate target structure/union
1616 and return it as a value with its appropriate type.
1617 ERR is used in the error message if *ARGP's type is wrong.
1619 C++: ARGS is a list of argument types to aid in the selection of
1620 an appropriate method. Also, handle derived types.
1622 STATIC_MEMFUNCP, if non-NULL, points to a caller-supplied location
1623 where the truthvalue of whether the function that was resolved was
1624 a static member function or not is stored.
1626 ERR is an error message to be printed in case the field is not found. */
1629 value_struct_elt (struct value
**argp
, struct value
**args
,
1630 char *name
, int *static_memfuncp
, char *err
)
1635 COERCE_ARRAY (*argp
);
1637 t
= check_typedef (VALUE_TYPE (*argp
));
1639 /* Follow pointers until we get to a non-pointer. */
1641 while (TYPE_CODE (t
) == TYPE_CODE_PTR
|| TYPE_CODE (t
) == TYPE_CODE_REF
)
1643 *argp
= value_ind (*argp
);
1644 /* Don't coerce fn pointer to fn and then back again! */
1645 if (TYPE_CODE (VALUE_TYPE (*argp
)) != TYPE_CODE_FUNC
)
1646 COERCE_ARRAY (*argp
);
1647 t
= check_typedef (VALUE_TYPE (*argp
));
1650 if (TYPE_CODE (t
) == TYPE_CODE_MEMBER
)
1651 error ("not implemented: member type in value_struct_elt");
1653 if (TYPE_CODE (t
) != TYPE_CODE_STRUCT
1654 && TYPE_CODE (t
) != TYPE_CODE_UNION
)
1655 error ("Attempt to extract a component of a value that is not a %s.", err
);
1657 /* Assume it's not, unless we see that it is. */
1658 if (static_memfuncp
)
1659 *static_memfuncp
= 0;
1663 /* if there are no arguments ...do this... */
1665 /* Try as a field first, because if we succeed, there
1666 is less work to be done. */
1667 v
= search_struct_field (name
, *argp
, 0, t
, 0);
1671 /* C++: If it was not found as a data field, then try to
1672 return it as a pointer to a method. */
1674 if (destructor_name_p (name
, t
))
1675 error ("Cannot get value of destructor");
1677 v
= search_struct_method (name
, argp
, args
, 0, static_memfuncp
, t
);
1679 if (v
== (struct value
*) - 1)
1680 error ("Cannot take address of a method");
1683 if (TYPE_NFN_FIELDS (t
))
1684 error ("There is no member or method named %s.", name
);
1686 error ("There is no member named %s.", name
);
1691 if (destructor_name_p (name
, t
))
1695 /* Destructors are a special case. */
1696 int m_index
, f_index
;
1699 if (get_destructor_fn_field (t
, &m_index
, &f_index
))
1701 v
= value_fn_field (NULL
, TYPE_FN_FIELDLIST1 (t
, m_index
),
1705 error ("could not find destructor function named %s.", name
);
1711 error ("destructor should not have any argument");
1715 v
= search_struct_method (name
, argp
, args
, 0, static_memfuncp
, t
);
1717 if (v
== (struct value
*) - 1)
1719 error ("One of the arguments you tried to pass to %s could not be converted to what the function wants.", name
);
1723 /* See if user tried to invoke data as function. If so,
1724 hand it back. If it's not callable (i.e., a pointer to function),
1725 gdb should give an error. */
1726 v
= search_struct_field (name
, *argp
, 0, t
, 0);
1730 error ("Structure has no component named %s.", name
);
1734 /* Search through the methods of an object (and its bases)
1735 * to find a specified method. Return the pointer to the
1736 * fn_field list of overloaded instances.
1737 * Helper function for value_find_oload_list.
1738 * ARGP is a pointer to a pointer to a value (the object)
1739 * METHOD is a string containing the method name
1740 * OFFSET is the offset within the value
1741 * TYPE is the assumed type of the object
1742 * NUM_FNS is the number of overloaded instances
1743 * BASETYPE is set to the actual type of the subobject where the method is found
1744 * BOFFSET is the offset of the base subobject where the method is found */
1746 static struct fn_field
*
1747 find_method_list (struct value
**argp
, char *method
, int offset
,
1748 struct type
*type
, int *num_fns
,
1749 struct type
**basetype
, int *boffset
)
1753 CHECK_TYPEDEF (type
);
1757 /* First check in object itself */
1758 for (i
= TYPE_NFN_FIELDS (type
) - 1; i
>= 0; i
--)
1760 /* pai: FIXME What about operators and type conversions? */
1761 char *fn_field_name
= TYPE_FN_FIELDLIST_NAME (type
, i
);
1762 if (fn_field_name
&& (strcmp_iw (fn_field_name
, method
) == 0))
1764 int len
= TYPE_FN_FIELDLIST_LENGTH (type
, i
);
1765 struct fn_field
*f
= TYPE_FN_FIELDLIST1 (type
, i
);
1771 /* Resolve any stub methods. */
1772 check_stub_method_group (type
, i
);
1778 /* Not found in object, check in base subobjects */
1779 for (i
= TYPE_N_BASECLASSES (type
) - 1; i
>= 0; i
--)
1782 if (BASETYPE_VIA_VIRTUAL (type
, i
))
1784 if (TYPE_HAS_VTABLE (type
))
1786 /* HP aCC compiled type, search for virtual base offset
1787 * according to HP/Taligent runtime spec. */
1789 find_rt_vbase_offset (type
, TYPE_BASECLASS (type
, i
),
1790 VALUE_CONTENTS_ALL (*argp
),
1791 offset
+ VALUE_EMBEDDED_OFFSET (*argp
),
1792 &base_offset
, &skip
);
1794 error ("Virtual base class offset not found in vtable");
1798 /* probably g++ runtime model */
1799 base_offset
= VALUE_OFFSET (*argp
) + offset
;
1801 baseclass_offset (type
, i
,
1802 VALUE_CONTENTS (*argp
) + base_offset
,
1803 VALUE_ADDRESS (*argp
) + base_offset
);
1804 if (base_offset
== -1)
1805 error ("virtual baseclass botch");
1809 /* non-virtual base, simply use bit position from debug info */
1811 base_offset
= TYPE_BASECLASS_BITPOS (type
, i
) / 8;
1813 f
= find_method_list (argp
, method
, base_offset
+ offset
,
1814 TYPE_BASECLASS (type
, i
), num_fns
, basetype
,
1822 /* Return the list of overloaded methods of a specified name.
1823 * ARGP is a pointer to a pointer to a value (the object)
1824 * METHOD is the method name
1825 * OFFSET is the offset within the value contents
1826 * NUM_FNS is the number of overloaded instances
1827 * BASETYPE is set to the type of the base subobject that defines the method
1828 * BOFFSET is the offset of the base subobject which defines the method */
1831 value_find_oload_method_list (struct value
**argp
, char *method
, int offset
,
1832 int *num_fns
, struct type
**basetype
,
1837 t
= check_typedef (VALUE_TYPE (*argp
));
1839 /* code snarfed from value_struct_elt */
1840 while (TYPE_CODE (t
) == TYPE_CODE_PTR
|| TYPE_CODE (t
) == TYPE_CODE_REF
)
1842 *argp
= value_ind (*argp
);
1843 /* Don't coerce fn pointer to fn and then back again! */
1844 if (TYPE_CODE (VALUE_TYPE (*argp
)) != TYPE_CODE_FUNC
)
1845 COERCE_ARRAY (*argp
);
1846 t
= check_typedef (VALUE_TYPE (*argp
));
1849 if (TYPE_CODE (t
) == TYPE_CODE_MEMBER
)
1850 error ("Not implemented: member type in value_find_oload_lis");
1852 if (TYPE_CODE (t
) != TYPE_CODE_STRUCT
1853 && TYPE_CODE (t
) != TYPE_CODE_UNION
)
1854 error ("Attempt to extract a component of a value that is not a struct or union");
1856 return find_method_list (argp
, method
, 0, t
, num_fns
, basetype
, boffset
);
1859 /* Given an array of argument types (ARGTYPES) (which includes an
1860 entry for "this" in the case of C++ methods), the number of
1861 arguments NARGS, the NAME of a function whether it's a method or
1862 not (METHOD), and the degree of laxness (LAX) in conforming to
1863 overload resolution rules in ANSI C++, find the best function that
1864 matches on the argument types according to the overload resolution
1867 In the case of class methods, the parameter OBJ is an object value
1868 in which to search for overloaded methods.
1870 In the case of non-method functions, the parameter FSYM is a symbol
1871 corresponding to one of the overloaded functions.
1873 Return value is an integer: 0 -> good match, 10 -> debugger applied
1874 non-standard coercions, 100 -> incompatible.
1876 If a method is being searched for, VALP will hold the value.
1877 If a non-method is being searched for, SYMP will hold the symbol for it.
1879 If a method is being searched for, and it is a static method,
1880 then STATICP will point to a non-zero value.
1882 Note: This function does *not* check the value of
1883 overload_resolution. Caller must check it to see whether overload
1884 resolution is permitted.
1888 find_overload_match (struct type
**arg_types
, int nargs
, char *name
, int method
,
1889 int lax
, struct value
**objp
, struct symbol
*fsym
,
1890 struct value
**valp
, struct symbol
**symp
, int *staticp
)
1893 struct type
**parm_types
;
1894 int champ_nparms
= 0;
1895 struct value
*obj
= (objp
? *objp
: NULL
);
1897 short oload_champ
= -1; /* Index of best overloaded function */
1898 short oload_ambiguous
= 0; /* Current ambiguity state for overload resolution */
1899 /* 0 => no ambiguity, 1 => two good funcs, 2 => incomparable funcs */
1900 short oload_ambig_champ
= -1; /* 2nd contender for best match */
1901 short oload_non_standard
= 0; /* did we have to use non-standard conversions? */
1902 short oload_incompatible
= 0; /* are args supplied incompatible with any function? */
1904 struct badness_vector
*bv
; /* A measure of how good an overloaded instance is */
1905 struct badness_vector
*oload_champ_bv
= NULL
; /* The measure for the current best match */
1907 struct value
*temp
= obj
;
1908 struct fn_field
*fns_ptr
= NULL
; /* For methods, the list of overloaded methods */
1909 struct symbol
**oload_syms
= NULL
; /* For non-methods, the list of overloaded function symbols */
1910 int num_fns
= 0; /* Number of overloaded instances being considered */
1911 struct type
*basetype
= NULL
;
1916 struct cleanup
*cleanups
= NULL
;
1918 char *obj_type_name
= NULL
;
1919 char *func_name
= NULL
;
1921 /* Get the list of overloaded methods or functions */
1924 obj_type_name
= TYPE_NAME (VALUE_TYPE (obj
));
1925 /* Hack: evaluate_subexp_standard often passes in a pointer
1926 value rather than the object itself, so try again */
1927 if ((!obj_type_name
|| !*obj_type_name
) &&
1928 (TYPE_CODE (VALUE_TYPE (obj
)) == TYPE_CODE_PTR
))
1929 obj_type_name
= TYPE_NAME (TYPE_TARGET_TYPE (VALUE_TYPE (obj
)));
1931 fns_ptr
= value_find_oload_method_list (&temp
, name
, 0,
1933 &basetype
, &boffset
);
1934 if (!fns_ptr
|| !num_fns
)
1935 error ("Couldn't find method %s%s%s",
1937 (obj_type_name
&& *obj_type_name
) ? "::" : "",
1939 /* If we are dealing with stub method types, they should have
1940 been resolved by find_method_list via value_find_oload_method_list
1942 gdb_assert (TYPE_DOMAIN_TYPE (fns_ptr
[0].type
) != NULL
);
1947 func_name
= cplus_demangle (DEPRECATED_SYMBOL_NAME (fsym
), DMGL_NO_OPTS
);
1949 /* If the name is NULL this must be a C-style function.
1950 Just return the same symbol. */
1957 oload_syms
= make_symbol_overload_list (fsym
);
1958 cleanups
= make_cleanup (xfree
, oload_syms
);
1959 while (oload_syms
[++i
])
1962 error ("Couldn't find function %s", func_name
);
1965 oload_champ_bv
= NULL
;
1967 /* Consider each candidate in turn */
1968 for (ix
= 0; ix
< num_fns
; ix
++)
1973 if (TYPE_FN_FIELD_STATIC_P (fns_ptr
, ix
))
1975 nparms
= TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (fns_ptr
, ix
));
1979 /* If it's not a method, this is the proper place */
1980 nparms
=TYPE_NFIELDS(SYMBOL_TYPE(oload_syms
[ix
]));
1983 /* Prepare array of parameter types */
1984 parm_types
= (struct type
**) xmalloc (nparms
* (sizeof (struct type
*)));
1985 for (jj
= 0; jj
< nparms
; jj
++)
1986 parm_types
[jj
] = (method
1987 ? (TYPE_FN_FIELD_ARGS (fns_ptr
, ix
)[jj
].type
)
1988 : TYPE_FIELD_TYPE (SYMBOL_TYPE (oload_syms
[ix
]), jj
));
1990 /* Compare parameter types to supplied argument types. Skip THIS for
1992 bv
= rank_function (parm_types
, nparms
, arg_types
+ static_offset
,
1993 nargs
- static_offset
);
1995 if (!oload_champ_bv
)
1997 oload_champ_bv
= bv
;
1999 champ_nparms
= nparms
;
2002 /* See whether current candidate is better or worse than previous best */
2003 switch (compare_badness (bv
, oload_champ_bv
))
2006 oload_ambiguous
= 1; /* top two contenders are equally good */
2007 oload_ambig_champ
= ix
;
2010 oload_ambiguous
= 2; /* incomparable top contenders */
2011 oload_ambig_champ
= ix
;
2014 oload_champ_bv
= bv
; /* new champion, record details */
2015 oload_ambiguous
= 0;
2017 oload_ambig_champ
= -1;
2018 champ_nparms
= nparms
;
2028 fprintf_filtered (gdb_stderr
,"Overloaded method instance %s, # of parms %d\n", fns_ptr
[ix
].physname
, nparms
);
2030 fprintf_filtered (gdb_stderr
,"Overloaded function instance %s # of parms %d\n", SYMBOL_DEMANGLED_NAME (oload_syms
[ix
]), nparms
);
2031 for (jj
= 0; jj
< nargs
- static_offset
; jj
++)
2032 fprintf_filtered (gdb_stderr
,"...Badness @ %d : %d\n", jj
, bv
->rank
[jj
]);
2033 fprintf_filtered (gdb_stderr
,"Overload resolution champion is %d, ambiguous? %d\n", oload_champ
, oload_ambiguous
);
2035 } /* end loop over all candidates */
2036 /* NOTE: dan/2000-03-10: Seems to be a better idea to just pick one
2037 if they have the exact same goodness. This is because there is no
2038 way to differentiate based on return type, which we need to in
2039 cases like overloads of .begin() <It's both const and non-const> */
2041 if (oload_ambiguous
)
2044 error ("Cannot resolve overloaded method %s%s%s to unique instance; disambiguate by specifying function signature",
2046 (obj_type_name
&& *obj_type_name
) ? "::" : "",
2049 error ("Cannot resolve overloaded function %s to unique instance; disambiguate by specifying function signature",
2054 /* Check how bad the best match is. */
2056 if (method
&& TYPE_FN_FIELD_STATIC_P (fns_ptr
, oload_champ
))
2058 for (ix
= 1; ix
<= nargs
- static_offset
; ix
++)
2060 if (oload_champ_bv
->rank
[ix
] >= 100)
2061 oload_incompatible
= 1; /* truly mismatched types */
2063 else if (oload_champ_bv
->rank
[ix
] >= 10)
2064 oload_non_standard
= 1; /* non-standard type conversions needed */
2066 if (oload_incompatible
)
2069 error ("Cannot resolve method %s%s%s to any overloaded instance",
2071 (obj_type_name
&& *obj_type_name
) ? "::" : "",
2074 error ("Cannot resolve function %s to any overloaded instance",
2077 else if (oload_non_standard
)
2080 warning ("Using non-standard conversion to match method %s%s%s to supplied arguments",
2082 (obj_type_name
&& *obj_type_name
) ? "::" : "",
2085 warning ("Using non-standard conversion to match function %s to supplied arguments",
2091 if (staticp
&& TYPE_FN_FIELD_STATIC_P (fns_ptr
, oload_champ
))
2095 if (TYPE_FN_FIELD_VIRTUAL_P (fns_ptr
, oload_champ
))
2096 *valp
= value_virtual_fn_field (&temp
, fns_ptr
, oload_champ
, basetype
, boffset
);
2098 *valp
= value_fn_field (&temp
, fns_ptr
, oload_champ
, basetype
, boffset
);
2102 *symp
= oload_syms
[oload_champ
];
2108 if (TYPE_CODE (VALUE_TYPE (temp
)) != TYPE_CODE_PTR
2109 && TYPE_CODE (VALUE_TYPE (*objp
)) == TYPE_CODE_PTR
)
2111 temp
= value_addr (temp
);
2115 if (cleanups
!= NULL
)
2116 do_cleanups (cleanups
);
2118 return oload_incompatible
? 100 : (oload_non_standard
? 10 : 0);
2121 /* C++: return 1 is NAME is a legitimate name for the destructor
2122 of type TYPE. If TYPE does not have a destructor, or
2123 if NAME is inappropriate for TYPE, an error is signaled. */
2125 destructor_name_p (const char *name
, const struct type
*type
)
2127 /* destructors are a special case. */
2131 char *dname
= type_name_no_tag (type
);
2132 char *cp
= strchr (dname
, '<');
2135 /* Do not compare the template part for template classes. */
2137 len
= strlen (dname
);
2140 if (strlen (name
+ 1) != len
|| strncmp (dname
, name
+ 1, len
) != 0)
2141 error ("name of destructor must equal name of class");
2148 /* Helper function for check_field: Given TYPE, a structure/union,
2149 return 1 if the component named NAME from the ultimate
2150 target structure/union is defined, otherwise, return 0. */
2153 check_field_in (struct type
*type
, const char *name
)
2157 for (i
= TYPE_NFIELDS (type
) - 1; i
>= TYPE_N_BASECLASSES (type
); i
--)
2159 char *t_field_name
= TYPE_FIELD_NAME (type
, i
);
2160 if (t_field_name
&& (strcmp_iw (t_field_name
, name
) == 0))
2164 /* C++: If it was not found as a data field, then try to
2165 return it as a pointer to a method. */
2167 /* Destructors are a special case. */
2168 if (destructor_name_p (name
, type
))
2170 int m_index
, f_index
;
2172 return get_destructor_fn_field (type
, &m_index
, &f_index
);
2175 for (i
= TYPE_NFN_FIELDS (type
) - 1; i
>= 0; --i
)
2177 if (strcmp_iw (TYPE_FN_FIELDLIST_NAME (type
, i
), name
) == 0)
2181 for (i
= TYPE_N_BASECLASSES (type
) - 1; i
>= 0; i
--)
2182 if (check_field_in (TYPE_BASECLASS (type
, i
), name
))
2189 /* C++: Given ARG1, a value of type (pointer to a)* structure/union,
2190 return 1 if the component named NAME from the ultimate
2191 target structure/union is defined, otherwise, return 0. */
2194 check_field (struct value
*arg1
, const char *name
)
2198 COERCE_ARRAY (arg1
);
2200 t
= VALUE_TYPE (arg1
);
2202 /* Follow pointers until we get to a non-pointer. */
2207 if (TYPE_CODE (t
) != TYPE_CODE_PTR
&& TYPE_CODE (t
) != TYPE_CODE_REF
)
2209 t
= TYPE_TARGET_TYPE (t
);
2212 if (TYPE_CODE (t
) == TYPE_CODE_MEMBER
)
2213 error ("not implemented: member type in check_field");
2215 if (TYPE_CODE (t
) != TYPE_CODE_STRUCT
2216 && TYPE_CODE (t
) != TYPE_CODE_UNION
)
2217 error ("Internal error: `this' is not an aggregate");
2219 return check_field_in (t
, name
);
2222 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
2223 return the appropriate member. This function is used to resolve
2224 user expressions of the form "DOMAIN::NAME". For more details on
2225 what happens, see the comment before
2226 value_struct_elt_for_reference. */
2229 value_aggregate_elt (struct type
*curtype
,
2233 switch (TYPE_CODE (curtype
))
2235 case TYPE_CODE_STRUCT
:
2236 case TYPE_CODE_UNION
:
2237 return value_struct_elt_for_reference (curtype
, 0, curtype
, name
, NULL
);
2238 case TYPE_CODE_NAMESPACE
:
2239 return value_namespace_elt (curtype
, name
, noside
);
2241 internal_error (__FILE__
, __LINE__
,
2242 "non-aggregate type in value_aggregate_elt");
2246 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
2247 return the address of this member as a "pointer to member"
2248 type. If INTYPE is non-null, then it will be the type
2249 of the member we are looking for. This will help us resolve
2250 "pointers to member functions". This function is used
2251 to resolve user expressions of the form "DOMAIN::NAME". */
2254 value_struct_elt_for_reference (struct type
*domain
, int offset
,
2255 struct type
*curtype
, char *name
,
2256 struct type
*intype
)
2258 struct type
*t
= curtype
;
2262 if (TYPE_CODE (t
) != TYPE_CODE_STRUCT
2263 && TYPE_CODE (t
) != TYPE_CODE_UNION
)
2264 error ("Internal error: non-aggregate type to value_struct_elt_for_reference");
2266 for (i
= TYPE_NFIELDS (t
) - 1; i
>= TYPE_N_BASECLASSES (t
); i
--)
2268 char *t_field_name
= TYPE_FIELD_NAME (t
, i
);
2270 if (t_field_name
&& strcmp (t_field_name
, name
) == 0)
2272 if (TYPE_FIELD_STATIC (t
, i
))
2274 v
= value_static_field (t
, i
);
2276 error ("static field %s has been optimized out",
2280 if (TYPE_FIELD_PACKED (t
, i
))
2281 error ("pointers to bitfield members not allowed");
2283 return value_from_longest
2284 (lookup_reference_type (lookup_member_type (TYPE_FIELD_TYPE (t
, i
),
2286 offset
+ (LONGEST
) (TYPE_FIELD_BITPOS (t
, i
) >> 3));
2290 /* C++: If it was not found as a data field, then try to
2291 return it as a pointer to a method. */
2293 /* Destructors are a special case. */
2294 if (destructor_name_p (name
, t
))
2296 error ("member pointers to destructors not implemented yet");
2299 /* Perform all necessary dereferencing. */
2300 while (intype
&& TYPE_CODE (intype
) == TYPE_CODE_PTR
)
2301 intype
= TYPE_TARGET_TYPE (intype
);
2303 for (i
= TYPE_NFN_FIELDS (t
) - 1; i
>= 0; --i
)
2305 char *t_field_name
= TYPE_FN_FIELDLIST_NAME (t
, i
);
2306 char dem_opname
[64];
2308 if (strncmp (t_field_name
, "__", 2) == 0 ||
2309 strncmp (t_field_name
, "op", 2) == 0 ||
2310 strncmp (t_field_name
, "type", 4) == 0)
2312 if (cplus_demangle_opname (t_field_name
, dem_opname
, DMGL_ANSI
))
2313 t_field_name
= dem_opname
;
2314 else if (cplus_demangle_opname (t_field_name
, dem_opname
, 0))
2315 t_field_name
= dem_opname
;
2317 if (t_field_name
&& strcmp (t_field_name
, name
) == 0)
2319 int j
= TYPE_FN_FIELDLIST_LENGTH (t
, i
);
2320 struct fn_field
*f
= TYPE_FN_FIELDLIST1 (t
, i
);
2322 check_stub_method_group (t
, i
);
2324 if (intype
== 0 && j
> 1)
2325 error ("non-unique member `%s' requires type instantiation", name
);
2329 if (TYPE_FN_FIELD_TYPE (f
, j
) == intype
)
2332 error ("no member function matches that type instantiation");
2337 if (TYPE_FN_FIELD_VIRTUAL_P (f
, j
))
2339 return value_from_longest
2340 (lookup_reference_type
2341 (lookup_member_type (TYPE_FN_FIELD_TYPE (f
, j
),
2343 (LONGEST
) METHOD_PTR_FROM_VOFFSET (TYPE_FN_FIELD_VOFFSET (f
, j
)));
2347 struct symbol
*s
= lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f
, j
),
2348 0, VAR_DOMAIN
, 0, NULL
);
2355 v
= read_var_value (s
, 0);
2357 VALUE_TYPE (v
) = lookup_reference_type
2358 (lookup_member_type (TYPE_FN_FIELD_TYPE (f
, j
),
2366 for (i
= TYPE_N_BASECLASSES (t
) - 1; i
>= 0; i
--)
2371 if (BASETYPE_VIA_VIRTUAL (t
, i
))
2374 base_offset
= TYPE_BASECLASS_BITPOS (t
, i
) / 8;
2375 v
= value_struct_elt_for_reference (domain
,
2376 offset
+ base_offset
,
2377 TYPE_BASECLASS (t
, i
),
2386 /* C++: Return the member NAME of the namespace given by the type
2389 static struct value
*
2390 value_namespace_elt (const struct type
*curtype
,
2394 const char *namespace_name
= TYPE_TAG_NAME (curtype
);
2396 struct value
*retval
;
2398 sym
= cp_lookup_symbol_namespace (namespace_name
, name
, NULL
,
2399 get_selected_block (0), VAR_DOMAIN
,
2404 else if ((noside
== EVAL_AVOID_SIDE_EFFECTS
)
2405 && (SYMBOL_CLASS (sym
) == LOC_TYPEDEF
))
2406 retval
= allocate_value (SYMBOL_TYPE (sym
));
2408 retval
= value_of_variable (sym
, get_selected_block (0));
2411 error ("No symbol \"%s\" in namespace \"%s\".", name
,
2412 TYPE_TAG_NAME (curtype
));
2418 /* Given a pointer value V, find the real (RTTI) type
2419 of the object it points to.
2420 Other parameters FULL, TOP, USING_ENC as with value_rtti_type()
2421 and refer to the values computed for the object pointed to. */
2424 value_rtti_target_type (struct value
*v
, int *full
, int *top
, int *using_enc
)
2426 struct value
*target
;
2428 target
= value_ind (v
);
2430 return value_rtti_type (target
, full
, top
, using_enc
);
2433 /* Given a value pointed to by ARGP, check its real run-time type, and
2434 if that is different from the enclosing type, create a new value
2435 using the real run-time type as the enclosing type (and of the same
2436 type as ARGP) and return it, with the embedded offset adjusted to
2437 be the correct offset to the enclosed object
2438 RTYPE is the type, and XFULL, XTOP, and XUSING_ENC are the other
2439 parameters, computed by value_rtti_type(). If these are available,
2440 they can be supplied and a second call to value_rtti_type() is avoided.
2441 (Pass RTYPE == NULL if they're not available */
2444 value_full_object (struct value
*argp
, struct type
*rtype
, int xfull
, int xtop
,
2447 struct type
*real_type
;
2451 struct value
*new_val
;
2458 using_enc
= xusing_enc
;
2461 real_type
= value_rtti_type (argp
, &full
, &top
, &using_enc
);
2463 /* If no RTTI data, or if object is already complete, do nothing */
2464 if (!real_type
|| real_type
== VALUE_ENCLOSING_TYPE (argp
))
2467 /* If we have the full object, but for some reason the enclosing
2468 type is wrong, set it *//* pai: FIXME -- sounds iffy */
2471 argp
= value_change_enclosing_type (argp
, real_type
);
2475 /* Check if object is in memory */
2476 if (VALUE_LVAL (argp
) != lval_memory
)
2478 warning ("Couldn't retrieve complete object of RTTI type %s; object may be in register(s).", TYPE_NAME (real_type
));
2483 /* All other cases -- retrieve the complete object */
2484 /* Go back by the computed top_offset from the beginning of the object,
2485 adjusting for the embedded offset of argp if that's what value_rtti_type
2486 used for its computation. */
2487 new_val
= value_at_lazy (real_type
, VALUE_ADDRESS (argp
) - top
+
2488 (using_enc
? 0 : VALUE_EMBEDDED_OFFSET (argp
)),
2489 VALUE_BFD_SECTION (argp
));
2490 VALUE_TYPE (new_val
) = VALUE_TYPE (argp
);
2491 VALUE_EMBEDDED_OFFSET (new_val
) = using_enc
? top
+ VALUE_EMBEDDED_OFFSET (argp
) : top
;
2498 /* Return the value of the local variable, if one exists.
2499 Flag COMPLAIN signals an error if the request is made in an
2500 inappropriate context. */
2503 value_of_local (const char *name
, int complain
)
2505 struct symbol
*func
, *sym
;
2509 if (deprecated_selected_frame
== 0)
2512 error ("no frame selected");
2517 func
= get_frame_function (deprecated_selected_frame
);
2521 error ("no `%s' in nameless context", name
);
2526 b
= SYMBOL_BLOCK_VALUE (func
);
2527 if (dict_empty (BLOCK_DICT (b
)))
2530 error ("no args, no `%s'", name
);
2535 /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
2536 symbol instead of the LOC_ARG one (if both exist). */
2537 sym
= lookup_block_symbol (b
, name
, NULL
, VAR_DOMAIN
);
2541 error ("current stack frame does not contain a variable named `%s'", name
);
2546 ret
= read_var_value (sym
, deprecated_selected_frame
);
2547 if (ret
== 0 && complain
)
2548 error ("`%s' argument unreadable", name
);
2552 /* C++/Objective-C: return the value of the class instance variable,
2553 if one exists. Flag COMPLAIN signals an error if the request is
2554 made in an inappropriate context. */
2557 value_of_this (int complain
)
2559 if (current_language
->la_language
== language_objc
)
2560 return value_of_local ("self", complain
);
2562 return value_of_local ("this", complain
);
2565 /* Create a slice (sub-string, sub-array) of ARRAY, that is LENGTH elements
2566 long, starting at LOWBOUND. The result has the same lower bound as
2567 the original ARRAY. */
2570 value_slice (struct value
*array
, int lowbound
, int length
)
2572 struct type
*slice_range_type
, *slice_type
, *range_type
;
2573 LONGEST lowerbound
, upperbound
;
2574 struct value
*slice
;
2575 struct type
*array_type
;
2576 array_type
= check_typedef (VALUE_TYPE (array
));
2577 COERCE_VARYING_ARRAY (array
, array_type
);
2578 if (TYPE_CODE (array_type
) != TYPE_CODE_ARRAY
2579 && TYPE_CODE (array_type
) != TYPE_CODE_STRING
2580 && TYPE_CODE (array_type
) != TYPE_CODE_BITSTRING
)
2581 error ("cannot take slice of non-array");
2582 range_type
= TYPE_INDEX_TYPE (array_type
);
2583 if (get_discrete_bounds (range_type
, &lowerbound
, &upperbound
) < 0)
2584 error ("slice from bad array or bitstring");
2585 if (lowbound
< lowerbound
|| length
< 0
2586 || lowbound
+ length
- 1 > upperbound
)
2587 error ("slice out of range");
2588 /* FIXME-type-allocation: need a way to free this type when we are
2590 slice_range_type
= create_range_type ((struct type
*) NULL
,
2591 TYPE_TARGET_TYPE (range_type
),
2592 lowbound
, lowbound
+ length
- 1);
2593 if (TYPE_CODE (array_type
) == TYPE_CODE_BITSTRING
)
2596 slice_type
= create_set_type ((struct type
*) NULL
, slice_range_type
);
2597 TYPE_CODE (slice_type
) = TYPE_CODE_BITSTRING
;
2598 slice
= value_zero (slice_type
, not_lval
);
2599 for (i
= 0; i
< length
; i
++)
2601 int element
= value_bit_index (array_type
,
2602 VALUE_CONTENTS (array
),
2605 error ("internal error accessing bitstring");
2606 else if (element
> 0)
2608 int j
= i
% TARGET_CHAR_BIT
;
2609 if (BITS_BIG_ENDIAN
)
2610 j
= TARGET_CHAR_BIT
- 1 - j
;
2611 VALUE_CONTENTS_RAW (slice
)[i
/ TARGET_CHAR_BIT
] |= (1 << j
);
2614 /* We should set the address, bitssize, and bitspos, so the clice
2615 can be used on the LHS, but that may require extensions to
2616 value_assign. For now, just leave as a non_lval. FIXME. */
2620 struct type
*element_type
= TYPE_TARGET_TYPE (array_type
);
2622 = (lowbound
- lowerbound
) * TYPE_LENGTH (check_typedef (element_type
));
2623 slice_type
= create_array_type ((struct type
*) NULL
, element_type
,
2625 TYPE_CODE (slice_type
) = TYPE_CODE (array_type
);
2626 slice
= allocate_value (slice_type
);
2627 if (VALUE_LAZY (array
))
2628 VALUE_LAZY (slice
) = 1;
2630 memcpy (VALUE_CONTENTS (slice
), VALUE_CONTENTS (array
) + offset
,
2631 TYPE_LENGTH (slice_type
));
2632 if (VALUE_LVAL (array
) == lval_internalvar
)
2633 VALUE_LVAL (slice
) = lval_internalvar_component
;
2635 VALUE_LVAL (slice
) = VALUE_LVAL (array
);
2636 VALUE_ADDRESS (slice
) = VALUE_ADDRESS (array
);
2637 VALUE_OFFSET (slice
) = VALUE_OFFSET (array
) + offset
;
2642 /* Create a value for a FORTRAN complex number. Currently most of
2643 the time values are coerced to COMPLEX*16 (i.e. a complex number
2644 composed of 2 doubles. This really should be a smarter routine
2645 that figures out precision inteligently as opposed to assuming
2646 doubles. FIXME: fmb */
2649 value_literal_complex (struct value
*arg1
, struct value
*arg2
, struct type
*type
)
2652 struct type
*real_type
= TYPE_TARGET_TYPE (type
);
2654 val
= allocate_value (type
);
2655 arg1
= value_cast (real_type
, arg1
);
2656 arg2
= value_cast (real_type
, arg2
);
2658 memcpy (VALUE_CONTENTS_RAW (val
),
2659 VALUE_CONTENTS (arg1
), TYPE_LENGTH (real_type
));
2660 memcpy (VALUE_CONTENTS_RAW (val
) + TYPE_LENGTH (real_type
),
2661 VALUE_CONTENTS (arg2
), TYPE_LENGTH (real_type
));
2665 /* Cast a value into the appropriate complex data type. */
2667 static struct value
*
2668 cast_into_complex (struct type
*type
, struct value
*val
)
2670 struct type
*real_type
= TYPE_TARGET_TYPE (type
);
2671 if (TYPE_CODE (VALUE_TYPE (val
)) == TYPE_CODE_COMPLEX
)
2673 struct type
*val_real_type
= TYPE_TARGET_TYPE (VALUE_TYPE (val
));
2674 struct value
*re_val
= allocate_value (val_real_type
);
2675 struct value
*im_val
= allocate_value (val_real_type
);
2677 memcpy (VALUE_CONTENTS_RAW (re_val
),
2678 VALUE_CONTENTS (val
), TYPE_LENGTH (val_real_type
));
2679 memcpy (VALUE_CONTENTS_RAW (im_val
),
2680 VALUE_CONTENTS (val
) + TYPE_LENGTH (val_real_type
),
2681 TYPE_LENGTH (val_real_type
));
2683 return value_literal_complex (re_val
, im_val
, type
);
2685 else if (TYPE_CODE (VALUE_TYPE (val
)) == TYPE_CODE_FLT
2686 || TYPE_CODE (VALUE_TYPE (val
)) == TYPE_CODE_INT
)
2687 return value_literal_complex (val
, value_zero (real_type
, not_lval
), type
);
2689 error ("cannot cast non-number to complex");
2693 _initialize_valops (void)
2697 (add_set_cmd ("abandon", class_support
, var_boolean
, (char *) &auto_abandon
,
2698 "Set automatic abandonment of expressions upon failure.",
2704 (add_set_cmd ("overload-resolution", class_support
, var_boolean
, (char *) &overload_resolution
,
2705 "Set overload resolution in evaluating C++ functions.",
2708 overload_resolution
= 1;