1 /* Evaluate expressions for GDB.
3 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2008,
5 2009, 2010 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/>. */
23 #include "gdb_string.h"
27 #include "expression.h"
30 #include "language.h" /* For CAST_IS_CONVERSION */
31 #include "f-lang.h" /* for array bound stuff */
34 #include "objc-lang.h"
36 #include "parser-defs.h"
37 #include "cp-support.h"
39 #include "exceptions.h"
41 #include "user-regs.h"
43 #include "gdb_obstack.h"
45 #include "python/python.h"
47 #include "gdb_assert.h"
51 /* This is defined in valops.c */
52 extern int overload_resolution;
54 /* Prototypes for local functions. */
56 static struct value *evaluate_subexp_for_sizeof (struct expression *, int *);
58 static struct value *evaluate_subexp_for_address (struct expression *,
61 static char *get_label (struct expression *, int *);
63 static struct value *evaluate_struct_tuple (struct value *,
64 struct expression *, int *,
67 static LONGEST init_array_element (struct value *, struct value *,
68 struct expression *, int *, enum noside,
72 evaluate_subexp (struct type *expect_type, struct expression *exp,
73 int *pos, enum noside noside)
75 return (*exp->language_defn->la_exp_desc->evaluate_exp)
76 (expect_type, exp, pos, noside);
79 /* Parse the string EXP as a C expression, evaluate it,
80 and return the result as a number. */
83 parse_and_eval_address (char *exp)
85 struct expression *expr = parse_expression (exp);
87 struct cleanup *old_chain =
88 make_cleanup (free_current_contents, &expr);
90 addr = value_as_address (evaluate_expression (expr));
91 do_cleanups (old_chain);
95 /* Like parse_and_eval_address but takes a pointer to a char * variable
96 and advanced that variable across the characters parsed. */
99 parse_and_eval_address_1 (char **expptr)
101 struct expression *expr = parse_exp_1 (expptr, (struct block *) 0, 0);
103 struct cleanup *old_chain =
104 make_cleanup (free_current_contents, &expr);
106 addr = value_as_address (evaluate_expression (expr));
107 do_cleanups (old_chain);
111 /* Like parse_and_eval_address, but treats the value of the expression
112 as an integer, not an address, returns a LONGEST, not a CORE_ADDR */
114 parse_and_eval_long (char *exp)
116 struct expression *expr = parse_expression (exp);
118 struct cleanup *old_chain =
119 make_cleanup (free_current_contents, &expr);
121 retval = value_as_long (evaluate_expression (expr));
122 do_cleanups (old_chain);
127 parse_and_eval (char *exp)
129 struct expression *expr = parse_expression (exp);
131 struct cleanup *old_chain =
132 make_cleanup (free_current_contents, &expr);
134 val = evaluate_expression (expr);
135 do_cleanups (old_chain);
139 /* Parse up to a comma (or to a closeparen)
140 in the string EXPP as an expression, evaluate it, and return the value.
141 EXPP is advanced to point to the comma. */
144 parse_to_comma_and_eval (char **expp)
146 struct expression *expr = parse_exp_1 (expp, (struct block *) 0, 1);
148 struct cleanup *old_chain =
149 make_cleanup (free_current_contents, &expr);
151 val = evaluate_expression (expr);
152 do_cleanups (old_chain);
156 /* Evaluate an expression in internal prefix form
157 such as is constructed by parse.y.
159 See expression.h for info on the format of an expression. */
162 evaluate_expression (struct expression *exp)
165 return evaluate_subexp (NULL_TYPE, exp, &pc, EVAL_NORMAL);
168 /* Evaluate an expression, avoiding all memory references
169 and getting a value whose type alone is correct. */
172 evaluate_type (struct expression *exp)
175 return evaluate_subexp (NULL_TYPE, exp, &pc, EVAL_AVOID_SIDE_EFFECTS);
178 /* Evaluate a subexpression, avoiding all memory references and
179 getting a value whose type alone is correct. */
182 evaluate_subexpression_type (struct expression *exp, int subexp)
184 return evaluate_subexp (NULL_TYPE, exp, &subexp, EVAL_AVOID_SIDE_EFFECTS);
187 /* Extract a field operation from an expression. If the subexpression
188 of EXP starting at *SUBEXP is not a structure dereference
189 operation, return NULL. Otherwise, return the name of the
190 dereferenced field, and advance *SUBEXP to point to the
191 subexpression of the left-hand-side of the dereference. This is
192 used when completing field names. */
195 extract_field_op (struct expression *exp, int *subexp)
199 if (exp->elts[*subexp].opcode != STRUCTOP_STRUCT
200 && exp->elts[*subexp].opcode != STRUCTOP_PTR)
202 tem = longest_to_int (exp->elts[*subexp + 1].longconst);
203 result = &exp->elts[*subexp + 2].string;
204 (*subexp) += 1 + 3 + BYTES_TO_EXP_ELEM (tem + 1);
208 /* If the next expression is an OP_LABELED, skips past it,
209 returning the label. Otherwise, does nothing and returns NULL. */
212 get_label (struct expression *exp, int *pos)
214 if (exp->elts[*pos].opcode == OP_LABELED)
217 char *name = &exp->elts[pc + 2].string;
218 int tem = longest_to_int (exp->elts[pc + 1].longconst);
219 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
226 /* This function evaluates tuples (in (the deleted) Chill) or
227 brace-initializers (in C/C++) for structure types. */
229 static struct value *
230 evaluate_struct_tuple (struct value *struct_val,
231 struct expression *exp,
232 int *pos, enum noside noside, int nargs)
234 struct type *struct_type = check_typedef (value_type (struct_val));
235 struct type *substruct_type = struct_type;
236 struct type *field_type;
243 struct value *val = NULL;
248 /* Skip past the labels, and count them. */
249 while (get_label (exp, pos) != NULL)
254 char *label = get_label (exp, &pc);
257 for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type);
260 char *field_name = TYPE_FIELD_NAME (struct_type, fieldno);
261 if (field_name != NULL && strcmp (field_name, label) == 0)
264 subfieldno = fieldno;
265 substruct_type = struct_type;
269 for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type);
272 char *field_name = TYPE_FIELD_NAME (struct_type, fieldno);
273 field_type = TYPE_FIELD_TYPE (struct_type, fieldno);
274 if ((field_name == 0 || *field_name == '\0')
275 && TYPE_CODE (field_type) == TYPE_CODE_UNION)
278 for (; variantno < TYPE_NFIELDS (field_type);
282 = TYPE_FIELD_TYPE (field_type, variantno);
283 if (TYPE_CODE (substruct_type) == TYPE_CODE_STRUCT)
286 subfieldno < TYPE_NFIELDS (substruct_type);
289 if (strcmp(TYPE_FIELD_NAME (substruct_type,
300 error (_("there is no field named %s"), label);
306 /* Unlabelled tuple element - go to next field. */
310 if (subfieldno >= TYPE_NFIELDS (substruct_type))
313 substruct_type = struct_type;
319 /* Skip static fields. */
320 while (fieldno < TYPE_NFIELDS (struct_type)
321 && field_is_static (&TYPE_FIELD (struct_type,
324 subfieldno = fieldno;
325 if (fieldno >= TYPE_NFIELDS (struct_type))
326 error (_("too many initializers"));
327 field_type = TYPE_FIELD_TYPE (struct_type, fieldno);
328 if (TYPE_CODE (field_type) == TYPE_CODE_UNION
329 && TYPE_FIELD_NAME (struct_type, fieldno)[0] == '0')
330 error (_("don't know which variant you want to set"));
334 /* Here, struct_type is the type of the inner struct,
335 while substruct_type is the type of the inner struct.
336 These are the same for normal structures, but a variant struct
337 contains anonymous union fields that contain substruct fields.
338 The value fieldno is the index of the top-level (normal or
339 anonymous union) field in struct_field, while the value
340 subfieldno is the index of the actual real (named inner) field
341 in substruct_type. */
343 field_type = TYPE_FIELD_TYPE (substruct_type, subfieldno);
345 val = evaluate_subexp (field_type, exp, pos, noside);
347 /* Now actually set the field in struct_val. */
349 /* Assign val to field fieldno. */
350 if (value_type (val) != field_type)
351 val = value_cast (field_type, val);
353 bitsize = TYPE_FIELD_BITSIZE (substruct_type, subfieldno);
354 bitpos = TYPE_FIELD_BITPOS (struct_type, fieldno);
356 bitpos += TYPE_FIELD_BITPOS (substruct_type, subfieldno);
357 addr = value_contents_writeable (struct_val) + bitpos / 8;
359 modify_field (struct_type, addr,
360 value_as_long (val), bitpos % 8, bitsize);
362 memcpy (addr, value_contents (val),
363 TYPE_LENGTH (value_type (val)));
365 while (--nlabels > 0);
370 /* Recursive helper function for setting elements of array tuples for
371 (the deleted) Chill. The target is ARRAY (which has bounds
372 LOW_BOUND to HIGH_BOUND); the element value is ELEMENT; EXP, POS
373 and NOSIDE are as usual. Evaluates index expresions and sets the
374 specified element(s) of ARRAY to ELEMENT. Returns last index
378 init_array_element (struct value *array, struct value *element,
379 struct expression *exp, int *pos,
380 enum noside noside, LONGEST low_bound, LONGEST high_bound)
383 int element_size = TYPE_LENGTH (value_type (element));
384 if (exp->elts[*pos].opcode == BINOP_COMMA)
387 init_array_element (array, element, exp, pos, noside,
388 low_bound, high_bound);
389 return init_array_element (array, element,
390 exp, pos, noside, low_bound, high_bound);
392 else if (exp->elts[*pos].opcode == BINOP_RANGE)
396 low = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
397 high = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
398 if (low < low_bound || high > high_bound)
399 error (_("tuple range index out of range"));
400 for (index = low; index <= high; index++)
402 memcpy (value_contents_raw (array)
403 + (index - low_bound) * element_size,
404 value_contents (element), element_size);
409 index = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
410 if (index < low_bound || index > high_bound)
411 error (_("tuple index out of range"));
412 memcpy (value_contents_raw (array) + (index - low_bound) * element_size,
413 value_contents (element), element_size);
418 static struct value *
419 value_f90_subarray (struct value *array,
420 struct expression *exp, int *pos, enum noside noside)
423 LONGEST low_bound, high_bound;
424 struct type *range = check_typedef (TYPE_INDEX_TYPE (value_type (array)));
425 enum f90_range_type range_type = longest_to_int (exp->elts[pc].longconst);
429 if (range_type == LOW_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT)
430 low_bound = TYPE_LOW_BOUND (range);
432 low_bound = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
434 if (range_type == HIGH_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT)
435 high_bound = TYPE_HIGH_BOUND (range);
437 high_bound = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
439 return value_slice (array, low_bound, high_bound - low_bound + 1);
443 /* Promote value ARG1 as appropriate before performing a unary operation
445 If the result is not appropriate for any particular language then it
446 needs to patch this function. */
449 unop_promote (const struct language_defn *language, struct gdbarch *gdbarch,
454 *arg1 = coerce_ref (*arg1);
455 type1 = check_typedef (value_type (*arg1));
457 if (is_integral_type (type1))
459 switch (language->la_language)
462 /* Perform integral promotion for ANSI C/C++.
463 If not appropropriate for any particular language
464 it needs to modify this function. */
466 struct type *builtin_int = builtin_type (gdbarch)->builtin_int;
467 if (TYPE_LENGTH (type1) < TYPE_LENGTH (builtin_int))
468 *arg1 = value_cast (builtin_int, *arg1);
475 /* Promote values ARG1 and ARG2 as appropriate before performing a binary
476 operation on those two operands.
477 If the result is not appropriate for any particular language then it
478 needs to patch this function. */
481 binop_promote (const struct language_defn *language, struct gdbarch *gdbarch,
482 struct value **arg1, struct value **arg2)
484 struct type *promoted_type = NULL;
488 *arg1 = coerce_ref (*arg1);
489 *arg2 = coerce_ref (*arg2);
491 type1 = check_typedef (value_type (*arg1));
492 type2 = check_typedef (value_type (*arg2));
494 if ((TYPE_CODE (type1) != TYPE_CODE_FLT
495 && TYPE_CODE (type1) != TYPE_CODE_DECFLOAT
496 && !is_integral_type (type1))
497 || (TYPE_CODE (type2) != TYPE_CODE_FLT
498 && TYPE_CODE (type2) != TYPE_CODE_DECFLOAT
499 && !is_integral_type (type2)))
502 if (TYPE_CODE (type1) == TYPE_CODE_DECFLOAT
503 || TYPE_CODE (type2) == TYPE_CODE_DECFLOAT)
505 /* No promotion required. */
507 else if (TYPE_CODE (type1) == TYPE_CODE_FLT
508 || TYPE_CODE (type2) == TYPE_CODE_FLT)
510 switch (language->la_language)
516 /* No promotion required. */
520 /* For other languages the result type is unchanged from gdb
521 version 6.7 for backward compatibility.
522 If either arg was long double, make sure that value is also long
523 double. Otherwise use double. */
524 if (TYPE_LENGTH (type1) * 8 > gdbarch_double_bit (gdbarch)
525 || TYPE_LENGTH (type2) * 8 > gdbarch_double_bit (gdbarch))
526 promoted_type = builtin_type (gdbarch)->builtin_long_double;
528 promoted_type = builtin_type (gdbarch)->builtin_double;
532 else if (TYPE_CODE (type1) == TYPE_CODE_BOOL
533 && TYPE_CODE (type2) == TYPE_CODE_BOOL)
535 /* No promotion required. */
538 /* Integral operations here. */
539 /* FIXME: Also mixed integral/booleans, with result an integer. */
541 const struct builtin_type *builtin = builtin_type (gdbarch);
542 unsigned int promoted_len1 = TYPE_LENGTH (type1);
543 unsigned int promoted_len2 = TYPE_LENGTH (type2);
544 int is_unsigned1 = TYPE_UNSIGNED (type1);
545 int is_unsigned2 = TYPE_UNSIGNED (type2);
546 unsigned int result_len;
547 int unsigned_operation;
549 /* Determine type length and signedness after promotion for
551 if (promoted_len1 < TYPE_LENGTH (builtin->builtin_int))
554 promoted_len1 = TYPE_LENGTH (builtin->builtin_int);
556 if (promoted_len2 < TYPE_LENGTH (builtin->builtin_int))
559 promoted_len2 = TYPE_LENGTH (builtin->builtin_int);
562 if (promoted_len1 > promoted_len2)
564 unsigned_operation = is_unsigned1;
565 result_len = promoted_len1;
567 else if (promoted_len2 > promoted_len1)
569 unsigned_operation = is_unsigned2;
570 result_len = promoted_len2;
574 unsigned_operation = is_unsigned1 || is_unsigned2;
575 result_len = promoted_len1;
578 switch (language->la_language)
584 if (result_len <= TYPE_LENGTH (builtin->builtin_int))
586 promoted_type = (unsigned_operation
587 ? builtin->builtin_unsigned_int
588 : builtin->builtin_int);
590 else if (result_len <= TYPE_LENGTH (builtin->builtin_long))
592 promoted_type = (unsigned_operation
593 ? builtin->builtin_unsigned_long
594 : builtin->builtin_long);
598 promoted_type = (unsigned_operation
599 ? builtin->builtin_unsigned_long_long
600 : builtin->builtin_long_long);
605 /* For other languages the result type is unchanged from gdb
606 version 6.7 for backward compatibility.
607 If either arg was long long, make sure that value is also long
608 long. Otherwise use long. */
609 if (unsigned_operation)
611 if (result_len > gdbarch_long_bit (gdbarch) / HOST_CHAR_BIT)
612 promoted_type = builtin->builtin_unsigned_long_long;
614 promoted_type = builtin->builtin_unsigned_long;
618 if (result_len > gdbarch_long_bit (gdbarch) / HOST_CHAR_BIT)
619 promoted_type = builtin->builtin_long_long;
621 promoted_type = builtin->builtin_long;
629 /* Promote both operands to common type. */
630 *arg1 = value_cast (promoted_type, *arg1);
631 *arg2 = value_cast (promoted_type, *arg2);
636 ptrmath_type_p (struct type *type)
638 type = check_typedef (type);
639 if (TYPE_CODE (type) == TYPE_CODE_REF)
640 type = TYPE_TARGET_TYPE (type);
642 switch (TYPE_CODE (type))
648 case TYPE_CODE_ARRAY:
649 return current_language->c_style_arrays;
656 /* Constructs a fake method with the given parameter types.
657 This function is used by the parser to construct an "expected"
658 type for method overload resolution. */
661 make_params (int num_types, struct type **param_types)
663 struct type *type = XZALLOC (struct type);
664 TYPE_MAIN_TYPE (type) = XZALLOC (struct main_type);
665 TYPE_LENGTH (type) = 1;
666 TYPE_CODE (type) = TYPE_CODE_METHOD;
667 TYPE_VPTR_FIELDNO (type) = -1;
668 TYPE_CHAIN (type) = type;
669 TYPE_NFIELDS (type) = num_types;
670 TYPE_FIELDS (type) = (struct field *)
671 TYPE_ZALLOC (type, sizeof (struct field) * num_types);
673 while (num_types-- > 0)
674 TYPE_FIELD_TYPE (type, num_types) = param_types[num_types];
680 evaluate_subexp_standard (struct type *expect_type,
681 struct expression *exp, int *pos,
686 int pc, pc2 = 0, oldpos;
687 struct value *arg1 = NULL;
688 struct value *arg2 = NULL;
692 struct value **argvec;
693 int upper, lower, retcode;
697 struct type **arg_types;
699 struct symbol *function = NULL;
700 char *function_name = NULL;
703 op = exp->elts[pc].opcode;
708 tem = longest_to_int (exp->elts[pc + 2].longconst);
709 (*pos) += 4 + BYTES_TO_EXP_ELEM (tem + 1);
710 if (noside == EVAL_SKIP)
712 arg1 = value_aggregate_elt (exp->elts[pc + 1].type,
713 &exp->elts[pc + 3].string,
714 expect_type, 0, noside);
716 error (_("There is no field named %s"), &exp->elts[pc + 3].string);
721 return value_from_longest (exp->elts[pc + 1].type,
722 exp->elts[pc + 2].longconst);
726 return value_from_double (exp->elts[pc + 1].type,
727 exp->elts[pc + 2].doubleconst);
731 return value_from_decfloat (exp->elts[pc + 1].type,
732 exp->elts[pc + 2].decfloatconst);
736 if (noside == EVAL_SKIP)
739 /* JYG: We used to just return value_zero of the symbol type
740 if we're asked to avoid side effects. Otherwise we return
741 value_of_variable (...). However I'm not sure if
742 value_of_variable () has any side effect.
743 We need a full value object returned here for whatis_exp ()
744 to call evaluate_type () and then pass the full value to
745 value_rtti_target_type () if we are dealing with a pointer
746 or reference to a base class and print object is on. */
749 volatile struct gdb_exception except;
750 struct value *ret = NULL;
752 TRY_CATCH (except, RETURN_MASK_ERROR)
754 ret = value_of_variable (exp->elts[pc + 2].symbol,
755 exp->elts[pc + 1].block);
758 if (except.reason < 0)
760 if (noside == EVAL_AVOID_SIDE_EFFECTS)
761 ret = value_zero (SYMBOL_TYPE (exp->elts[pc + 2].symbol), not_lval);
763 throw_exception (except);
772 access_value_history (longest_to_int (exp->elts[pc + 1].longconst));
776 const char *name = &exp->elts[pc + 2].string;
780 (*pos) += 3 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
781 regno = user_reg_map_name_to_regnum (exp->gdbarch,
782 name, strlen (name));
784 error (_("Register $%s not available."), name);
786 /* In EVAL_AVOID_SIDE_EFFECTS mode, we only need to return
787 a value with the appropriate register type. Unfortunately,
788 we don't have easy access to the type of user registers.
789 So for these registers, we fetch the register value regardless
790 of the evaluation mode. */
791 if (noside == EVAL_AVOID_SIDE_EFFECTS
792 && regno < gdbarch_num_regs (exp->gdbarch)
793 + gdbarch_num_pseudo_regs (exp->gdbarch))
794 val = value_zero (register_type (exp->gdbarch, regno), not_lval);
796 val = value_of_register (regno, get_selected_frame (NULL));
798 error (_("Value of register %s not available."), name);
804 type = language_bool_type (exp->language_defn, exp->gdbarch);
805 return value_from_longest (type, exp->elts[pc + 1].longconst);
809 return value_of_internalvar (exp->gdbarch,
810 exp->elts[pc + 1].internalvar);
813 tem = longest_to_int (exp->elts[pc + 1].longconst);
814 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
815 if (noside == EVAL_SKIP)
817 type = language_string_char_type (exp->language_defn, exp->gdbarch);
818 return value_string (&exp->elts[pc + 2].string, tem, type);
820 case OP_OBJC_NSSTRING: /* Objective C Foundation Class NSString constant. */
821 tem = longest_to_int (exp->elts[pc + 1].longconst);
822 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
823 if (noside == EVAL_SKIP)
827 return value_nsstring (exp->gdbarch, &exp->elts[pc + 2].string, tem + 1);
830 tem = longest_to_int (exp->elts[pc + 1].longconst);
832 += 3 + BYTES_TO_EXP_ELEM ((tem + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT);
833 if (noside == EVAL_SKIP)
835 return value_bitstring (&exp->elts[pc + 2].string, tem,
836 builtin_type (exp->gdbarch)->builtin_int);
841 tem2 = longest_to_int (exp->elts[pc + 1].longconst);
842 tem3 = longest_to_int (exp->elts[pc + 2].longconst);
843 nargs = tem3 - tem2 + 1;
844 type = expect_type ? check_typedef (expect_type) : NULL_TYPE;
846 if (expect_type != NULL_TYPE && noside != EVAL_SKIP
847 && TYPE_CODE (type) == TYPE_CODE_STRUCT)
849 struct value *rec = allocate_value (expect_type);
850 memset (value_contents_raw (rec), '\0', TYPE_LENGTH (type));
851 return evaluate_struct_tuple (rec, exp, pos, noside, nargs);
854 if (expect_type != NULL_TYPE && noside != EVAL_SKIP
855 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
857 struct type *range_type = TYPE_INDEX_TYPE (type);
858 struct type *element_type = TYPE_TARGET_TYPE (type);
859 struct value *array = allocate_value (expect_type);
860 int element_size = TYPE_LENGTH (check_typedef (element_type));
861 LONGEST low_bound, high_bound, index;
862 if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
865 high_bound = (TYPE_LENGTH (type) / element_size) - 1;
868 memset (value_contents_raw (array), 0, TYPE_LENGTH (expect_type));
869 for (tem = nargs; --nargs >= 0;)
871 struct value *element;
873 if (exp->elts[*pos].opcode == BINOP_RANGE)
876 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
878 element = evaluate_subexp (element_type, exp, pos, noside);
879 if (value_type (element) != element_type)
880 element = value_cast (element_type, element);
883 int continue_pc = *pos;
885 index = init_array_element (array, element, exp, pos, noside,
886 low_bound, high_bound);
891 if (index > high_bound)
892 /* to avoid memory corruption */
893 error (_("Too many array elements"));
894 memcpy (value_contents_raw (array)
895 + (index - low_bound) * element_size,
896 value_contents (element),
904 if (expect_type != NULL_TYPE && noside != EVAL_SKIP
905 && TYPE_CODE (type) == TYPE_CODE_SET)
907 struct value *set = allocate_value (expect_type);
908 gdb_byte *valaddr = value_contents_raw (set);
909 struct type *element_type = TYPE_INDEX_TYPE (type);
910 struct type *check_type = element_type;
911 LONGEST low_bound, high_bound;
913 /* get targettype of elementtype */
914 while (TYPE_CODE (check_type) == TYPE_CODE_RANGE
915 || TYPE_CODE (check_type) == TYPE_CODE_TYPEDEF)
916 check_type = TYPE_TARGET_TYPE (check_type);
918 if (get_discrete_bounds (element_type, &low_bound, &high_bound) < 0)
919 error (_("(power)set type with unknown size"));
920 memset (valaddr, '\0', TYPE_LENGTH (type));
921 for (tem = 0; tem < nargs; tem++)
923 LONGEST range_low, range_high;
924 struct type *range_low_type, *range_high_type;
925 struct value *elem_val;
926 if (exp->elts[*pos].opcode == BINOP_RANGE)
929 elem_val = evaluate_subexp (element_type, exp, pos, noside);
930 range_low_type = value_type (elem_val);
931 range_low = value_as_long (elem_val);
932 elem_val = evaluate_subexp (element_type, exp, pos, noside);
933 range_high_type = value_type (elem_val);
934 range_high = value_as_long (elem_val);
938 elem_val = evaluate_subexp (element_type, exp, pos, noside);
939 range_low_type = range_high_type = value_type (elem_val);
940 range_low = range_high = value_as_long (elem_val);
942 /* check types of elements to avoid mixture of elements from
943 different types. Also check if type of element is "compatible"
944 with element type of powerset */
945 if (TYPE_CODE (range_low_type) == TYPE_CODE_RANGE)
946 range_low_type = TYPE_TARGET_TYPE (range_low_type);
947 if (TYPE_CODE (range_high_type) == TYPE_CODE_RANGE)
948 range_high_type = TYPE_TARGET_TYPE (range_high_type);
949 if ((TYPE_CODE (range_low_type) != TYPE_CODE (range_high_type))
950 || (TYPE_CODE (range_low_type) == TYPE_CODE_ENUM
951 && (range_low_type != range_high_type)))
952 /* different element modes */
953 error (_("POWERSET tuple elements of different mode"));
954 if ((TYPE_CODE (check_type) != TYPE_CODE (range_low_type))
955 || (TYPE_CODE (check_type) == TYPE_CODE_ENUM
956 && range_low_type != check_type))
957 error (_("incompatible POWERSET tuple elements"));
958 if (range_low > range_high)
960 warning (_("empty POWERSET tuple range"));
963 if (range_low < low_bound || range_high > high_bound)
964 error (_("POWERSET tuple element out of range"));
965 range_low -= low_bound;
966 range_high -= low_bound;
967 for (; range_low <= range_high; range_low++)
969 int bit_index = (unsigned) range_low % TARGET_CHAR_BIT;
970 if (gdbarch_bits_big_endian (exp->gdbarch))
971 bit_index = TARGET_CHAR_BIT - 1 - bit_index;
972 valaddr[(unsigned) range_low / TARGET_CHAR_BIT]
979 argvec = (struct value **) alloca (sizeof (struct value *) * nargs);
980 for (tem = 0; tem < nargs; tem++)
982 /* Ensure that array expressions are coerced into pointer objects. */
983 argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
985 if (noside == EVAL_SKIP)
987 return value_array (tem2, tem3, argvec);
991 struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
993 = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
995 = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
996 if (noside == EVAL_SKIP)
998 return value_slice (array, lowbound, upper - lowbound + 1);
1001 case TERNOP_SLICE_COUNT:
1003 struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1005 = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
1007 = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
1008 return value_slice (array, lowbound, length);
1012 /* Skip third and second args to evaluate the first one. */
1013 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1014 if (value_logical_not (arg1))
1016 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
1017 return evaluate_subexp (NULL_TYPE, exp, pos, noside);
1021 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1022 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
1026 case OP_OBJC_SELECTOR:
1027 { /* Objective C @selector operator. */
1028 char *sel = &exp->elts[pc + 2].string;
1029 int len = longest_to_int (exp->elts[pc + 1].longconst);
1030 struct type *selector_type;
1032 (*pos) += 3 + BYTES_TO_EXP_ELEM (len + 1);
1033 if (noside == EVAL_SKIP)
1037 sel[len] = 0; /* Make sure it's terminated. */
1039 selector_type = builtin_type (exp->gdbarch)->builtin_data_ptr;
1040 return value_from_longest (selector_type,
1041 lookup_child_selector (exp->gdbarch, sel));
1044 case OP_OBJC_MSGCALL:
1045 { /* Objective C message (method) call. */
1047 CORE_ADDR responds_selector = 0;
1048 CORE_ADDR method_selector = 0;
1050 CORE_ADDR selector = 0;
1052 int struct_return = 0;
1053 int sub_no_side = 0;
1055 struct value *msg_send = NULL;
1056 struct value *msg_send_stret = NULL;
1057 int gnu_runtime = 0;
1059 struct value *target = NULL;
1060 struct value *method = NULL;
1061 struct value *called_method = NULL;
1063 struct type *selector_type = NULL;
1064 struct type *long_type;
1066 struct value *ret = NULL;
1069 selector = exp->elts[pc + 1].longconst;
1070 nargs = exp->elts[pc + 2].longconst;
1071 argvec = (struct value **) alloca (sizeof (struct value *)
1076 long_type = builtin_type (exp->gdbarch)->builtin_long;
1077 selector_type = builtin_type (exp->gdbarch)->builtin_data_ptr;
1079 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1080 sub_no_side = EVAL_NORMAL;
1082 sub_no_side = noside;
1084 target = evaluate_subexp (selector_type, exp, pos, sub_no_side);
1086 if (value_as_long (target) == 0)
1087 return value_from_longest (long_type, 0);
1089 if (lookup_minimal_symbol ("objc_msg_lookup", 0, 0))
1092 /* Find the method dispatch (Apple runtime) or method lookup
1093 (GNU runtime) function for Objective-C. These will be used
1094 to lookup the symbol information for the method. If we
1095 can't find any symbol information, then we'll use these to
1096 call the method, otherwise we can call the method
1097 directly. The msg_send_stret function is used in the special
1098 case of a method that returns a structure (Apple runtime
1102 struct type *type = selector_type;
1103 type = lookup_function_type (type);
1104 type = lookup_pointer_type (type);
1105 type = lookup_function_type (type);
1106 type = lookup_pointer_type (type);
1108 msg_send = find_function_in_inferior ("objc_msg_lookup", NULL);
1110 = find_function_in_inferior ("objc_msg_lookup", NULL);
1112 msg_send = value_from_pointer (type, value_as_address (msg_send));
1113 msg_send_stret = value_from_pointer (type,
1114 value_as_address (msg_send_stret));
1118 msg_send = find_function_in_inferior ("objc_msgSend", NULL);
1119 /* Special dispatcher for methods returning structs */
1121 = find_function_in_inferior ("objc_msgSend_stret", NULL);
1124 /* Verify the target object responds to this method. The
1125 standard top-level 'Object' class uses a different name for
1126 the verification method than the non-standard, but more
1127 often used, 'NSObject' class. Make sure we check for both. */
1130 = lookup_child_selector (exp->gdbarch, "respondsToSelector:");
1131 if (responds_selector == 0)
1133 = lookup_child_selector (exp->gdbarch, "respondsTo:");
1135 if (responds_selector == 0)
1136 error (_("no 'respondsTo:' or 'respondsToSelector:' method"));
1139 = lookup_child_selector (exp->gdbarch, "methodForSelector:");
1140 if (method_selector == 0)
1142 = lookup_child_selector (exp->gdbarch, "methodFor:");
1144 if (method_selector == 0)
1145 error (_("no 'methodFor:' or 'methodForSelector:' method"));
1147 /* Call the verification method, to make sure that the target
1148 class implements the desired method. */
1150 argvec[0] = msg_send;
1152 argvec[2] = value_from_longest (long_type, responds_selector);
1153 argvec[3] = value_from_longest (long_type, selector);
1156 ret = call_function_by_hand (argvec[0], 3, argvec + 1);
1159 /* Function objc_msg_lookup returns a pointer. */
1161 ret = call_function_by_hand (argvec[0], 3, argvec + 1);
1163 if (value_as_long (ret) == 0)
1164 error (_("Target does not respond to this message selector."));
1166 /* Call "methodForSelector:" method, to get the address of a
1167 function method that implements this selector for this
1168 class. If we can find a symbol at that address, then we
1169 know the return type, parameter types etc. (that's a good
1172 argvec[0] = msg_send;
1174 argvec[2] = value_from_longest (long_type, method_selector);
1175 argvec[3] = value_from_longest (long_type, selector);
1178 ret = call_function_by_hand (argvec[0], 3, argvec + 1);
1182 ret = call_function_by_hand (argvec[0], 3, argvec + 1);
1185 /* ret should now be the selector. */
1187 addr = value_as_long (ret);
1190 struct symbol *sym = NULL;
1192 /* The address might point to a function descriptor;
1193 resolve it to the actual code address instead. */
1194 addr = gdbarch_convert_from_func_ptr_addr (exp->gdbarch, addr,
1197 /* Is it a high_level symbol? */
1198 sym = find_pc_function (addr);
1200 method = value_of_variable (sym, 0);
1203 /* If we found a method with symbol information, check to see
1204 if it returns a struct. Otherwise assume it doesn't. */
1210 struct type *val_type;
1212 funaddr = find_function_addr (method, &val_type);
1214 b = block_for_pc (funaddr);
1216 CHECK_TYPEDEF (val_type);
1218 if ((val_type == NULL)
1219 || (TYPE_CODE(val_type) == TYPE_CODE_ERROR))
1221 if (expect_type != NULL)
1222 val_type = expect_type;
1225 struct_return = using_struct_return (exp->gdbarch,
1226 value_type (method), val_type);
1228 else if (expect_type != NULL)
1230 struct_return = using_struct_return (exp->gdbarch, NULL,
1231 check_typedef (expect_type));
1234 /* Found a function symbol. Now we will substitute its
1235 value in place of the message dispatcher (obj_msgSend),
1236 so that we call the method directly instead of thru
1237 the dispatcher. The main reason for doing this is that
1238 we can now evaluate the return value and parameter values
1239 according to their known data types, in case we need to
1240 do things like promotion, dereferencing, special handling
1241 of structs and doubles, etc.
1243 We want to use the type signature of 'method', but still
1244 jump to objc_msgSend() or objc_msgSend_stret() to better
1245 mimic the behavior of the runtime. */
1249 if (TYPE_CODE (value_type (method)) != TYPE_CODE_FUNC)
1250 error (_("method address has symbol information with non-function type; skipping"));
1252 /* Create a function pointer of the appropriate type, and replace
1253 its value with the value of msg_send or msg_send_stret. We must
1254 use a pointer here, as msg_send and msg_send_stret are of pointer
1255 type, and the representation may be different on systems that use
1256 function descriptors. */
1259 = value_from_pointer (lookup_pointer_type (value_type (method)),
1260 value_as_address (msg_send_stret));
1263 = value_from_pointer (lookup_pointer_type (value_type (method)),
1264 value_as_address (msg_send));
1269 called_method = msg_send_stret;
1271 called_method = msg_send;
1274 if (noside == EVAL_SKIP)
1277 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1279 /* If the return type doesn't look like a function type,
1280 call an error. This can happen if somebody tries to
1281 turn a variable into a function call. This is here
1282 because people often want to call, eg, strcmp, which
1283 gdb doesn't know is a function. If gdb isn't asked for
1284 it's opinion (ie. through "whatis"), it won't offer
1287 struct type *type = value_type (called_method);
1288 if (type && TYPE_CODE (type) == TYPE_CODE_PTR)
1289 type = TYPE_TARGET_TYPE (type);
1290 type = TYPE_TARGET_TYPE (type);
1294 if ((TYPE_CODE (type) == TYPE_CODE_ERROR) && expect_type)
1295 return allocate_value (expect_type);
1297 return allocate_value (type);
1300 error (_("Expression of type other than \"method returning ...\" used as a method"));
1303 /* Now depending on whether we found a symbol for the method,
1304 we will either call the runtime dispatcher or the method
1307 argvec[0] = called_method;
1309 argvec[2] = value_from_longest (long_type, selector);
1310 /* User-supplied arguments. */
1311 for (tem = 0; tem < nargs; tem++)
1312 argvec[tem + 3] = evaluate_subexp_with_coercion (exp, pos, noside);
1313 argvec[tem + 3] = 0;
1315 if (gnu_runtime && (method != NULL))
1317 /* Function objc_msg_lookup returns a pointer. */
1318 deprecated_set_value_type (argvec[0],
1319 lookup_pointer_type (lookup_function_type (value_type (argvec[0]))));
1320 argvec[0] = call_function_by_hand (argvec[0], nargs + 2, argvec + 1);
1323 ret = call_function_by_hand (argvec[0], nargs + 2, argvec + 1);
1330 op = exp->elts[*pos].opcode;
1331 nargs = longest_to_int (exp->elts[pc + 1].longconst);
1332 /* Allocate arg vector, including space for the function to be
1333 called in argvec[0] and a terminating NULL */
1334 argvec = (struct value **) alloca (sizeof (struct value *) * (nargs + 3));
1335 if (op == STRUCTOP_MEMBER || op == STRUCTOP_MPTR)
1338 /* First, evaluate the structure into arg2 */
1341 if (noside == EVAL_SKIP)
1344 if (op == STRUCTOP_MEMBER)
1346 arg2 = evaluate_subexp_for_address (exp, pos, noside);
1350 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1353 /* If the function is a virtual function, then the
1354 aggregate value (providing the structure) plays
1355 its part by providing the vtable. Otherwise,
1356 it is just along for the ride: call the function
1359 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1361 if (TYPE_CODE (check_typedef (value_type (arg1)))
1362 != TYPE_CODE_METHODPTR)
1363 error (_("Non-pointer-to-member value used in pointer-to-member "
1366 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1368 struct type *method_type = check_typedef (value_type (arg1));
1369 arg1 = value_zero (method_type, not_lval);
1372 arg1 = cplus_method_ptr_to_value (&arg2, arg1);
1374 /* Now, say which argument to start evaluating from */
1377 else if (op == STRUCTOP_STRUCT || op == STRUCTOP_PTR)
1379 /* Hair for method invocations */
1383 /* First, evaluate the structure into arg2 */
1385 tem2 = longest_to_int (exp->elts[pc2 + 1].longconst);
1386 *pos += 3 + BYTES_TO_EXP_ELEM (tem2 + 1);
1387 if (noside == EVAL_SKIP)
1390 if (op == STRUCTOP_STRUCT)
1392 /* If v is a variable in a register, and the user types
1393 v.method (), this will produce an error, because v has
1396 A possible way around this would be to allocate a
1397 copy of the variable on the stack, copy in the
1398 contents, call the function, and copy out the
1399 contents. I.e. convert this from call by reference
1400 to call by copy-return (or whatever it's called).
1401 However, this does not work because it is not the
1402 same: the method being called could stash a copy of
1403 the address, and then future uses through that address
1404 (after the method returns) would be expected to
1405 use the variable itself, not some copy of it. */
1406 arg2 = evaluate_subexp_for_address (exp, pos, noside);
1410 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1412 /* Now, say which argument to start evaluating from */
1415 else if (op == OP_SCOPE
1416 && overload_resolution
1417 && (exp->language_defn->la_language == language_cplus))
1419 /* Unpack it locally so we can properly handle overload
1421 struct type *qual_type;
1426 local_tem = longest_to_int (exp->elts[pc2 + 2].longconst);
1427 (*pos) += 4 + BYTES_TO_EXP_ELEM (local_tem + 1);
1428 type = exp->elts[pc2 + 1].type;
1429 name = &exp->elts[pc2 + 3].string;
1432 function_name = NULL;
1433 if (TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
1435 function = cp_lookup_symbol_namespace (TYPE_TAG_NAME (type),
1437 get_selected_block (0),
1439 if (function == NULL)
1440 error (_("No symbol \"%s\" in namespace \"%s\"."),
1441 name, TYPE_TAG_NAME (type));
1447 gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
1448 || TYPE_CODE (type) == TYPE_CODE_UNION);
1449 function_name = name;
1451 arg2 = value_zero (type, lval_memory);
1458 /* Non-method function call */
1460 argvec[0] = evaluate_subexp_with_coercion (exp, pos, noside);
1462 type = value_type (argvec[0]);
1463 if (type && TYPE_CODE (type) == TYPE_CODE_PTR)
1464 type = TYPE_TARGET_TYPE (type);
1465 if (type && TYPE_CODE (type) == TYPE_CODE_FUNC)
1467 for (; tem <= nargs && tem <= TYPE_NFIELDS (type); tem++)
1469 /* pai: FIXME This seems to be coercing arguments before
1470 * overload resolution has been done! */
1471 argvec[tem] = evaluate_subexp (TYPE_FIELD_TYPE (type, tem - 1),
1477 /* Evaluate arguments */
1478 for (; tem <= nargs; tem++)
1480 /* Ensure that array expressions are coerced into pointer objects. */
1481 argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
1484 /* signal end of arglist */
1487 if (op == STRUCTOP_STRUCT || op == STRUCTOP_PTR
1488 || (op == OP_SCOPE && function_name != NULL))
1490 int static_memfuncp;
1493 /* Method invocation : stuff "this" as first parameter */
1498 /* Name of method from expression */
1499 tstr = &exp->elts[pc2 + 2].string;
1502 tstr = function_name;
1504 if (overload_resolution && (exp->language_defn->la_language == language_cplus))
1506 /* Language is C++, do some overload resolution before evaluation */
1507 struct value *valp = NULL;
1509 /* Prepare list of argument types for overload resolution */
1510 arg_types = (struct type **) alloca (nargs * (sizeof (struct type *)));
1511 for (ix = 1; ix <= nargs; ix++)
1512 arg_types[ix - 1] = value_type (argvec[ix]);
1514 (void) find_overload_match (arg_types, nargs, tstr,
1515 1 /* method */ , 0 /* strict match */ ,
1516 &arg2 /* the object */ , NULL,
1517 &valp, NULL, &static_memfuncp);
1519 if (op == OP_SCOPE && !static_memfuncp)
1521 /* For the time being, we don't handle this. */
1522 error (_("Call to overloaded function %s requires "
1526 argvec[1] = arg2; /* the ``this'' pointer */
1527 argvec[0] = valp; /* use the method found after overload resolution */
1530 /* Non-C++ case -- or no overload resolution */
1532 struct value *temp = arg2;
1533 argvec[0] = value_struct_elt (&temp, argvec + 1, tstr,
1535 op == STRUCTOP_STRUCT
1536 ? "structure" : "structure pointer");
1537 /* value_struct_elt updates temp with the correct value
1538 of the ``this'' pointer if necessary, so modify argvec[1] to
1539 reflect any ``this'' changes. */
1540 arg2 = value_from_longest (lookup_pointer_type(value_type (temp)),
1541 value_address (temp)
1542 + value_embedded_offset (temp));
1543 argvec[1] = arg2; /* the ``this'' pointer */
1546 if (static_memfuncp)
1548 argvec[1] = argvec[0];
1553 else if (op == STRUCTOP_MEMBER || op == STRUCTOP_MPTR)
1558 else if (op == OP_VAR_VALUE || (op == OP_SCOPE && function != NULL))
1560 /* Non-member function being called */
1561 /* fn: This can only be done for C++ functions. A C-style function
1562 in a C++ program, for instance, does not have the fields that
1563 are expected here */
1565 if (overload_resolution && (exp->language_defn->la_language == language_cplus))
1567 /* Language is C++, do some overload resolution before evaluation */
1568 struct symbol *symp;
1570 if (op == OP_VAR_VALUE)
1571 function = exp->elts[save_pos1+2].symbol;
1573 /* Prepare list of argument types for overload resolution */
1574 arg_types = (struct type **) alloca (nargs * (sizeof (struct type *)));
1575 for (ix = 1; ix <= nargs; ix++)
1576 arg_types[ix - 1] = value_type (argvec[ix]);
1578 (void) find_overload_match (arg_types, nargs, NULL /* no need for name */ ,
1579 0 /* not method */ , 0 /* strict match */ ,
1580 NULL, function /* the function */ ,
1583 if (op == OP_VAR_VALUE)
1585 /* Now fix the expression being evaluated */
1586 exp->elts[save_pos1+2].symbol = symp;
1587 argvec[0] = evaluate_subexp_with_coercion (exp, &save_pos1,
1591 argvec[0] = value_of_variable (symp, get_selected_block (0));
1595 /* Not C++, or no overload resolution allowed */
1596 /* nothing to be done; argvec already correctly set up */
1601 /* It is probably a C-style function */
1602 /* nothing to be done; argvec already correctly set up */
1607 if (noside == EVAL_SKIP)
1609 if (argvec[0] == NULL)
1610 error (_("Cannot evaluate function -- may be inlined"));
1611 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1613 /* If the return type doesn't look like a function type, call an
1614 error. This can happen if somebody tries to turn a variable into
1615 a function call. This is here because people often want to
1616 call, eg, strcmp, which gdb doesn't know is a function. If
1617 gdb isn't asked for it's opinion (ie. through "whatis"),
1618 it won't offer it. */
1620 struct type *ftype = value_type (argvec[0]);
1622 if (TYPE_CODE (ftype) == TYPE_CODE_INTERNAL_FUNCTION)
1624 /* We don't know anything about what the internal
1625 function might return, but we have to return
1627 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
1630 else if (TYPE_TARGET_TYPE (ftype))
1631 return allocate_value (TYPE_TARGET_TYPE (ftype));
1633 error (_("Expression of type other than \"Function returning ...\" used as function"));
1635 if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_INTERNAL_FUNCTION)
1636 return call_internal_function (exp->gdbarch, exp->language_defn,
1637 argvec[0], nargs, argvec + 1);
1639 return call_function_by_hand (argvec[0], nargs, argvec + 1);
1640 /* pai: FIXME save value from call_function_by_hand, then adjust pc by adjust_fn_pc if +ve */
1642 case OP_F77_UNDETERMINED_ARGLIST:
1644 /* Remember that in F77, functions, substring ops and
1645 array subscript operations cannot be disambiguated
1646 at parse time. We have made all array subscript operations,
1647 substring operations as well as function calls come here
1648 and we now have to discover what the heck this thing actually was.
1649 If it is a function, we process just as if we got an OP_FUNCALL. */
1651 nargs = longest_to_int (exp->elts[pc + 1].longconst);
1654 /* First determine the type code we are dealing with. */
1655 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1656 type = check_typedef (value_type (arg1));
1657 code = TYPE_CODE (type);
1659 if (code == TYPE_CODE_PTR)
1661 /* Fortran always passes variable to subroutines as pointer.
1662 So we need to look into its target type to see if it is
1663 array, string or function. If it is, we need to switch
1664 to the target value the original one points to. */
1665 struct type *target_type = check_typedef (TYPE_TARGET_TYPE (type));
1667 if (TYPE_CODE (target_type) == TYPE_CODE_ARRAY
1668 || TYPE_CODE (target_type) == TYPE_CODE_STRING
1669 || TYPE_CODE (target_type) == TYPE_CODE_FUNC)
1671 arg1 = value_ind (arg1);
1672 type = check_typedef (value_type (arg1));
1673 code = TYPE_CODE (type);
1679 case TYPE_CODE_ARRAY:
1680 if (exp->elts[*pos].opcode == OP_F90_RANGE)
1681 return value_f90_subarray (arg1, exp, pos, noside);
1683 goto multi_f77_subscript;
1685 case TYPE_CODE_STRING:
1686 if (exp->elts[*pos].opcode == OP_F90_RANGE)
1687 return value_f90_subarray (arg1, exp, pos, noside);
1690 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
1691 return value_subscript (arg1, value_as_long (arg2));
1695 case TYPE_CODE_FUNC:
1696 /* It's a function call. */
1697 /* Allocate arg vector, including space for the function to be
1698 called in argvec[0] and a terminating NULL */
1699 argvec = (struct value **) alloca (sizeof (struct value *) * (nargs + 2));
1702 for (; tem <= nargs; tem++)
1703 argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
1704 argvec[tem] = 0; /* signal end of arglist */
1708 error (_("Cannot perform substring on this type"));
1712 /* We have a complex number, There should be 2 floating
1713 point numbers that compose it */
1715 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1716 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1718 return value_literal_complex (arg1, arg2, exp->elts[pc + 1].type);
1720 case STRUCTOP_STRUCT:
1721 tem = longest_to_int (exp->elts[pc + 1].longconst);
1722 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
1723 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1724 if (noside == EVAL_SKIP)
1726 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1727 return value_zero (lookup_struct_elt_type (value_type (arg1),
1728 &exp->elts[pc + 2].string,
1733 struct value *temp = arg1;
1734 return value_struct_elt (&temp, NULL, &exp->elts[pc + 2].string,
1739 tem = longest_to_int (exp->elts[pc + 1].longconst);
1740 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
1741 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1742 if (noside == EVAL_SKIP)
1745 /* JYG: if print object is on we need to replace the base type
1746 with rtti type in order to continue on with successful
1747 lookup of member / method only available in the rtti type. */
1749 struct type *type = value_type (arg1);
1750 struct type *real_type;
1751 int full, top, using_enc;
1752 struct value_print_options opts;
1754 get_user_print_options (&opts);
1755 if (opts.objectprint && TYPE_TARGET_TYPE(type)
1756 && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_CLASS))
1758 real_type = value_rtti_target_type (arg1, &full, &top, &using_enc);
1761 if (TYPE_CODE (type) == TYPE_CODE_PTR)
1762 real_type = lookup_pointer_type (real_type);
1764 real_type = lookup_reference_type (real_type);
1766 arg1 = value_cast (real_type, arg1);
1771 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1772 return value_zero (lookup_struct_elt_type (value_type (arg1),
1773 &exp->elts[pc + 2].string,
1778 struct value *temp = arg1;
1779 return value_struct_elt (&temp, NULL, &exp->elts[pc + 2].string,
1780 NULL, "structure pointer");
1783 case STRUCTOP_MEMBER:
1785 if (op == STRUCTOP_MEMBER)
1786 arg1 = evaluate_subexp_for_address (exp, pos, noside);
1788 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1790 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1792 if (noside == EVAL_SKIP)
1795 type = check_typedef (value_type (arg2));
1796 switch (TYPE_CODE (type))
1798 case TYPE_CODE_METHODPTR:
1799 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1800 return value_zero (TYPE_TARGET_TYPE (type), not_lval);
1803 arg2 = cplus_method_ptr_to_value (&arg1, arg2);
1804 gdb_assert (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR);
1805 return value_ind (arg2);
1808 case TYPE_CODE_MEMBERPTR:
1809 /* Now, convert these values to an address. */
1810 arg1 = value_cast (lookup_pointer_type (TYPE_DOMAIN_TYPE (type)),
1813 mem_offset = value_as_long (arg2);
1815 arg3 = value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
1816 value_as_long (arg1) + mem_offset);
1817 return value_ind (arg3);
1820 error (_("non-pointer-to-member value used in pointer-to-member construct"));
1824 nargs = longest_to_int (exp->elts[pc + 1].longconst);
1825 arg_types = (struct type **) alloca (nargs * sizeof (struct type *));
1826 for (ix = 0; ix < nargs; ++ix)
1827 arg_types[ix] = exp->elts[pc + 1 + ix + 1].type;
1829 expect_type = make_params (nargs, arg_types);
1830 *(pos) += 3 + nargs;
1831 arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
1832 xfree (TYPE_FIELDS (expect_type));
1833 xfree (TYPE_MAIN_TYPE (expect_type));
1834 xfree (expect_type);
1838 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
1839 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
1840 if (noside == EVAL_SKIP)
1842 if (binop_user_defined_p (op, arg1, arg2))
1843 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1845 return value_concat (arg1, arg2);
1848 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1849 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
1851 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
1853 if (binop_user_defined_p (op, arg1, arg2))
1854 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1856 return value_assign (arg1, arg2);
1858 case BINOP_ASSIGN_MODIFY:
1860 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1861 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
1862 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
1864 op = exp->elts[pc + 1].opcode;
1865 if (binop_user_defined_p (op, arg1, arg2))
1866 return value_x_binop (arg1, arg2, BINOP_ASSIGN_MODIFY, op, noside);
1867 else if (op == BINOP_ADD && ptrmath_type_p (value_type (arg1))
1868 && is_integral_type (value_type (arg2)))
1869 arg2 = value_ptradd (arg1, value_as_long (arg2));
1870 else if (op == BINOP_SUB && ptrmath_type_p (value_type (arg1))
1871 && is_integral_type (value_type (arg2)))
1872 arg2 = value_ptradd (arg1, - value_as_long (arg2));
1875 struct value *tmp = arg1;
1877 /* For shift and integer exponentiation operations,
1878 only promote the first argument. */
1879 if ((op == BINOP_LSH || op == BINOP_RSH || op == BINOP_EXP)
1880 && is_integral_type (value_type (arg2)))
1881 unop_promote (exp->language_defn, exp->gdbarch, &tmp);
1883 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
1885 arg2 = value_binop (tmp, arg2, op);
1887 return value_assign (arg1, arg2);
1890 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
1891 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
1892 if (noside == EVAL_SKIP)
1894 if (binop_user_defined_p (op, arg1, arg2))
1895 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1896 else if (ptrmath_type_p (value_type (arg1))
1897 && is_integral_type (value_type (arg2)))
1898 return value_ptradd (arg1, value_as_long (arg2));
1899 else if (ptrmath_type_p (value_type (arg2))
1900 && is_integral_type (value_type (arg1)))
1901 return value_ptradd (arg2, value_as_long (arg1));
1904 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
1905 return value_binop (arg1, arg2, BINOP_ADD);
1909 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
1910 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
1911 if (noside == EVAL_SKIP)
1913 if (binop_user_defined_p (op, arg1, arg2))
1914 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1915 else if (ptrmath_type_p (value_type (arg1))
1916 && ptrmath_type_p (value_type (arg2)))
1918 /* FIXME -- should be ptrdiff_t */
1919 type = builtin_type (exp->gdbarch)->builtin_long;
1920 return value_from_longest (type, value_ptrdiff (arg1, arg2));
1922 else if (ptrmath_type_p (value_type (arg1))
1923 && is_integral_type (value_type (arg2)))
1924 return value_ptradd (arg1, - value_as_long (arg2));
1927 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
1928 return value_binop (arg1, arg2, BINOP_SUB);
1939 case BINOP_BITWISE_AND:
1940 case BINOP_BITWISE_IOR:
1941 case BINOP_BITWISE_XOR:
1942 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1943 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1944 if (noside == EVAL_SKIP)
1946 if (binop_user_defined_p (op, arg1, arg2))
1947 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1950 /* If EVAL_AVOID_SIDE_EFFECTS and we're dividing by zero,
1951 fudge arg2 to avoid division-by-zero, the caller is
1952 (theoretically) only looking for the type of the result. */
1953 if (noside == EVAL_AVOID_SIDE_EFFECTS
1954 /* ??? Do we really want to test for BINOP_MOD here?
1955 The implementation of value_binop gives it a well-defined
1958 || op == BINOP_INTDIV
1961 && value_logical_not (arg2))
1963 struct value *v_one, *retval;
1965 v_one = value_one (value_type (arg2), not_lval);
1966 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &v_one);
1967 retval = value_binop (arg1, v_one, op);
1972 /* For shift and integer exponentiation operations,
1973 only promote the first argument. */
1974 if ((op == BINOP_LSH || op == BINOP_RSH || op == BINOP_EXP)
1975 && is_integral_type (value_type (arg2)))
1976 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
1978 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
1980 return value_binop (arg1, arg2, op);
1985 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1986 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1987 if (noside == EVAL_SKIP)
1989 error (_("':' operator used in invalid context"));
1991 case BINOP_SUBSCRIPT:
1992 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
1993 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
1994 if (noside == EVAL_SKIP)
1996 if (binop_user_defined_p (op, arg1, arg2))
1997 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2000 /* If the user attempts to subscript something that is not an
2001 array or pointer type (like a plain int variable for example),
2002 then report this as an error. */
2004 arg1 = coerce_ref (arg1);
2005 type = check_typedef (value_type (arg1));
2006 if (TYPE_CODE (type) != TYPE_CODE_ARRAY
2007 && TYPE_CODE (type) != TYPE_CODE_PTR)
2009 if (TYPE_NAME (type))
2010 error (_("cannot subscript something of type `%s'"),
2013 error (_("cannot subscript requested type"));
2016 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2017 return value_zero (TYPE_TARGET_TYPE (type), VALUE_LVAL (arg1));
2019 return value_subscript (arg1, value_as_long (arg2));
2023 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
2024 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
2025 if (noside == EVAL_SKIP)
2027 type = language_bool_type (exp->language_defn, exp->gdbarch);
2028 return value_from_longest (type, (LONGEST) value_in (arg1, arg2));
2030 case MULTI_SUBSCRIPT:
2032 nargs = longest_to_int (exp->elts[pc + 1].longconst);
2033 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
2036 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
2037 /* FIXME: EVAL_SKIP handling may not be correct. */
2038 if (noside == EVAL_SKIP)
2049 /* FIXME: EVAL_AVOID_SIDE_EFFECTS handling may not be correct. */
2050 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2052 /* If the user attempts to subscript something that has no target
2053 type (like a plain int variable for example), then report this
2056 type = TYPE_TARGET_TYPE (check_typedef (value_type (arg1)));
2059 arg1 = value_zero (type, VALUE_LVAL (arg1));
2065 error (_("cannot subscript something of type `%s'"),
2066 TYPE_NAME (value_type (arg1)));
2070 if (binop_user_defined_p (op, arg1, arg2))
2072 arg1 = value_x_binop (arg1, arg2, op, OP_NULL, noside);
2076 arg1 = coerce_ref (arg1);
2077 type = check_typedef (value_type (arg1));
2079 switch (TYPE_CODE (type))
2082 case TYPE_CODE_ARRAY:
2083 case TYPE_CODE_STRING:
2084 arg1 = value_subscript (arg1, value_as_long (arg2));
2087 case TYPE_CODE_BITSTRING:
2088 type = language_bool_type (exp->language_defn, exp->gdbarch);
2089 arg1 = value_bitstring_subscript (type, arg1,
2090 value_as_long (arg2));
2094 if (TYPE_NAME (type))
2095 error (_("cannot subscript something of type `%s'"),
2098 error (_("cannot subscript requested type"));
2104 multi_f77_subscript:
2106 int subscript_array[MAX_FORTRAN_DIMS];
2107 int array_size_array[MAX_FORTRAN_DIMS];
2108 int ndimensions = 1, i;
2109 struct type *tmp_type;
2110 int offset_item; /* The array offset where the item lives */
2112 if (nargs > MAX_FORTRAN_DIMS)
2113 error (_("Too many subscripts for F77 (%d Max)"), MAX_FORTRAN_DIMS);
2115 tmp_type = check_typedef (value_type (arg1));
2116 ndimensions = calc_f77_array_dims (type);
2118 if (nargs != ndimensions)
2119 error (_("Wrong number of subscripts"));
2121 gdb_assert (nargs > 0);
2123 /* Now that we know we have a legal array subscript expression
2124 let us actually find out where this element exists in the array. */
2127 /* Take array indices left to right */
2128 for (i = 0; i < nargs; i++)
2130 /* Evaluate each subscript, It must be a legal integer in F77 */
2131 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
2133 /* Fill in the subscript and array size arrays */
2135 subscript_array[i] = value_as_long (arg2);
2138 /* Internal type of array is arranged right to left */
2139 for (i = 0; i < nargs; i++)
2141 upper = f77_get_upperbound (tmp_type);
2142 lower = f77_get_lowerbound (tmp_type);
2144 array_size_array[nargs - i - 1] = upper - lower + 1;
2146 /* Zero-normalize subscripts so that offsetting will work. */
2148 subscript_array[nargs - i - 1] -= lower;
2150 /* If we are at the bottom of a multidimensional
2151 array type then keep a ptr to the last ARRAY
2152 type around for use when calling value_subscript()
2153 below. This is done because we pretend to value_subscript
2154 that we actually have a one-dimensional array
2155 of base element type that we apply a simple
2159 tmp_type = check_typedef (TYPE_TARGET_TYPE (tmp_type));
2162 /* Now let us calculate the offset for this item */
2164 offset_item = subscript_array[ndimensions - 1];
2166 for (i = ndimensions - 1; i > 0; --i)
2168 array_size_array[i - 1] * offset_item + subscript_array[i - 1];
2170 /* Let us now play a dirty trick: we will take arg1
2171 which is a value node pointing to the topmost level
2172 of the multidimensional array-set and pretend
2173 that it is actually a array of the final element
2174 type, this will ensure that value_subscript()
2175 returns the correct type value */
2177 deprecated_set_value_type (arg1, tmp_type);
2178 return value_subscripted_rvalue (arg1, offset_item, 0);
2181 case BINOP_LOGICAL_AND:
2182 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2183 if (noside == EVAL_SKIP)
2185 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2190 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2193 if (binop_user_defined_p (op, arg1, arg2))
2195 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2196 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2200 tem = value_logical_not (arg1);
2201 arg2 = evaluate_subexp (NULL_TYPE, exp, pos,
2202 (tem ? EVAL_SKIP : noside));
2203 type = language_bool_type (exp->language_defn, exp->gdbarch);
2204 return value_from_longest (type,
2205 (LONGEST) (!tem && !value_logical_not (arg2)));
2208 case BINOP_LOGICAL_OR:
2209 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2210 if (noside == EVAL_SKIP)
2212 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2217 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2220 if (binop_user_defined_p (op, arg1, arg2))
2222 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2223 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2227 tem = value_logical_not (arg1);
2228 arg2 = evaluate_subexp (NULL_TYPE, exp, pos,
2229 (!tem ? EVAL_SKIP : noside));
2230 type = language_bool_type (exp->language_defn, exp->gdbarch);
2231 return value_from_longest (type,
2232 (LONGEST) (!tem || !value_logical_not (arg2)));
2236 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2237 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2238 if (noside == EVAL_SKIP)
2240 if (binop_user_defined_p (op, arg1, arg2))
2242 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2246 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2247 tem = value_equal (arg1, arg2);
2248 type = language_bool_type (exp->language_defn, exp->gdbarch);
2249 return value_from_longest (type, (LONGEST) tem);
2252 case BINOP_NOTEQUAL:
2253 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2254 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2255 if (noside == EVAL_SKIP)
2257 if (binop_user_defined_p (op, arg1, arg2))
2259 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2263 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2264 tem = value_equal (arg1, arg2);
2265 type = language_bool_type (exp->language_defn, exp->gdbarch);
2266 return value_from_longest (type, (LONGEST) ! tem);
2270 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2271 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2272 if (noside == EVAL_SKIP)
2274 if (binop_user_defined_p (op, arg1, arg2))
2276 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2280 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2281 tem = value_less (arg1, arg2);
2282 type = language_bool_type (exp->language_defn, exp->gdbarch);
2283 return value_from_longest (type, (LONGEST) tem);
2287 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2288 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2289 if (noside == EVAL_SKIP)
2291 if (binop_user_defined_p (op, arg1, arg2))
2293 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2297 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2298 tem = value_less (arg2, arg1);
2299 type = language_bool_type (exp->language_defn, exp->gdbarch);
2300 return value_from_longest (type, (LONGEST) tem);
2304 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2305 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2306 if (noside == EVAL_SKIP)
2308 if (binop_user_defined_p (op, arg1, arg2))
2310 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2314 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2315 tem = value_less (arg2, arg1) || value_equal (arg1, arg2);
2316 type = language_bool_type (exp->language_defn, exp->gdbarch);
2317 return value_from_longest (type, (LONGEST) tem);
2321 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2322 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2323 if (noside == EVAL_SKIP)
2325 if (binop_user_defined_p (op, arg1, arg2))
2327 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2331 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2332 tem = value_less (arg1, arg2) || value_equal (arg1, arg2);
2333 type = language_bool_type (exp->language_defn, exp->gdbarch);
2334 return value_from_longest (type, (LONGEST) tem);
2338 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2339 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2340 if (noside == EVAL_SKIP)
2342 type = check_typedef (value_type (arg2));
2343 if (TYPE_CODE (type) != TYPE_CODE_INT)
2344 error (_("Non-integral right operand for \"@\" operator."));
2345 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2347 return allocate_repeat_value (value_type (arg1),
2348 longest_to_int (value_as_long (arg2)));
2351 return value_repeat (arg1, longest_to_int (value_as_long (arg2)));
2354 evaluate_subexp (NULL_TYPE, exp, pos, noside);
2355 return evaluate_subexp (NULL_TYPE, exp, pos, noside);
2358 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2359 if (noside == EVAL_SKIP)
2361 if (unop_user_defined_p (op, arg1))
2362 return value_x_unop (arg1, op, noside);
2365 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
2366 return value_pos (arg1);
2370 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2371 if (noside == EVAL_SKIP)
2373 if (unop_user_defined_p (op, arg1))
2374 return value_x_unop (arg1, op, noside);
2377 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
2378 return value_neg (arg1);
2381 case UNOP_COMPLEMENT:
2382 /* C++: check for and handle destructor names. */
2383 op = exp->elts[*pos].opcode;
2385 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2386 if (noside == EVAL_SKIP)
2388 if (unop_user_defined_p (UNOP_COMPLEMENT, arg1))
2389 return value_x_unop (arg1, UNOP_COMPLEMENT, noside);
2392 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
2393 return value_complement (arg1);
2396 case UNOP_LOGICAL_NOT:
2397 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2398 if (noside == EVAL_SKIP)
2400 if (unop_user_defined_p (op, arg1))
2401 return value_x_unop (arg1, op, noside);
2404 type = language_bool_type (exp->language_defn, exp->gdbarch);
2405 return value_from_longest (type, (LONGEST) value_logical_not (arg1));
2409 if (expect_type && TYPE_CODE (expect_type) == TYPE_CODE_PTR)
2410 expect_type = TYPE_TARGET_TYPE (check_typedef (expect_type));
2411 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2412 type = check_typedef (value_type (arg1));
2413 if (TYPE_CODE (type) == TYPE_CODE_METHODPTR
2414 || TYPE_CODE (type) == TYPE_CODE_MEMBERPTR)
2415 error (_("Attempt to dereference pointer to member without an object"));
2416 if (noside == EVAL_SKIP)
2418 if (unop_user_defined_p (op, arg1))
2419 return value_x_unop (arg1, op, noside);
2420 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2422 type = check_typedef (value_type (arg1));
2423 if (TYPE_CODE (type) == TYPE_CODE_PTR
2424 || TYPE_CODE (type) == TYPE_CODE_REF
2425 /* In C you can dereference an array to get the 1st elt. */
2426 || TYPE_CODE (type) == TYPE_CODE_ARRAY
2428 return value_zero (TYPE_TARGET_TYPE (type),
2430 else if (TYPE_CODE (type) == TYPE_CODE_INT)
2431 /* GDB allows dereferencing an int. */
2432 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
2435 error (_("Attempt to take contents of a non-pointer value."));
2438 /* Allow * on an integer so we can cast it to whatever we want.
2439 This returns an int, which seems like the most C-like thing to
2440 do. "long long" variables are rare enough that
2441 BUILTIN_TYPE_LONGEST would seem to be a mistake. */
2442 if (TYPE_CODE (type) == TYPE_CODE_INT)
2443 return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
2444 (CORE_ADDR) value_as_address (arg1));
2445 return value_ind (arg1);
2448 /* C++: check for and handle pointer to members. */
2450 op = exp->elts[*pos].opcode;
2452 if (noside == EVAL_SKIP)
2454 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
2459 struct value *retvalp = evaluate_subexp_for_address (exp, pos, noside);
2464 if (noside == EVAL_SKIP)
2466 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
2469 return evaluate_subexp_for_sizeof (exp, pos);
2473 type = exp->elts[pc + 1].type;
2474 arg1 = evaluate_subexp (type, exp, pos, noside);
2475 if (noside == EVAL_SKIP)
2477 if (type != value_type (arg1))
2478 arg1 = value_cast (type, arg1);
2481 case UNOP_DYNAMIC_CAST:
2483 type = exp->elts[pc + 1].type;
2484 arg1 = evaluate_subexp (type, exp, pos, noside);
2485 if (noside == EVAL_SKIP)
2487 return value_dynamic_cast (type, arg1);
2489 case UNOP_REINTERPRET_CAST:
2491 type = exp->elts[pc + 1].type;
2492 arg1 = evaluate_subexp (type, exp, pos, noside);
2493 if (noside == EVAL_SKIP)
2495 return value_reinterpret_cast (type, arg1);
2499 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2500 if (noside == EVAL_SKIP)
2502 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2503 return value_zero (exp->elts[pc + 1].type, lval_memory);
2505 return value_at_lazy (exp->elts[pc + 1].type,
2506 value_as_address (arg1));
2508 case UNOP_MEMVAL_TLS:
2510 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2511 if (noside == EVAL_SKIP)
2513 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2514 return value_zero (exp->elts[pc + 2].type, lval_memory);
2518 tls_addr = target_translate_tls_address (exp->elts[pc + 1].objfile,
2519 value_as_address (arg1));
2520 return value_at_lazy (exp->elts[pc + 2].type, tls_addr);
2523 case UNOP_PREINCREMENT:
2524 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2525 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2527 else if (unop_user_defined_p (op, arg1))
2529 return value_x_unop (arg1, op, noside);
2533 if (ptrmath_type_p (value_type (arg1)))
2534 arg2 = value_ptradd (arg1, 1);
2537 struct value *tmp = arg1;
2538 arg2 = value_one (value_type (arg1), not_lval);
2539 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2540 arg2 = value_binop (tmp, arg2, BINOP_ADD);
2543 return value_assign (arg1, arg2);
2546 case UNOP_PREDECREMENT:
2547 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2548 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2550 else if (unop_user_defined_p (op, arg1))
2552 return value_x_unop (arg1, op, noside);
2556 if (ptrmath_type_p (value_type (arg1)))
2557 arg2 = value_ptradd (arg1, -1);
2560 struct value *tmp = arg1;
2561 arg2 = value_one (value_type (arg1), not_lval);
2562 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2563 arg2 = value_binop (tmp, arg2, BINOP_SUB);
2566 return value_assign (arg1, arg2);
2569 case UNOP_POSTINCREMENT:
2570 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2571 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2573 else if (unop_user_defined_p (op, arg1))
2575 return value_x_unop (arg1, op, noside);
2579 if (ptrmath_type_p (value_type (arg1)))
2580 arg2 = value_ptradd (arg1, 1);
2583 struct value *tmp = arg1;
2584 arg2 = value_one (value_type (arg1), not_lval);
2585 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2586 arg2 = value_binop (tmp, arg2, BINOP_ADD);
2589 value_assign (arg1, arg2);
2593 case UNOP_POSTDECREMENT:
2594 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2595 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2597 else if (unop_user_defined_p (op, arg1))
2599 return value_x_unop (arg1, op, noside);
2603 if (ptrmath_type_p (value_type (arg1)))
2604 arg2 = value_ptradd (arg1, -1);
2607 struct value *tmp = arg1;
2608 arg2 = value_one (value_type (arg1), not_lval);
2609 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2610 arg2 = value_binop (tmp, arg2, BINOP_SUB);
2613 value_assign (arg1, arg2);
2619 return value_of_this (1);
2623 return value_of_local ("self", 1);
2626 /* The value is not supposed to be used. This is here to make it
2627 easier to accommodate expressions that contain types. */
2629 if (noside == EVAL_SKIP)
2631 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2633 struct type *type = exp->elts[pc + 1].type;
2634 /* If this is a typedef, then find its immediate target. We
2635 use check_typedef to resolve stubs, but we ignore its
2636 result because we do not want to dig past all
2638 check_typedef (type);
2639 if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2640 type = TYPE_TARGET_TYPE (type);
2641 return allocate_value (type);
2644 error (_("Attempt to use a type name as an expression"));
2647 /* Removing this case and compiling with gcc -Wall reveals that
2648 a lot of cases are hitting this case. Some of these should
2649 probably be removed from expression.h; others are legitimate
2650 expressions which are (apparently) not fully implemented.
2652 If there are any cases landing here which mean a user error,
2653 then they should be separate cases, with more descriptive
2657 GDB does not (yet) know how to evaluate that kind of expression"));
2661 return value_from_longest (builtin_type (exp->gdbarch)->builtin_int, 1);
2664 /* Evaluate a subexpression of EXP, at index *POS,
2665 and return the address of that subexpression.
2666 Advance *POS over the subexpression.
2667 If the subexpression isn't an lvalue, get an error.
2668 NOSIDE may be EVAL_AVOID_SIDE_EFFECTS;
2669 then only the type of the result need be correct. */
2671 static struct value *
2672 evaluate_subexp_for_address (struct expression *exp, int *pos,
2682 op = exp->elts[pc].opcode;
2688 x = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2690 /* We can't optimize out "&*" if there's a user-defined operator*. */
2691 if (unop_user_defined_p (op, x))
2693 x = value_x_unop (x, op, noside);
2694 goto default_case_after_eval;
2697 return coerce_array (x);
2701 return value_cast (lookup_pointer_type (exp->elts[pc + 1].type),
2702 evaluate_subexp (NULL_TYPE, exp, pos, noside));
2705 var = exp->elts[pc + 2].symbol;
2707 /* C++: The "address" of a reference should yield the address
2708 * of the object pointed to. Let value_addr() deal with it. */
2709 if (TYPE_CODE (SYMBOL_TYPE (var)) == TYPE_CODE_REF)
2713 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2716 lookup_pointer_type (SYMBOL_TYPE (var));
2717 enum address_class sym_class = SYMBOL_CLASS (var);
2719 if (sym_class == LOC_CONST
2720 || sym_class == LOC_CONST_BYTES
2721 || sym_class == LOC_REGISTER)
2722 error (_("Attempt to take address of register or constant."));
2725 value_zero (type, not_lval);
2728 return address_of_variable (var, exp->elts[pc + 1].block);
2731 tem = longest_to_int (exp->elts[pc + 2].longconst);
2732 (*pos) += 5 + BYTES_TO_EXP_ELEM (tem + 1);
2733 x = value_aggregate_elt (exp->elts[pc + 1].type,
2734 &exp->elts[pc + 3].string,
2737 error (_("There is no field named %s"), &exp->elts[pc + 3].string);
2742 x = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2743 default_case_after_eval:
2744 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2746 struct type *type = check_typedef (value_type (x));
2748 if (VALUE_LVAL (x) == lval_memory || value_must_coerce_to_target (x))
2749 return value_zero (lookup_pointer_type (value_type (x)),
2751 else if (TYPE_CODE (type) == TYPE_CODE_REF)
2752 return value_zero (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2755 error (_("Attempt to take address of value not located in memory."));
2757 return value_addr (x);
2761 /* Evaluate like `evaluate_subexp' except coercing arrays to pointers.
2762 When used in contexts where arrays will be coerced anyway, this is
2763 equivalent to `evaluate_subexp' but much faster because it avoids
2764 actually fetching array contents (perhaps obsolete now that we have
2767 Note that we currently only do the coercion for C expressions, where
2768 arrays are zero based and the coercion is correct. For other languages,
2769 with nonzero based arrays, coercion loses. Use CAST_IS_CONVERSION
2770 to decide if coercion is appropriate.
2775 evaluate_subexp_with_coercion (struct expression *exp,
2776 int *pos, enum noside noside)
2785 op = exp->elts[pc].opcode;
2790 var = exp->elts[pc + 2].symbol;
2791 type = check_typedef (SYMBOL_TYPE (var));
2792 if (TYPE_CODE (type) == TYPE_CODE_ARRAY
2793 && CAST_IS_CONVERSION)
2796 val = address_of_variable (var, exp->elts[pc + 1].block);
2797 return value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2803 return evaluate_subexp (NULL_TYPE, exp, pos, noside);
2807 /* Evaluate a subexpression of EXP, at index *POS,
2808 and return a value for the size of that subexpression.
2809 Advance *POS over the subexpression. */
2811 static struct value *
2812 evaluate_subexp_for_sizeof (struct expression *exp, int *pos)
2814 /* FIXME: This should be size_t. */
2815 struct type *size_type = builtin_type (exp->gdbarch)->builtin_int;
2822 op = exp->elts[pc].opcode;
2826 /* This case is handled specially
2827 so that we avoid creating a value for the result type.
2828 If the result type is very big, it's desirable not to
2829 create a value unnecessarily. */
2832 val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2833 type = check_typedef (value_type (val));
2834 if (TYPE_CODE (type) != TYPE_CODE_PTR
2835 && TYPE_CODE (type) != TYPE_CODE_REF
2836 && TYPE_CODE (type) != TYPE_CODE_ARRAY)
2837 error (_("Attempt to take contents of a non-pointer value."));
2838 type = check_typedef (TYPE_TARGET_TYPE (type));
2839 return value_from_longest (size_type, (LONGEST) TYPE_LENGTH (type));
2843 type = check_typedef (exp->elts[pc + 1].type);
2844 return value_from_longest (size_type, (LONGEST) TYPE_LENGTH (type));
2848 type = check_typedef (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
2850 value_from_longest (size_type, (LONGEST) TYPE_LENGTH (type));
2853 val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2854 return value_from_longest (size_type,
2855 (LONGEST) TYPE_LENGTH (value_type (val)));
2859 /* Parse a type expression in the string [P..P+LENGTH). */
2862 parse_and_eval_type (char *p, int length)
2864 char *tmp = (char *) alloca (length + 4);
2865 struct expression *expr;
2867 memcpy (tmp + 1, p, length);
2868 tmp[length + 1] = ')';
2869 tmp[length + 2] = '0';
2870 tmp[length + 3] = '\0';
2871 expr = parse_expression (tmp);
2872 if (expr->elts[0].opcode != UNOP_CAST)
2873 error (_("Internal error in eval_type."));
2874 return expr->elts[1].type;
2878 calc_f77_array_dims (struct type *array_type)
2881 struct type *tmp_type;
2883 if ((TYPE_CODE (array_type) != TYPE_CODE_ARRAY))
2884 error (_("Can't get dimensions for a non-array type"));
2886 tmp_type = array_type;
2888 while ((tmp_type = TYPE_TARGET_TYPE (tmp_type)))
2890 if (TYPE_CODE (tmp_type) == TYPE_CODE_ARRAY)