1 /* Evaluate expressions for GDB.
3 Copyright (C) 1986-2014 Free Software Foundation, Inc.
5 This file is part of GDB.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
25 #include "expression.h"
28 #include "language.h" /* For CAST_IS_CONVERSION. */
29 #include "f-lang.h" /* For array bound stuff. */
32 #include "objc-lang.h"
34 #include "parser-defs.h"
35 #include "cp-support.h"
37 #include "exceptions.h"
39 #include "user-regs.h"
41 #include "gdb_obstack.h"
44 #include "gdb_assert.h"
48 /* This is defined in valops.c */
49 extern int overload_resolution;
51 /* Prototypes for local functions. */
53 static struct value *evaluate_subexp_for_sizeof (struct expression *, int *,
56 static struct value *evaluate_subexp_for_address (struct expression *,
59 static struct value *evaluate_struct_tuple (struct value *,
60 struct expression *, int *,
63 static LONGEST init_array_element (struct value *, struct value *,
64 struct expression *, int *, enum noside,
68 evaluate_subexp (struct type *expect_type, struct expression *exp,
69 int *pos, enum noside noside)
71 return (*exp->language_defn->la_exp_desc->evaluate_exp)
72 (expect_type, exp, pos, noside);
75 /* Parse the string EXP as a C expression, evaluate it,
76 and return the result as a number. */
79 parse_and_eval_address (const char *exp)
81 struct expression *expr = parse_expression (exp);
83 struct cleanup *old_chain =
84 make_cleanup (free_current_contents, &expr);
86 addr = value_as_address (evaluate_expression (expr));
87 do_cleanups (old_chain);
91 /* Like parse_and_eval_address, but treats the value of the expression
92 as an integer, not an address, returns a LONGEST, not a CORE_ADDR. */
94 parse_and_eval_long (const char *exp)
96 struct expression *expr = parse_expression (exp);
98 struct cleanup *old_chain =
99 make_cleanup (free_current_contents, &expr);
101 retval = value_as_long (evaluate_expression (expr));
102 do_cleanups (old_chain);
107 parse_and_eval (const char *exp)
109 struct expression *expr = parse_expression (exp);
111 struct cleanup *old_chain =
112 make_cleanup (free_current_contents, &expr);
114 val = evaluate_expression (expr);
115 do_cleanups (old_chain);
119 /* Parse up to a comma (or to a closeparen)
120 in the string EXPP as an expression, evaluate it, and return the value.
121 EXPP is advanced to point to the comma. */
124 parse_to_comma_and_eval (const char **expp)
126 struct expression *expr = parse_exp_1 (expp, 0, (struct block *) 0, 1);
128 struct cleanup *old_chain =
129 make_cleanup (free_current_contents, &expr);
131 val = evaluate_expression (expr);
132 do_cleanups (old_chain);
136 /* Evaluate an expression in internal prefix form
137 such as is constructed by parse.y.
139 See expression.h for info on the format of an expression. */
142 evaluate_expression (struct expression *exp)
146 return evaluate_subexp (NULL_TYPE, exp, &pc, EVAL_NORMAL);
149 /* Evaluate an expression, avoiding all memory references
150 and getting a value whose type alone is correct. */
153 evaluate_type (struct expression *exp)
157 return evaluate_subexp (NULL_TYPE, exp, &pc, EVAL_AVOID_SIDE_EFFECTS);
160 /* Evaluate a subexpression, avoiding all memory references and
161 getting a value whose type alone is correct. */
164 evaluate_subexpression_type (struct expression *exp, int subexp)
166 return evaluate_subexp (NULL_TYPE, exp, &subexp, EVAL_AVOID_SIDE_EFFECTS);
169 /* Find the current value of a watchpoint on EXP. Return the value in
170 *VALP and *RESULTP and the chain of intermediate and final values
171 in *VAL_CHAIN. RESULTP and VAL_CHAIN may be NULL if the caller does
174 If PRESERVE_ERRORS is true, then exceptions are passed through.
175 Otherwise, if PRESERVE_ERRORS is false, then if a memory error
176 occurs while evaluating the expression, *RESULTP will be set to
177 NULL. *RESULTP may be a lazy value, if the result could not be
178 read from memory. It is used to determine whether a value is
179 user-specified (we should watch the whole value) or intermediate
180 (we should watch only the bit used to locate the final value).
182 If the final value, or any intermediate value, could not be read
183 from memory, *VALP will be set to NULL. *VAL_CHAIN will still be
184 set to any referenced values. *VALP will never be a lazy value.
185 This is the value which we store in struct breakpoint.
187 If VAL_CHAIN is non-NULL, *VAL_CHAIN will be released from the
188 value chain. The caller must free the values individually. If
189 VAL_CHAIN is NULL, all generated values will be left on the value
193 fetch_subexp_value (struct expression *exp, int *pc, struct value **valp,
194 struct value **resultp, struct value **val_chain,
197 struct value *mark, *new_mark, *result;
198 volatile struct gdb_exception ex;
206 /* Evaluate the expression. */
207 mark = value_mark ();
210 TRY_CATCH (ex, RETURN_MASK_ALL)
212 result = evaluate_subexp (NULL_TYPE, exp, pc, EVAL_NORMAL);
216 /* Ignore memory errors if we want watchpoints pointing at
217 inaccessible memory to still be created; otherwise, throw the
218 error to some higher catcher. */
222 if (!preserve_errors)
225 throw_exception (ex);
230 new_mark = value_mark ();
231 if (mark == new_mark)
236 /* Make sure it's not lazy, so that after the target stops again we
237 have a non-lazy previous value to compare with. */
240 if (!value_lazy (result))
244 volatile struct gdb_exception except;
246 TRY_CATCH (except, RETURN_MASK_ERROR)
248 value_fetch_lazy (result);
256 /* Return the chain of intermediate values. We use this to
257 decide which addresses to watch. */
258 *val_chain = new_mark;
259 value_release_to_mark (mark);
263 /* Extract a field operation from an expression. If the subexpression
264 of EXP starting at *SUBEXP is not a structure dereference
265 operation, return NULL. Otherwise, return the name of the
266 dereferenced field, and advance *SUBEXP to point to the
267 subexpression of the left-hand-side of the dereference. This is
268 used when completing field names. */
271 extract_field_op (struct expression *exp, int *subexp)
276 if (exp->elts[*subexp].opcode != STRUCTOP_STRUCT
277 && exp->elts[*subexp].opcode != STRUCTOP_PTR)
279 tem = longest_to_int (exp->elts[*subexp + 1].longconst);
280 result = &exp->elts[*subexp + 2].string;
281 (*subexp) += 1 + 3 + BYTES_TO_EXP_ELEM (tem + 1);
285 /* This function evaluates brace-initializers (in C/C++) for
288 static struct value *
289 evaluate_struct_tuple (struct value *struct_val,
290 struct expression *exp,
291 int *pos, enum noside noside, int nargs)
293 struct type *struct_type = check_typedef (value_type (struct_val));
294 struct type *field_type;
299 struct value *val = NULL;
304 /* Skip static fields. */
305 while (fieldno < TYPE_NFIELDS (struct_type)
306 && field_is_static (&TYPE_FIELD (struct_type,
309 if (fieldno >= TYPE_NFIELDS (struct_type))
310 error (_("too many initializers"));
311 field_type = TYPE_FIELD_TYPE (struct_type, fieldno);
312 if (TYPE_CODE (field_type) == TYPE_CODE_UNION
313 && TYPE_FIELD_NAME (struct_type, fieldno)[0] == '0')
314 error (_("don't know which variant you want to set"));
316 /* Here, struct_type is the type of the inner struct,
317 while substruct_type is the type of the inner struct.
318 These are the same for normal structures, but a variant struct
319 contains anonymous union fields that contain substruct fields.
320 The value fieldno is the index of the top-level (normal or
321 anonymous union) field in struct_field, while the value
322 subfieldno is the index of the actual real (named inner) field
323 in substruct_type. */
325 field_type = TYPE_FIELD_TYPE (struct_type, fieldno);
327 val = evaluate_subexp (field_type, exp, pos, noside);
329 /* Now actually set the field in struct_val. */
331 /* Assign val to field fieldno. */
332 if (value_type (val) != field_type)
333 val = value_cast (field_type, val);
335 bitsize = TYPE_FIELD_BITSIZE (struct_type, fieldno);
336 bitpos = TYPE_FIELD_BITPOS (struct_type, fieldno);
337 addr = value_contents_writeable (struct_val) + bitpos / 8;
339 modify_field (struct_type, addr,
340 value_as_long (val), bitpos % 8, bitsize);
342 memcpy (addr, value_contents (val),
343 TYPE_LENGTH (value_type (val)));
349 /* Recursive helper function for setting elements of array tuples.
350 The target is ARRAY (which has bounds LOW_BOUND to HIGH_BOUND); the
351 element value is ELEMENT; EXP, POS and NOSIDE are as usual.
352 Evaluates index expresions and sets the specified element(s) of
353 ARRAY to ELEMENT. Returns last index value. */
356 init_array_element (struct value *array, struct value *element,
357 struct expression *exp, int *pos,
358 enum noside noside, LONGEST low_bound, LONGEST high_bound)
361 int element_size = TYPE_LENGTH (value_type (element));
363 if (exp->elts[*pos].opcode == BINOP_COMMA)
366 init_array_element (array, element, exp, pos, noside,
367 low_bound, high_bound);
368 return init_array_element (array, element,
369 exp, pos, noside, low_bound, high_bound);
373 index = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
374 if (index < low_bound || index > high_bound)
375 error (_("tuple index out of range"));
376 memcpy (value_contents_raw (array) + (index - low_bound) * element_size,
377 value_contents (element), element_size);
382 static struct value *
383 value_f90_subarray (struct value *array,
384 struct expression *exp, int *pos, enum noside noside)
387 LONGEST low_bound, high_bound;
388 struct type *range = check_typedef (TYPE_INDEX_TYPE (value_type (array)));
389 enum f90_range_type range_type = longest_to_int (exp->elts[pc].longconst);
393 if (range_type == LOW_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT)
394 low_bound = TYPE_LOW_BOUND (range);
396 low_bound = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
398 if (range_type == HIGH_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT)
399 high_bound = TYPE_HIGH_BOUND (range);
401 high_bound = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
403 return value_slice (array, low_bound, high_bound - low_bound + 1);
407 /* Promote value ARG1 as appropriate before performing a unary operation
409 If the result is not appropriate for any particular language then it
410 needs to patch this function. */
413 unop_promote (const struct language_defn *language, struct gdbarch *gdbarch,
418 *arg1 = coerce_ref (*arg1);
419 type1 = check_typedef (value_type (*arg1));
421 if (is_integral_type (type1))
423 switch (language->la_language)
426 /* Perform integral promotion for ANSI C/C++.
427 If not appropropriate for any particular language
428 it needs to modify this function. */
430 struct type *builtin_int = builtin_type (gdbarch)->builtin_int;
432 if (TYPE_LENGTH (type1) < TYPE_LENGTH (builtin_int))
433 *arg1 = value_cast (builtin_int, *arg1);
440 /* Promote values ARG1 and ARG2 as appropriate before performing a binary
441 operation on those two operands.
442 If the result is not appropriate for any particular language then it
443 needs to patch this function. */
446 binop_promote (const struct language_defn *language, struct gdbarch *gdbarch,
447 struct value **arg1, struct value **arg2)
449 struct type *promoted_type = NULL;
453 *arg1 = coerce_ref (*arg1);
454 *arg2 = coerce_ref (*arg2);
456 type1 = check_typedef (value_type (*arg1));
457 type2 = check_typedef (value_type (*arg2));
459 if ((TYPE_CODE (type1) != TYPE_CODE_FLT
460 && TYPE_CODE (type1) != TYPE_CODE_DECFLOAT
461 && !is_integral_type (type1))
462 || (TYPE_CODE (type2) != TYPE_CODE_FLT
463 && TYPE_CODE (type2) != TYPE_CODE_DECFLOAT
464 && !is_integral_type (type2)))
467 if (TYPE_CODE (type1) == TYPE_CODE_DECFLOAT
468 || TYPE_CODE (type2) == TYPE_CODE_DECFLOAT)
470 /* No promotion required. */
472 else if (TYPE_CODE (type1) == TYPE_CODE_FLT
473 || TYPE_CODE (type2) == TYPE_CODE_FLT)
475 switch (language->la_language)
481 case language_opencl:
482 /* No promotion required. */
486 /* For other languages the result type is unchanged from gdb
487 version 6.7 for backward compatibility.
488 If either arg was long double, make sure that value is also long
489 double. Otherwise use double. */
490 if (TYPE_LENGTH (type1) * 8 > gdbarch_double_bit (gdbarch)
491 || TYPE_LENGTH (type2) * 8 > gdbarch_double_bit (gdbarch))
492 promoted_type = builtin_type (gdbarch)->builtin_long_double;
494 promoted_type = builtin_type (gdbarch)->builtin_double;
498 else if (TYPE_CODE (type1) == TYPE_CODE_BOOL
499 && TYPE_CODE (type2) == TYPE_CODE_BOOL)
501 /* No promotion required. */
504 /* Integral operations here. */
505 /* FIXME: Also mixed integral/booleans, with result an integer. */
507 const struct builtin_type *builtin = builtin_type (gdbarch);
508 unsigned int promoted_len1 = TYPE_LENGTH (type1);
509 unsigned int promoted_len2 = TYPE_LENGTH (type2);
510 int is_unsigned1 = TYPE_UNSIGNED (type1);
511 int is_unsigned2 = TYPE_UNSIGNED (type2);
512 unsigned int result_len;
513 int unsigned_operation;
515 /* Determine type length and signedness after promotion for
517 if (promoted_len1 < TYPE_LENGTH (builtin->builtin_int))
520 promoted_len1 = TYPE_LENGTH (builtin->builtin_int);
522 if (promoted_len2 < TYPE_LENGTH (builtin->builtin_int))
525 promoted_len2 = TYPE_LENGTH (builtin->builtin_int);
528 if (promoted_len1 > promoted_len2)
530 unsigned_operation = is_unsigned1;
531 result_len = promoted_len1;
533 else if (promoted_len2 > promoted_len1)
535 unsigned_operation = is_unsigned2;
536 result_len = promoted_len2;
540 unsigned_operation = is_unsigned1 || is_unsigned2;
541 result_len = promoted_len1;
544 switch (language->la_language)
550 if (result_len <= TYPE_LENGTH (builtin->builtin_int))
552 promoted_type = (unsigned_operation
553 ? builtin->builtin_unsigned_int
554 : builtin->builtin_int);
556 else if (result_len <= TYPE_LENGTH (builtin->builtin_long))
558 promoted_type = (unsigned_operation
559 ? builtin->builtin_unsigned_long
560 : builtin->builtin_long);
564 promoted_type = (unsigned_operation
565 ? builtin->builtin_unsigned_long_long
566 : builtin->builtin_long_long);
569 case language_opencl:
570 if (result_len <= TYPE_LENGTH (lookup_signed_typename
571 (language, gdbarch, "int")))
575 ? lookup_unsigned_typename (language, gdbarch, "int")
576 : lookup_signed_typename (language, gdbarch, "int"));
578 else if (result_len <= TYPE_LENGTH (lookup_signed_typename
579 (language, gdbarch, "long")))
583 ? lookup_unsigned_typename (language, gdbarch, "long")
584 : lookup_signed_typename (language, gdbarch,"long"));
588 /* For other languages the result type is unchanged from gdb
589 version 6.7 for backward compatibility.
590 If either arg was long long, make sure that value is also long
591 long. Otherwise use long. */
592 if (unsigned_operation)
594 if (result_len > gdbarch_long_bit (gdbarch) / HOST_CHAR_BIT)
595 promoted_type = builtin->builtin_unsigned_long_long;
597 promoted_type = builtin->builtin_unsigned_long;
601 if (result_len > gdbarch_long_bit (gdbarch) / HOST_CHAR_BIT)
602 promoted_type = builtin->builtin_long_long;
604 promoted_type = builtin->builtin_long;
612 /* Promote both operands to common type. */
613 *arg1 = value_cast (promoted_type, *arg1);
614 *arg2 = value_cast (promoted_type, *arg2);
619 ptrmath_type_p (const struct language_defn *lang, struct type *type)
621 type = check_typedef (type);
622 if (TYPE_CODE (type) == TYPE_CODE_REF)
623 type = TYPE_TARGET_TYPE (type);
625 switch (TYPE_CODE (type))
631 case TYPE_CODE_ARRAY:
632 return TYPE_VECTOR (type) ? 0 : lang->c_style_arrays;
639 /* Constructs a fake method with the given parameter types.
640 This function is used by the parser to construct an "expected"
641 type for method overload resolution. */
644 make_params (int num_types, struct type **param_types)
646 struct type *type = XCNEW (struct type);
647 TYPE_MAIN_TYPE (type) = XCNEW (struct main_type);
648 TYPE_LENGTH (type) = 1;
649 TYPE_CODE (type) = TYPE_CODE_METHOD;
650 TYPE_VPTR_FIELDNO (type) = -1;
651 TYPE_CHAIN (type) = type;
654 if (param_types[num_types - 1] == NULL)
657 TYPE_VARARGS (type) = 1;
659 else if (TYPE_CODE (check_typedef (param_types[num_types - 1]))
663 /* Caller should have ensured this. */
664 gdb_assert (num_types == 0);
665 TYPE_PROTOTYPED (type) = 1;
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;
696 struct type **arg_types;
698 struct symbol *function = NULL;
699 char *function_name = NULL;
702 op = exp->elts[pc].opcode;
707 tem = longest_to_int (exp->elts[pc + 2].longconst);
708 (*pos) += 4 + BYTES_TO_EXP_ELEM (tem + 1);
709 if (noside == EVAL_SKIP)
711 arg1 = value_aggregate_elt (exp->elts[pc + 1].type,
712 &exp->elts[pc + 3].string,
713 expect_type, 0, noside);
715 error (_("There is no field named %s"), &exp->elts[pc + 3].string);
720 return value_from_longest (exp->elts[pc + 1].type,
721 exp->elts[pc + 2].longconst);
725 return value_from_double (exp->elts[pc + 1].type,
726 exp->elts[pc + 2].doubleconst);
730 return value_from_decfloat (exp->elts[pc + 1].type,
731 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),
764 throw_exception (except);
770 case OP_VAR_ENTRY_VALUE:
772 if (noside == EVAL_SKIP)
776 struct symbol *sym = exp->elts[pc + 1].symbol;
777 struct frame_info *frame;
779 if (noside == EVAL_AVOID_SIDE_EFFECTS)
780 return value_zero (SYMBOL_TYPE (sym), not_lval);
782 if (SYMBOL_COMPUTED_OPS (sym) == NULL
783 || SYMBOL_COMPUTED_OPS (sym)->read_variable_at_entry == NULL)
784 error (_("Symbol \"%s\" does not have any specific entry value"),
785 SYMBOL_PRINT_NAME (sym));
787 frame = get_selected_frame (NULL);
788 return SYMBOL_COMPUTED_OPS (sym)->read_variable_at_entry (sym, frame);
794 access_value_history (longest_to_int (exp->elts[pc + 1].longconst));
798 const char *name = &exp->elts[pc + 2].string;
802 (*pos) += 3 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
803 regno = user_reg_map_name_to_regnum (exp->gdbarch,
804 name, strlen (name));
806 error (_("Register $%s not available."), name);
808 /* In EVAL_AVOID_SIDE_EFFECTS mode, we only need to return
809 a value with the appropriate register type. Unfortunately,
810 we don't have easy access to the type of user registers.
811 So for these registers, we fetch the register value regardless
812 of the evaluation mode. */
813 if (noside == EVAL_AVOID_SIDE_EFFECTS
814 && regno < gdbarch_num_regs (exp->gdbarch)
815 + gdbarch_num_pseudo_regs (exp->gdbarch))
816 val = value_zero (register_type (exp->gdbarch, regno), not_lval);
818 val = value_of_register (regno, get_selected_frame (NULL));
820 error (_("Value of register %s not available."), name);
826 type = language_bool_type (exp->language_defn, exp->gdbarch);
827 return value_from_longest (type, exp->elts[pc + 1].longconst);
831 return value_of_internalvar (exp->gdbarch,
832 exp->elts[pc + 1].internalvar);
835 tem = longest_to_int (exp->elts[pc + 1].longconst);
836 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
837 if (noside == EVAL_SKIP)
839 type = language_string_char_type (exp->language_defn, exp->gdbarch);
840 return value_string (&exp->elts[pc + 2].string, tem, type);
842 case OP_OBJC_NSSTRING: /* Objective C Foundation Class
843 NSString constant. */
844 tem = longest_to_int (exp->elts[pc + 1].longconst);
845 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
846 if (noside == EVAL_SKIP)
850 return value_nsstring (exp->gdbarch, &exp->elts[pc + 2].string, tem + 1);
854 tem2 = longest_to_int (exp->elts[pc + 1].longconst);
855 tem3 = longest_to_int (exp->elts[pc + 2].longconst);
856 nargs = tem3 - tem2 + 1;
857 type = expect_type ? check_typedef (expect_type) : NULL_TYPE;
859 if (expect_type != NULL_TYPE && noside != EVAL_SKIP
860 && TYPE_CODE (type) == TYPE_CODE_STRUCT)
862 struct value *rec = allocate_value (expect_type);
864 memset (value_contents_raw (rec), '\0', TYPE_LENGTH (type));
865 return evaluate_struct_tuple (rec, exp, pos, noside, nargs);
868 if (expect_type != NULL_TYPE && noside != EVAL_SKIP
869 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
871 struct type *range_type = TYPE_INDEX_TYPE (type);
872 struct type *element_type = TYPE_TARGET_TYPE (type);
873 struct value *array = allocate_value (expect_type);
874 int element_size = TYPE_LENGTH (check_typedef (element_type));
875 LONGEST low_bound, high_bound, index;
877 if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
880 high_bound = (TYPE_LENGTH (type) / element_size) - 1;
883 memset (value_contents_raw (array), 0, TYPE_LENGTH (expect_type));
884 for (tem = nargs; --nargs >= 0;)
886 struct value *element;
889 element = evaluate_subexp (element_type, exp, pos, noside);
890 if (value_type (element) != element_type)
891 element = value_cast (element_type, element);
894 int continue_pc = *pos;
897 index = init_array_element (array, element, exp, pos, noside,
898 low_bound, high_bound);
903 if (index > high_bound)
904 /* To avoid memory corruption. */
905 error (_("Too many array elements"));
906 memcpy (value_contents_raw (array)
907 + (index - low_bound) * element_size,
908 value_contents (element),
916 if (expect_type != NULL_TYPE && noside != EVAL_SKIP
917 && TYPE_CODE (type) == TYPE_CODE_SET)
919 struct value *set = allocate_value (expect_type);
920 gdb_byte *valaddr = value_contents_raw (set);
921 struct type *element_type = TYPE_INDEX_TYPE (type);
922 struct type *check_type = element_type;
923 LONGEST low_bound, high_bound;
925 /* Get targettype of elementtype. */
926 while (TYPE_CODE (check_type) == TYPE_CODE_RANGE
927 || TYPE_CODE (check_type) == TYPE_CODE_TYPEDEF)
928 check_type = TYPE_TARGET_TYPE (check_type);
930 if (get_discrete_bounds (element_type, &low_bound, &high_bound) < 0)
931 error (_("(power)set type with unknown size"));
932 memset (valaddr, '\0', TYPE_LENGTH (type));
933 for (tem = 0; tem < nargs; tem++)
935 LONGEST range_low, range_high;
936 struct type *range_low_type, *range_high_type;
937 struct value *elem_val;
939 elem_val = evaluate_subexp (element_type, exp, pos, noside);
940 range_low_type = range_high_type = value_type (elem_val);
941 range_low = range_high = value_as_long (elem_val);
943 /* Check types of elements to avoid mixture of elements from
944 different types. Also check if type of element is "compatible"
945 with element type of powerset. */
946 if (TYPE_CODE (range_low_type) == TYPE_CODE_RANGE)
947 range_low_type = TYPE_TARGET_TYPE (range_low_type);
948 if (TYPE_CODE (range_high_type) == TYPE_CODE_RANGE)
949 range_high_type = TYPE_TARGET_TYPE (range_high_type);
950 if ((TYPE_CODE (range_low_type) != TYPE_CODE (range_high_type))
951 || (TYPE_CODE (range_low_type) == TYPE_CODE_ENUM
952 && (range_low_type != range_high_type)))
953 /* different element modes. */
954 error (_("POWERSET tuple elements of different mode"));
955 if ((TYPE_CODE (check_type) != TYPE_CODE (range_low_type))
956 || (TYPE_CODE (check_type) == TYPE_CODE_ENUM
957 && range_low_type != check_type))
958 error (_("incompatible POWERSET tuple elements"));
959 if (range_low > range_high)
961 warning (_("empty POWERSET tuple range"));
964 if (range_low < low_bound || range_high > high_bound)
965 error (_("POWERSET tuple element out of range"));
966 range_low -= low_bound;
967 range_high -= low_bound;
968 for (; range_low <= range_high; range_low++)
970 int bit_index = (unsigned) range_low % TARGET_CHAR_BIT;
972 if (gdbarch_bits_big_endian (exp->gdbarch))
973 bit_index = TARGET_CHAR_BIT - 1 - bit_index;
974 valaddr[(unsigned) range_low / TARGET_CHAR_BIT]
981 argvec = (struct value **) alloca (sizeof (struct value *) * nargs);
982 for (tem = 0; tem < nargs; tem++)
984 /* Ensure that array expressions are coerced into pointer
986 argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
988 if (noside == EVAL_SKIP)
990 return value_array (tem2, tem3, argvec);
994 struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
996 = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
998 = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
1000 if (noside == EVAL_SKIP)
1002 return value_slice (array, lowbound, upper - lowbound + 1);
1006 /* Skip third and second args to evaluate the first one. */
1007 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1008 if (value_logical_not (arg1))
1010 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
1011 return evaluate_subexp (NULL_TYPE, exp, pos, noside);
1015 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1016 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
1020 case OP_OBJC_SELECTOR:
1021 { /* Objective C @selector operator. */
1022 char *sel = &exp->elts[pc + 2].string;
1023 int len = longest_to_int (exp->elts[pc + 1].longconst);
1024 struct type *selector_type;
1026 (*pos) += 3 + BYTES_TO_EXP_ELEM (len + 1);
1027 if (noside == EVAL_SKIP)
1031 sel[len] = 0; /* Make sure it's terminated. */
1033 selector_type = builtin_type (exp->gdbarch)->builtin_data_ptr;
1034 return value_from_longest (selector_type,
1035 lookup_child_selector (exp->gdbarch, sel));
1038 case OP_OBJC_MSGCALL:
1039 { /* Objective C message (method) call. */
1041 CORE_ADDR responds_selector = 0;
1042 CORE_ADDR method_selector = 0;
1044 CORE_ADDR selector = 0;
1046 int struct_return = 0;
1047 int sub_no_side = 0;
1049 struct value *msg_send = NULL;
1050 struct value *msg_send_stret = NULL;
1051 int gnu_runtime = 0;
1053 struct value *target = NULL;
1054 struct value *method = NULL;
1055 struct value *called_method = NULL;
1057 struct type *selector_type = NULL;
1058 struct type *long_type;
1060 struct value *ret = NULL;
1063 selector = exp->elts[pc + 1].longconst;
1064 nargs = exp->elts[pc + 2].longconst;
1065 argvec = (struct value **) alloca (sizeof (struct value *)
1070 long_type = builtin_type (exp->gdbarch)->builtin_long;
1071 selector_type = builtin_type (exp->gdbarch)->builtin_data_ptr;
1073 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1074 sub_no_side = EVAL_NORMAL;
1076 sub_no_side = noside;
1078 target = evaluate_subexp (selector_type, exp, pos, sub_no_side);
1080 if (value_as_long (target) == 0)
1081 return value_from_longest (long_type, 0);
1083 if (lookup_minimal_symbol ("objc_msg_lookup", 0, 0).minsym)
1086 /* Find the method dispatch (Apple runtime) or method lookup
1087 (GNU runtime) function for Objective-C. These will be used
1088 to lookup the symbol information for the method. If we
1089 can't find any symbol information, then we'll use these to
1090 call the method, otherwise we can call the method
1091 directly. The msg_send_stret function is used in the special
1092 case of a method that returns a structure (Apple runtime
1096 struct type *type = selector_type;
1098 type = lookup_function_type (type);
1099 type = lookup_pointer_type (type);
1100 type = lookup_function_type (type);
1101 type = lookup_pointer_type (type);
1103 msg_send = find_function_in_inferior ("objc_msg_lookup", NULL);
1105 = find_function_in_inferior ("objc_msg_lookup", NULL);
1107 msg_send = value_from_pointer (type, value_as_address (msg_send));
1108 msg_send_stret = value_from_pointer (type,
1109 value_as_address (msg_send_stret));
1113 msg_send = find_function_in_inferior ("objc_msgSend", NULL);
1114 /* Special dispatcher for methods returning structs. */
1116 = find_function_in_inferior ("objc_msgSend_stret", NULL);
1119 /* Verify the target object responds to this method. The
1120 standard top-level 'Object' class uses a different name for
1121 the verification method than the non-standard, but more
1122 often used, 'NSObject' class. Make sure we check for both. */
1125 = lookup_child_selector (exp->gdbarch, "respondsToSelector:");
1126 if (responds_selector == 0)
1128 = lookup_child_selector (exp->gdbarch, "respondsTo:");
1130 if (responds_selector == 0)
1131 error (_("no 'respondsTo:' or 'respondsToSelector:' method"));
1134 = lookup_child_selector (exp->gdbarch, "methodForSelector:");
1135 if (method_selector == 0)
1137 = lookup_child_selector (exp->gdbarch, "methodFor:");
1139 if (method_selector == 0)
1140 error (_("no 'methodFor:' or 'methodForSelector:' method"));
1142 /* Call the verification method, to make sure that the target
1143 class implements the desired method. */
1145 argvec[0] = msg_send;
1147 argvec[2] = value_from_longest (long_type, responds_selector);
1148 argvec[3] = value_from_longest (long_type, selector);
1151 ret = call_function_by_hand (argvec[0], 3, argvec + 1);
1154 /* Function objc_msg_lookup returns a pointer. */
1156 ret = call_function_by_hand (argvec[0], 3, argvec + 1);
1158 if (value_as_long (ret) == 0)
1159 error (_("Target does not respond to this message selector."));
1161 /* Call "methodForSelector:" method, to get the address of a
1162 function method that implements this selector for this
1163 class. If we can find a symbol at that address, then we
1164 know the return type, parameter types etc. (that's a good
1167 argvec[0] = msg_send;
1169 argvec[2] = value_from_longest (long_type, method_selector);
1170 argvec[3] = value_from_longest (long_type, selector);
1173 ret = call_function_by_hand (argvec[0], 3, argvec + 1);
1177 ret = call_function_by_hand (argvec[0], 3, argvec + 1);
1180 /* ret should now be the selector. */
1182 addr = value_as_long (ret);
1185 struct symbol *sym = NULL;
1187 /* The address might point to a function descriptor;
1188 resolve it to the actual code address instead. */
1189 addr = gdbarch_convert_from_func_ptr_addr (exp->gdbarch, addr,
1192 /* Is it a high_level symbol? */
1193 sym = find_pc_function (addr);
1195 method = value_of_variable (sym, 0);
1198 /* If we found a method with symbol information, check to see
1199 if it returns a struct. Otherwise assume it doesn't. */
1204 struct type *val_type;
1206 funaddr = find_function_addr (method, &val_type);
1208 block_for_pc (funaddr);
1210 CHECK_TYPEDEF (val_type);
1212 if ((val_type == NULL)
1213 || (TYPE_CODE(val_type) == TYPE_CODE_ERROR))
1215 if (expect_type != NULL)
1216 val_type = expect_type;
1219 struct_return = using_struct_return (exp->gdbarch, method,
1222 else if (expect_type != NULL)
1224 struct_return = using_struct_return (exp->gdbarch, NULL,
1225 check_typedef (expect_type));
1228 /* Found a function symbol. Now we will substitute its
1229 value in place of the message dispatcher (obj_msgSend),
1230 so that we call the method directly instead of thru
1231 the dispatcher. The main reason for doing this is that
1232 we can now evaluate the return value and parameter values
1233 according to their known data types, in case we need to
1234 do things like promotion, dereferencing, special handling
1235 of structs and doubles, etc.
1237 We want to use the type signature of 'method', but still
1238 jump to objc_msgSend() or objc_msgSend_stret() to better
1239 mimic the behavior of the runtime. */
1243 if (TYPE_CODE (value_type (method)) != TYPE_CODE_FUNC)
1244 error (_("method address has symbol information "
1245 "with non-function type; skipping"));
1247 /* Create a function pointer of the appropriate type, and
1248 replace its value with the value of msg_send or
1249 msg_send_stret. We must use a pointer here, as
1250 msg_send and msg_send_stret are of pointer type, and
1251 the representation may be different on systems that use
1252 function descriptors. */
1255 = value_from_pointer (lookup_pointer_type (value_type (method)),
1256 value_as_address (msg_send_stret));
1259 = value_from_pointer (lookup_pointer_type (value_type (method)),
1260 value_as_address (msg_send));
1265 called_method = msg_send_stret;
1267 called_method = msg_send;
1270 if (noside == EVAL_SKIP)
1273 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1275 /* If the return type doesn't look like a function type,
1276 call an error. This can happen if somebody tries to
1277 turn a variable into a function call. This is here
1278 because people often want to call, eg, strcmp, which
1279 gdb doesn't know is a function. If gdb isn't asked for
1280 it's opinion (ie. through "whatis"), it won't offer
1283 struct type *type = value_type (called_method);
1285 if (type && TYPE_CODE (type) == TYPE_CODE_PTR)
1286 type = TYPE_TARGET_TYPE (type);
1287 type = TYPE_TARGET_TYPE (type);
1291 if ((TYPE_CODE (type) == TYPE_CODE_ERROR) && expect_type)
1292 return allocate_value (expect_type);
1294 return allocate_value (type);
1297 error (_("Expression of type other than "
1298 "\"method returning ...\" used as a method"));
1301 /* Now depending on whether we found a symbol for the method,
1302 we will either call the runtime dispatcher or the method
1305 argvec[0] = called_method;
1307 argvec[2] = value_from_longest (long_type, selector);
1308 /* User-supplied arguments. */
1309 for (tem = 0; tem < nargs; tem++)
1310 argvec[tem + 3] = evaluate_subexp_with_coercion (exp, pos, noside);
1311 argvec[tem + 3] = 0;
1313 if (gnu_runtime && (method != NULL))
1315 /* Function objc_msg_lookup returns a pointer. */
1316 deprecated_set_value_type (argvec[0],
1317 lookup_pointer_type (lookup_function_type (value_type (argvec[0]))));
1319 = call_function_by_hand (argvec[0], nargs + 2, argvec + 1);
1322 ret = call_function_by_hand (argvec[0], nargs + 2, argvec + 1);
1329 op = exp->elts[*pos].opcode;
1330 nargs = longest_to_int (exp->elts[pc + 1].longconst);
1331 /* Allocate arg vector, including space for the function to be
1332 called in argvec[0], a potential `this', and a terminating NULL. */
1333 argvec = (struct value **)
1334 alloca (sizeof (struct value *) * (nargs + 3));
1335 if (op == STRUCTOP_MEMBER || op == STRUCTOP_MPTR)
1337 /* First, evaluate the structure into arg2. */
1340 if (noside == EVAL_SKIP)
1343 if (op == STRUCTOP_MEMBER)
1345 arg2 = evaluate_subexp_for_address (exp, pos, noside);
1349 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1352 /* If the function is a virtual function, then the
1353 aggregate value (providing the structure) plays
1354 its part by providing the vtable. Otherwise,
1355 it is just along for the ride: call the function
1358 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1360 type = check_typedef (value_type (arg1));
1361 if (TYPE_CODE (type) == TYPE_CODE_METHODPTR)
1363 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1364 arg1 = value_zero (TYPE_TARGET_TYPE (type), not_lval);
1366 arg1 = cplus_method_ptr_to_value (&arg2, arg1);
1368 /* Now, say which argument to start evaluating from. */
1373 else if (TYPE_CODE (type) == TYPE_CODE_MEMBERPTR)
1375 struct type *type_ptr
1376 = lookup_pointer_type (TYPE_DOMAIN_TYPE (type));
1377 struct type *target_type_ptr
1378 = lookup_pointer_type (TYPE_TARGET_TYPE (type));
1380 /* Now, convert these values to an address. */
1381 arg2 = value_cast (type_ptr, arg2);
1383 mem_offset = value_as_long (arg1);
1385 arg1 = value_from_pointer (target_type_ptr,
1386 value_as_long (arg2) + mem_offset);
1387 arg1 = value_ind (arg1);
1391 error (_("Non-pointer-to-member value used in pointer-to-member "
1394 else if (op == STRUCTOP_STRUCT || op == STRUCTOP_PTR)
1396 /* Hair for method invocations. */
1400 /* First, evaluate the structure into arg2. */
1402 tem2 = longest_to_int (exp->elts[pc2 + 1].longconst);
1403 *pos += 3 + BYTES_TO_EXP_ELEM (tem2 + 1);
1404 if (noside == EVAL_SKIP)
1407 if (op == STRUCTOP_STRUCT)
1409 /* If v is a variable in a register, and the user types
1410 v.method (), this will produce an error, because v has
1413 A possible way around this would be to allocate a
1414 copy of the variable on the stack, copy in the
1415 contents, call the function, and copy out the
1416 contents. I.e. convert this from call by reference
1417 to call by copy-return (or whatever it's called).
1418 However, this does not work because it is not the
1419 same: the method being called could stash a copy of
1420 the address, and then future uses through that address
1421 (after the method returns) would be expected to
1422 use the variable itself, not some copy of it. */
1423 arg2 = evaluate_subexp_for_address (exp, pos, noside);
1427 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1429 /* Check to see if the operator '->' has been
1430 overloaded. If the operator has been overloaded
1431 replace arg2 with the value returned by the custom
1432 operator and continue evaluation. */
1433 while (unop_user_defined_p (op, arg2))
1435 volatile struct gdb_exception except;
1436 struct value *value = NULL;
1437 TRY_CATCH (except, RETURN_MASK_ERROR)
1439 value = value_x_unop (arg2, op, noside);
1442 if (except.reason < 0)
1444 if (except.error == NOT_FOUND_ERROR)
1447 throw_exception (except);
1452 /* Now, say which argument to start evaluating from. */
1455 else if (op == OP_SCOPE
1456 && overload_resolution
1457 && (exp->language_defn->la_language == language_cplus))
1459 /* Unpack it locally so we can properly handle overload
1465 local_tem = longest_to_int (exp->elts[pc2 + 2].longconst);
1466 (*pos) += 4 + BYTES_TO_EXP_ELEM (local_tem + 1);
1467 type = exp->elts[pc2 + 1].type;
1468 name = &exp->elts[pc2 + 3].string;
1471 function_name = NULL;
1472 if (TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
1474 function = cp_lookup_symbol_namespace (TYPE_TAG_NAME (type),
1476 get_selected_block (0),
1478 if (function == NULL)
1479 error (_("No symbol \"%s\" in namespace \"%s\"."),
1480 name, TYPE_TAG_NAME (type));
1483 /* arg2 is left as NULL on purpose. */
1487 gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
1488 || TYPE_CODE (type) == TYPE_CODE_UNION);
1489 function_name = name;
1491 /* We need a properly typed value for method lookup. For
1492 static methods arg2 is otherwise unused. */
1493 arg2 = value_zero (type, lval_memory);
1498 else if (op == OP_ADL_FUNC)
1500 /* Save the function position and move pos so that the arguments
1501 can be evaluated. */
1507 func_name_len = longest_to_int (exp->elts[save_pos1 + 3].longconst);
1508 (*pos) += 6 + BYTES_TO_EXP_ELEM (func_name_len + 1);
1512 /* Non-method function call. */
1516 /* If this is a C++ function wait until overload resolution. */
1517 if (op == OP_VAR_VALUE
1518 && overload_resolution
1519 && (exp->language_defn->la_language == language_cplus))
1521 (*pos) += 4; /* Skip the evaluation of the symbol. */
1526 argvec[0] = evaluate_subexp_with_coercion (exp, pos, noside);
1527 type = value_type (argvec[0]);
1528 if (type && TYPE_CODE (type) == TYPE_CODE_PTR)
1529 type = TYPE_TARGET_TYPE (type);
1530 if (type && TYPE_CODE (type) == TYPE_CODE_FUNC)
1532 for (; tem <= nargs && tem <= TYPE_NFIELDS (type); tem++)
1534 argvec[tem] = evaluate_subexp (TYPE_FIELD_TYPE (type,
1542 /* Evaluate arguments (if not already done, e.g., namespace::func()
1543 and overload-resolution is off). */
1544 for (; tem <= nargs; tem++)
1546 /* Ensure that array expressions are coerced into pointer
1548 argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
1551 /* Signal end of arglist. */
1554 if (op == OP_ADL_FUNC)
1556 struct symbol *symp;
1559 int string_pc = save_pos1 + 3;
1561 /* Extract the function name. */
1562 name_len = longest_to_int (exp->elts[string_pc].longconst);
1563 func_name = (char *) alloca (name_len + 1);
1564 strcpy (func_name, &exp->elts[string_pc + 1].string);
1566 find_overload_match (&argvec[1], nargs, func_name,
1567 NON_METHOD, /* not method */
1568 NULL, NULL, /* pass NULL symbol since
1569 symbol is unknown */
1570 NULL, &symp, NULL, 0);
1572 /* Now fix the expression being evaluated. */
1573 exp->elts[save_pos1 + 2].symbol = symp;
1574 argvec[0] = evaluate_subexp_with_coercion (exp, &save_pos1, noside);
1577 if (op == STRUCTOP_STRUCT || op == STRUCTOP_PTR
1578 || (op == OP_SCOPE && function_name != NULL))
1580 int static_memfuncp;
1583 /* Method invocation: stuff "this" as first parameter.
1584 If the method turns out to be static we undo this below. */
1589 /* Name of method from expression. */
1590 tstr = &exp->elts[pc2 + 2].string;
1593 tstr = function_name;
1595 if (overload_resolution && (exp->language_defn->la_language
1598 /* Language is C++, do some overload resolution before
1600 struct value *valp = NULL;
1602 (void) find_overload_match (&argvec[1], nargs, tstr,
1603 METHOD, /* method */
1604 &arg2, /* the object */
1606 &static_memfuncp, 0);
1608 if (op == OP_SCOPE && !static_memfuncp)
1610 /* For the time being, we don't handle this. */
1611 error (_("Call to overloaded function %s requires "
1615 argvec[1] = arg2; /* the ``this'' pointer */
1616 argvec[0] = valp; /* Use the method found after overload
1620 /* Non-C++ case -- or no overload resolution. */
1622 struct value *temp = arg2;
1624 argvec[0] = value_struct_elt (&temp, argvec + 1, tstr,
1626 op == STRUCTOP_STRUCT
1627 ? "structure" : "structure pointer");
1628 /* value_struct_elt updates temp with the correct value
1629 of the ``this'' pointer if necessary, so modify argvec[1] to
1630 reflect any ``this'' changes. */
1632 = value_from_longest (lookup_pointer_type(value_type (temp)),
1633 value_address (temp)
1634 + value_embedded_offset (temp));
1635 argvec[1] = arg2; /* the ``this'' pointer */
1638 /* Take out `this' if needed. */
1639 if (static_memfuncp)
1641 argvec[1] = argvec[0];
1646 else if (op == STRUCTOP_MEMBER || op == STRUCTOP_MPTR)
1648 /* Pointer to member. argvec[1] is already set up. */
1651 else if (op == OP_VAR_VALUE || (op == OP_SCOPE && function != NULL))
1653 /* Non-member function being called. */
1654 /* fn: This can only be done for C++ functions. A C-style function
1655 in a C++ program, for instance, does not have the fields that
1656 are expected here. */
1658 if (overload_resolution && (exp->language_defn->la_language
1661 /* Language is C++, do some overload resolution before
1663 struct symbol *symp;
1666 /* If a scope has been specified disable ADL. */
1670 if (op == OP_VAR_VALUE)
1671 function = exp->elts[save_pos1+2].symbol;
1673 (void) find_overload_match (&argvec[1], nargs,
1674 NULL, /* no need for name */
1675 NON_METHOD, /* not method */
1676 NULL, function, /* the function */
1677 NULL, &symp, NULL, no_adl);
1679 if (op == OP_VAR_VALUE)
1681 /* Now fix the expression being evaluated. */
1682 exp->elts[save_pos1+2].symbol = symp;
1683 argvec[0] = evaluate_subexp_with_coercion (exp, &save_pos1,
1687 argvec[0] = value_of_variable (symp, get_selected_block (0));
1691 /* Not C++, or no overload resolution allowed. */
1692 /* Nothing to be done; argvec already correctly set up. */
1697 /* It is probably a C-style function. */
1698 /* Nothing to be done; argvec already correctly set up. */
1703 if (noside == EVAL_SKIP)
1705 if (argvec[0] == NULL)
1706 error (_("Cannot evaluate function -- may be inlined"));
1707 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1709 /* If the return type doesn't look like a function type, call an
1710 error. This can happen if somebody tries to turn a variable into
1711 a function call. This is here because people often want to
1712 call, eg, strcmp, which gdb doesn't know is a function. If
1713 gdb isn't asked for it's opinion (ie. through "whatis"),
1714 it won't offer it. */
1716 struct type *ftype = value_type (argvec[0]);
1718 if (TYPE_CODE (ftype) == TYPE_CODE_INTERNAL_FUNCTION)
1720 /* We don't know anything about what the internal
1721 function might return, but we have to return
1723 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
1726 else if (TYPE_GNU_IFUNC (ftype))
1727 return allocate_value (TYPE_TARGET_TYPE (TYPE_TARGET_TYPE (ftype)));
1728 else if (TYPE_TARGET_TYPE (ftype))
1729 return allocate_value (TYPE_TARGET_TYPE (ftype));
1731 error (_("Expression of type other than "
1732 "\"Function returning ...\" used as function"));
1734 switch (TYPE_CODE (value_type (argvec[0])))
1736 case TYPE_CODE_INTERNAL_FUNCTION:
1737 return call_internal_function (exp->gdbarch, exp->language_defn,
1738 argvec[0], nargs, argvec + 1);
1739 case TYPE_CODE_XMETHOD:
1740 return call_xmethod (argvec[0], nargs, argvec + 1);
1742 return call_function_by_hand (argvec[0], nargs, argvec + 1);
1744 /* pai: FIXME save value from call_function_by_hand, then adjust
1745 pc by adjust_fn_pc if +ve. */
1747 case OP_F77_UNDETERMINED_ARGLIST:
1749 /* Remember that in F77, functions, substring ops and
1750 array subscript operations cannot be disambiguated
1751 at parse time. We have made all array subscript operations,
1752 substring operations as well as function calls come here
1753 and we now have to discover what the heck this thing actually was.
1754 If it is a function, we process just as if we got an OP_FUNCALL. */
1756 nargs = longest_to_int (exp->elts[pc + 1].longconst);
1759 /* First determine the type code we are dealing with. */
1760 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1761 type = check_typedef (value_type (arg1));
1762 code = TYPE_CODE (type);
1764 if (code == TYPE_CODE_PTR)
1766 /* Fortran always passes variable to subroutines as pointer.
1767 So we need to look into its target type to see if it is
1768 array, string or function. If it is, we need to switch
1769 to the target value the original one points to. */
1770 struct type *target_type = check_typedef (TYPE_TARGET_TYPE (type));
1772 if (TYPE_CODE (target_type) == TYPE_CODE_ARRAY
1773 || TYPE_CODE (target_type) == TYPE_CODE_STRING
1774 || TYPE_CODE (target_type) == TYPE_CODE_FUNC)
1776 arg1 = value_ind (arg1);
1777 type = check_typedef (value_type (arg1));
1778 code = TYPE_CODE (type);
1784 case TYPE_CODE_ARRAY:
1785 if (exp->elts[*pos].opcode == OP_F90_RANGE)
1786 return value_f90_subarray (arg1, exp, pos, noside);
1788 goto multi_f77_subscript;
1790 case TYPE_CODE_STRING:
1791 if (exp->elts[*pos].opcode == OP_F90_RANGE)
1792 return value_f90_subarray (arg1, exp, pos, noside);
1795 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
1796 return value_subscript (arg1, value_as_long (arg2));
1800 case TYPE_CODE_FUNC:
1801 /* It's a function call. */
1802 /* Allocate arg vector, including space for the function to be
1803 called in argvec[0] and a terminating NULL. */
1804 argvec = (struct value **)
1805 alloca (sizeof (struct value *) * (nargs + 2));
1808 for (; tem <= nargs; tem++)
1809 argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
1810 argvec[tem] = 0; /* signal end of arglist */
1814 error (_("Cannot perform substring on this type"));
1818 /* We have a complex number, There should be 2 floating
1819 point numbers that compose it. */
1821 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1822 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1824 return value_literal_complex (arg1, arg2, exp->elts[pc + 1].type);
1826 case STRUCTOP_STRUCT:
1827 tem = longest_to_int (exp->elts[pc + 1].longconst);
1828 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
1829 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1830 if (noside == EVAL_SKIP)
1832 arg3 = value_struct_elt (&arg1, NULL, &exp->elts[pc + 2].string,
1834 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1835 arg3 = value_zero (value_type (arg3), not_lval);
1839 tem = longest_to_int (exp->elts[pc + 1].longconst);
1840 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
1841 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1842 if (noside == EVAL_SKIP)
1845 /* Check to see if operator '->' has been overloaded. If so replace
1846 arg1 with the value returned by evaluating operator->(). */
1847 while (unop_user_defined_p (op, arg1))
1849 volatile struct gdb_exception except;
1850 struct value *value = NULL;
1851 TRY_CATCH (except, RETURN_MASK_ERROR)
1853 value = value_x_unop (arg1, op, noside);
1856 if (except.reason < 0)
1858 if (except.error == NOT_FOUND_ERROR)
1861 throw_exception (except);
1866 /* JYG: if print object is on we need to replace the base type
1867 with rtti type in order to continue on with successful
1868 lookup of member / method only available in the rtti type. */
1870 struct type *type = value_type (arg1);
1871 struct type *real_type;
1872 int full, top, using_enc;
1873 struct value_print_options opts;
1875 get_user_print_options (&opts);
1876 if (opts.objectprint && TYPE_TARGET_TYPE(type)
1877 && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_CLASS))
1879 real_type = value_rtti_indirect_type (arg1, &full, &top,
1882 arg1 = value_cast (real_type, arg1);
1886 arg3 = value_struct_elt (&arg1, NULL, &exp->elts[pc + 2].string,
1887 NULL, "structure pointer");
1888 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1889 arg3 = value_zero (value_type (arg3), not_lval);
1892 case STRUCTOP_MEMBER:
1894 if (op == STRUCTOP_MEMBER)
1895 arg1 = evaluate_subexp_for_address (exp, pos, noside);
1897 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1899 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1901 if (noside == EVAL_SKIP)
1904 type = check_typedef (value_type (arg2));
1905 switch (TYPE_CODE (type))
1907 case TYPE_CODE_METHODPTR:
1908 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1909 return value_zero (TYPE_TARGET_TYPE (type), not_lval);
1912 arg2 = cplus_method_ptr_to_value (&arg1, arg2);
1913 gdb_assert (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR);
1914 return value_ind (arg2);
1917 case TYPE_CODE_MEMBERPTR:
1918 /* Now, convert these values to an address. */
1919 arg1 = value_cast_pointers (lookup_pointer_type (TYPE_DOMAIN_TYPE (type)),
1922 mem_offset = value_as_long (arg2);
1924 arg3 = value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
1925 value_as_long (arg1) + mem_offset);
1926 return value_ind (arg3);
1929 error (_("non-pointer-to-member value used "
1930 "in pointer-to-member construct"));
1934 nargs = longest_to_int (exp->elts[pc + 1].longconst);
1935 arg_types = (struct type **) alloca (nargs * sizeof (struct type *));
1936 for (ix = 0; ix < nargs; ++ix)
1937 arg_types[ix] = exp->elts[pc + 1 + ix + 1].type;
1939 expect_type = make_params (nargs, arg_types);
1940 *(pos) += 3 + nargs;
1941 arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
1942 xfree (TYPE_FIELDS (expect_type));
1943 xfree (TYPE_MAIN_TYPE (expect_type));
1944 xfree (expect_type);
1948 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
1949 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
1950 if (noside == EVAL_SKIP)
1952 if (binop_user_defined_p (op, arg1, arg2))
1953 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1955 return value_concat (arg1, arg2);
1958 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1959 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
1961 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
1963 if (binop_user_defined_p (op, arg1, arg2))
1964 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1966 return value_assign (arg1, arg2);
1968 case BINOP_ASSIGN_MODIFY:
1970 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1971 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
1972 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
1974 op = exp->elts[pc + 1].opcode;
1975 if (binop_user_defined_p (op, arg1, arg2))
1976 return value_x_binop (arg1, arg2, BINOP_ASSIGN_MODIFY, op, noside);
1977 else if (op == BINOP_ADD && ptrmath_type_p (exp->language_defn,
1979 && is_integral_type (value_type (arg2)))
1980 arg2 = value_ptradd (arg1, value_as_long (arg2));
1981 else if (op == BINOP_SUB && ptrmath_type_p (exp->language_defn,
1983 && is_integral_type (value_type (arg2)))
1984 arg2 = value_ptradd (arg1, - value_as_long (arg2));
1987 struct value *tmp = arg1;
1989 /* For shift and integer exponentiation operations,
1990 only promote the first argument. */
1991 if ((op == BINOP_LSH || op == BINOP_RSH || op == BINOP_EXP)
1992 && is_integral_type (value_type (arg2)))
1993 unop_promote (exp->language_defn, exp->gdbarch, &tmp);
1995 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
1997 arg2 = value_binop (tmp, arg2, op);
1999 return value_assign (arg1, arg2);
2002 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
2003 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
2004 if (noside == EVAL_SKIP)
2006 if (binop_user_defined_p (op, arg1, arg2))
2007 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2008 else if (ptrmath_type_p (exp->language_defn, value_type (arg1))
2009 && is_integral_type (value_type (arg2)))
2010 return value_ptradd (arg1, value_as_long (arg2));
2011 else if (ptrmath_type_p (exp->language_defn, value_type (arg2))
2012 && is_integral_type (value_type (arg1)))
2013 return value_ptradd (arg2, value_as_long (arg1));
2016 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2017 return value_binop (arg1, arg2, BINOP_ADD);
2021 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
2022 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
2023 if (noside == EVAL_SKIP)
2025 if (binop_user_defined_p (op, arg1, arg2))
2026 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2027 else if (ptrmath_type_p (exp->language_defn, value_type (arg1))
2028 && ptrmath_type_p (exp->language_defn, value_type (arg2)))
2030 /* FIXME -- should be ptrdiff_t */
2031 type = builtin_type (exp->gdbarch)->builtin_long;
2032 return value_from_longest (type, value_ptrdiff (arg1, arg2));
2034 else if (ptrmath_type_p (exp->language_defn, value_type (arg1))
2035 && is_integral_type (value_type (arg2)))
2036 return value_ptradd (arg1, - value_as_long (arg2));
2039 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2040 return value_binop (arg1, arg2, BINOP_SUB);
2051 case BINOP_BITWISE_AND:
2052 case BINOP_BITWISE_IOR:
2053 case BINOP_BITWISE_XOR:
2054 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2055 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2056 if (noside == EVAL_SKIP)
2058 if (binop_user_defined_p (op, arg1, arg2))
2059 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2062 /* If EVAL_AVOID_SIDE_EFFECTS and we're dividing by zero,
2063 fudge arg2 to avoid division-by-zero, the caller is
2064 (theoretically) only looking for the type of the result. */
2065 if (noside == EVAL_AVOID_SIDE_EFFECTS
2066 /* ??? Do we really want to test for BINOP_MOD here?
2067 The implementation of value_binop gives it a well-defined
2070 || op == BINOP_INTDIV
2073 && value_logical_not (arg2))
2075 struct value *v_one, *retval;
2077 v_one = value_one (value_type (arg2));
2078 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &v_one);
2079 retval = value_binop (arg1, v_one, op);
2084 /* For shift and integer exponentiation operations,
2085 only promote the first argument. */
2086 if ((op == BINOP_LSH || op == BINOP_RSH || op == BINOP_EXP)
2087 && is_integral_type (value_type (arg2)))
2088 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
2090 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2092 return value_binop (arg1, arg2, op);
2096 case BINOP_SUBSCRIPT:
2097 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2098 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2099 if (noside == EVAL_SKIP)
2101 if (binop_user_defined_p (op, arg1, arg2))
2102 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2105 /* If the user attempts to subscript something that is not an
2106 array or pointer type (like a plain int variable for example),
2107 then report this as an error. */
2109 arg1 = coerce_ref (arg1);
2110 type = check_typedef (value_type (arg1));
2111 if (TYPE_CODE (type) != TYPE_CODE_ARRAY
2112 && TYPE_CODE (type) != TYPE_CODE_PTR)
2114 if (TYPE_NAME (type))
2115 error (_("cannot subscript something of type `%s'"),
2118 error (_("cannot subscript requested type"));
2121 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2122 return value_zero (TYPE_TARGET_TYPE (type), VALUE_LVAL (arg1));
2124 return value_subscript (arg1, value_as_long (arg2));
2126 case MULTI_SUBSCRIPT:
2128 nargs = longest_to_int (exp->elts[pc + 1].longconst);
2129 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
2132 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
2133 /* FIXME: EVAL_SKIP handling may not be correct. */
2134 if (noside == EVAL_SKIP)
2145 /* FIXME: EVAL_AVOID_SIDE_EFFECTS handling may not be correct. */
2146 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2148 /* If the user attempts to subscript something that has no target
2149 type (like a plain int variable for example), then report this
2152 type = TYPE_TARGET_TYPE (check_typedef (value_type (arg1)));
2155 arg1 = value_zero (type, VALUE_LVAL (arg1));
2161 error (_("cannot subscript something of type `%s'"),
2162 TYPE_NAME (value_type (arg1)));
2166 if (binop_user_defined_p (op, arg1, arg2))
2168 arg1 = value_x_binop (arg1, arg2, op, OP_NULL, noside);
2172 arg1 = coerce_ref (arg1);
2173 type = check_typedef (value_type (arg1));
2175 switch (TYPE_CODE (type))
2178 case TYPE_CODE_ARRAY:
2179 case TYPE_CODE_STRING:
2180 arg1 = value_subscript (arg1, value_as_long (arg2));
2184 if (TYPE_NAME (type))
2185 error (_("cannot subscript something of type `%s'"),
2188 error (_("cannot subscript requested type"));
2194 multi_f77_subscript:
2196 LONGEST subscript_array[MAX_FORTRAN_DIMS];
2197 int ndimensions = 1, i;
2198 struct value *array = arg1;
2200 if (nargs > MAX_FORTRAN_DIMS)
2201 error (_("Too many subscripts for F77 (%d Max)"), MAX_FORTRAN_DIMS);
2203 ndimensions = calc_f77_array_dims (type);
2205 if (nargs != ndimensions)
2206 error (_("Wrong number of subscripts"));
2208 gdb_assert (nargs > 0);
2210 /* Now that we know we have a legal array subscript expression
2211 let us actually find out where this element exists in the array. */
2213 /* Take array indices left to right. */
2214 for (i = 0; i < nargs; i++)
2216 /* Evaluate each subscript; it must be a legal integer in F77. */
2217 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
2219 /* Fill in the subscript array. */
2221 subscript_array[i] = value_as_long (arg2);
2224 /* Internal type of array is arranged right to left. */
2225 for (i = nargs; i > 0; i--)
2227 struct type *array_type = check_typedef (value_type (array));
2228 LONGEST index = subscript_array[i - 1];
2230 array = value_subscripted_rvalue (array, index,
2231 f77_get_lowerbound (array_type));
2237 case BINOP_LOGICAL_AND:
2238 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2239 if (noside == EVAL_SKIP)
2241 evaluate_subexp (NULL_TYPE, exp, pos, noside);
2246 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2249 if (binop_user_defined_p (op, arg1, arg2))
2251 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2252 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2256 tem = value_logical_not (arg1);
2257 arg2 = evaluate_subexp (NULL_TYPE, exp, pos,
2258 (tem ? EVAL_SKIP : noside));
2259 type = language_bool_type (exp->language_defn, exp->gdbarch);
2260 return value_from_longest (type,
2261 (LONGEST) (!tem && !value_logical_not (arg2)));
2264 case BINOP_LOGICAL_OR:
2265 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2266 if (noside == EVAL_SKIP)
2268 evaluate_subexp (NULL_TYPE, exp, pos, noside);
2273 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2276 if (binop_user_defined_p (op, arg1, arg2))
2278 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2279 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2283 tem = value_logical_not (arg1);
2284 arg2 = evaluate_subexp (NULL_TYPE, exp, pos,
2285 (!tem ? EVAL_SKIP : noside));
2286 type = language_bool_type (exp->language_defn, exp->gdbarch);
2287 return value_from_longest (type,
2288 (LONGEST) (!tem || !value_logical_not (arg2)));
2292 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2293 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2294 if (noside == EVAL_SKIP)
2296 if (binop_user_defined_p (op, arg1, arg2))
2298 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2302 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2303 tem = value_equal (arg1, arg2);
2304 type = language_bool_type (exp->language_defn, exp->gdbarch);
2305 return value_from_longest (type, (LONGEST) tem);
2308 case BINOP_NOTEQUAL:
2309 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2310 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2311 if (noside == EVAL_SKIP)
2313 if (binop_user_defined_p (op, arg1, arg2))
2315 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2319 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2320 tem = value_equal (arg1, arg2);
2321 type = language_bool_type (exp->language_defn, exp->gdbarch);
2322 return value_from_longest (type, (LONGEST) ! tem);
2326 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2327 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2328 if (noside == EVAL_SKIP)
2330 if (binop_user_defined_p (op, arg1, arg2))
2332 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2336 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2337 tem = value_less (arg1, arg2);
2338 type = language_bool_type (exp->language_defn, exp->gdbarch);
2339 return value_from_longest (type, (LONGEST) tem);
2343 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2344 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2345 if (noside == EVAL_SKIP)
2347 if (binop_user_defined_p (op, arg1, arg2))
2349 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2353 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2354 tem = value_less (arg2, arg1);
2355 type = language_bool_type (exp->language_defn, exp->gdbarch);
2356 return value_from_longest (type, (LONGEST) tem);
2360 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2361 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2362 if (noside == EVAL_SKIP)
2364 if (binop_user_defined_p (op, arg1, arg2))
2366 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2370 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2371 tem = value_less (arg2, arg1) || value_equal (arg1, arg2);
2372 type = language_bool_type (exp->language_defn, exp->gdbarch);
2373 return value_from_longest (type, (LONGEST) tem);
2377 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2378 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2379 if (noside == EVAL_SKIP)
2381 if (binop_user_defined_p (op, arg1, arg2))
2383 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2387 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2388 tem = value_less (arg1, arg2) || value_equal (arg1, arg2);
2389 type = language_bool_type (exp->language_defn, exp->gdbarch);
2390 return value_from_longest (type, (LONGEST) tem);
2394 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2395 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2396 if (noside == EVAL_SKIP)
2398 type = check_typedef (value_type (arg2));
2399 if (TYPE_CODE (type) != TYPE_CODE_INT)
2400 error (_("Non-integral right operand for \"@\" operator."));
2401 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2403 return allocate_repeat_value (value_type (arg1),
2404 longest_to_int (value_as_long (arg2)));
2407 return value_repeat (arg1, longest_to_int (value_as_long (arg2)));
2410 evaluate_subexp (NULL_TYPE, exp, pos, noside);
2411 return evaluate_subexp (NULL_TYPE, exp, pos, noside);
2414 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2415 if (noside == EVAL_SKIP)
2417 if (unop_user_defined_p (op, arg1))
2418 return value_x_unop (arg1, op, noside);
2421 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
2422 return value_pos (arg1);
2426 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2427 if (noside == EVAL_SKIP)
2429 if (unop_user_defined_p (op, arg1))
2430 return value_x_unop (arg1, op, noside);
2433 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
2434 return value_neg (arg1);
2437 case UNOP_COMPLEMENT:
2438 /* C++: check for and handle destructor names. */
2439 op = exp->elts[*pos].opcode;
2441 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2442 if (noside == EVAL_SKIP)
2444 if (unop_user_defined_p (UNOP_COMPLEMENT, arg1))
2445 return value_x_unop (arg1, UNOP_COMPLEMENT, noside);
2448 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
2449 return value_complement (arg1);
2452 case UNOP_LOGICAL_NOT:
2453 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2454 if (noside == EVAL_SKIP)
2456 if (unop_user_defined_p (op, arg1))
2457 return value_x_unop (arg1, op, noside);
2460 type = language_bool_type (exp->language_defn, exp->gdbarch);
2461 return value_from_longest (type, (LONGEST) value_logical_not (arg1));
2465 if (expect_type && TYPE_CODE (expect_type) == TYPE_CODE_PTR)
2466 expect_type = TYPE_TARGET_TYPE (check_typedef (expect_type));
2467 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2468 type = check_typedef (value_type (arg1));
2469 if (TYPE_CODE (type) == TYPE_CODE_METHODPTR
2470 || TYPE_CODE (type) == TYPE_CODE_MEMBERPTR)
2471 error (_("Attempt to dereference pointer "
2472 "to member without an object"));
2473 if (noside == EVAL_SKIP)
2475 if (unop_user_defined_p (op, arg1))
2476 return value_x_unop (arg1, op, noside);
2477 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2479 type = check_typedef (value_type (arg1));
2480 if (TYPE_CODE (type) == TYPE_CODE_PTR
2481 || TYPE_CODE (type) == TYPE_CODE_REF
2482 /* In C you can dereference an array to get the 1st elt. */
2483 || TYPE_CODE (type) == TYPE_CODE_ARRAY
2485 return value_zero (TYPE_TARGET_TYPE (type),
2487 else if (TYPE_CODE (type) == TYPE_CODE_INT)
2488 /* GDB allows dereferencing an int. */
2489 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
2492 error (_("Attempt to take contents of a non-pointer value."));
2495 /* Allow * on an integer so we can cast it to whatever we want.
2496 This returns an int, which seems like the most C-like thing to
2497 do. "long long" variables are rare enough that
2498 BUILTIN_TYPE_LONGEST would seem to be a mistake. */
2499 if (TYPE_CODE (type) == TYPE_CODE_INT)
2500 return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
2501 (CORE_ADDR) value_as_address (arg1));
2502 return value_ind (arg1);
2505 /* C++: check for and handle pointer to members. */
2507 op = exp->elts[*pos].opcode;
2509 if (noside == EVAL_SKIP)
2511 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
2516 struct value *retvalp = evaluate_subexp_for_address (exp, pos,
2523 if (noside == EVAL_SKIP)
2525 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
2528 return evaluate_subexp_for_sizeof (exp, pos, noside);
2532 type = exp->elts[pc + 1].type;
2533 arg1 = evaluate_subexp (type, exp, pos, noside);
2534 if (noside == EVAL_SKIP)
2536 if (type != value_type (arg1))
2537 arg1 = value_cast (type, arg1);
2540 case UNOP_CAST_TYPE:
2541 arg1 = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2542 type = value_type (arg1);
2543 arg1 = evaluate_subexp (type, exp, pos, noside);
2544 if (noside == EVAL_SKIP)
2546 if (type != value_type (arg1))
2547 arg1 = value_cast (type, arg1);
2550 case UNOP_DYNAMIC_CAST:
2551 arg1 = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2552 type = value_type (arg1);
2553 arg1 = evaluate_subexp (type, exp, pos, noside);
2554 if (noside == EVAL_SKIP)
2556 return value_dynamic_cast (type, arg1);
2558 case UNOP_REINTERPRET_CAST:
2559 arg1 = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2560 type = value_type (arg1);
2561 arg1 = evaluate_subexp (type, exp, pos, noside);
2562 if (noside == EVAL_SKIP)
2564 return value_reinterpret_cast (type, arg1);
2568 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2569 if (noside == EVAL_SKIP)
2571 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2572 return value_zero (exp->elts[pc + 1].type, lval_memory);
2574 return value_at_lazy (exp->elts[pc + 1].type,
2575 value_as_address (arg1));
2577 case UNOP_MEMVAL_TYPE:
2578 arg1 = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2579 type = value_type (arg1);
2580 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2581 if (noside == EVAL_SKIP)
2583 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2584 return value_zero (type, lval_memory);
2586 return value_at_lazy (type, value_as_address (arg1));
2588 case UNOP_MEMVAL_TLS:
2590 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2591 if (noside == EVAL_SKIP)
2593 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2594 return value_zero (exp->elts[pc + 2].type, lval_memory);
2599 tls_addr = target_translate_tls_address (exp->elts[pc + 1].objfile,
2600 value_as_address (arg1));
2601 return value_at_lazy (exp->elts[pc + 2].type, tls_addr);
2604 case UNOP_PREINCREMENT:
2605 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2606 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2608 else if (unop_user_defined_p (op, arg1))
2610 return value_x_unop (arg1, op, noside);
2614 if (ptrmath_type_p (exp->language_defn, value_type (arg1)))
2615 arg2 = value_ptradd (arg1, 1);
2618 struct value *tmp = arg1;
2620 arg2 = value_one (value_type (arg1));
2621 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2622 arg2 = value_binop (tmp, arg2, BINOP_ADD);
2625 return value_assign (arg1, arg2);
2628 case UNOP_PREDECREMENT:
2629 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2630 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2632 else if (unop_user_defined_p (op, arg1))
2634 return value_x_unop (arg1, op, noside);
2638 if (ptrmath_type_p (exp->language_defn, value_type (arg1)))
2639 arg2 = value_ptradd (arg1, -1);
2642 struct value *tmp = arg1;
2644 arg2 = value_one (value_type (arg1));
2645 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2646 arg2 = value_binop (tmp, arg2, BINOP_SUB);
2649 return value_assign (arg1, arg2);
2652 case UNOP_POSTINCREMENT:
2653 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2654 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2656 else if (unop_user_defined_p (op, arg1))
2658 return value_x_unop (arg1, op, noside);
2662 arg3 = value_non_lval (arg1);
2664 if (ptrmath_type_p (exp->language_defn, value_type (arg1)))
2665 arg2 = value_ptradd (arg1, 1);
2668 struct value *tmp = arg1;
2670 arg2 = value_one (value_type (arg1));
2671 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2672 arg2 = value_binop (tmp, arg2, BINOP_ADD);
2675 value_assign (arg1, arg2);
2679 case UNOP_POSTDECREMENT:
2680 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2681 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2683 else if (unop_user_defined_p (op, arg1))
2685 return value_x_unop (arg1, op, noside);
2689 arg3 = value_non_lval (arg1);
2691 if (ptrmath_type_p (exp->language_defn, value_type (arg1)))
2692 arg2 = value_ptradd (arg1, -1);
2695 struct value *tmp = arg1;
2697 arg2 = value_one (value_type (arg1));
2698 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2699 arg2 = value_binop (tmp, arg2, BINOP_SUB);
2702 value_assign (arg1, arg2);
2708 return value_of_this (exp->language_defn);
2711 /* The value is not supposed to be used. This is here to make it
2712 easier to accommodate expressions that contain types. */
2714 if (noside == EVAL_SKIP)
2716 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2718 struct type *type = exp->elts[pc + 1].type;
2720 /* If this is a typedef, then find its immediate target. We
2721 use check_typedef to resolve stubs, but we ignore its
2722 result because we do not want to dig past all
2724 check_typedef (type);
2725 if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2726 type = TYPE_TARGET_TYPE (type);
2727 return allocate_value (type);
2730 error (_("Attempt to use a type name as an expression"));
2734 if (noside == EVAL_SKIP)
2736 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
2739 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2741 enum exp_opcode sub_op = exp->elts[*pos].opcode;
2742 struct value *result;
2744 result = evaluate_subexp (NULL_TYPE, exp, pos,
2745 EVAL_AVOID_SIDE_EFFECTS);
2747 /* 'decltype' has special semantics for lvalues. */
2748 if (op == OP_DECLTYPE
2749 && (sub_op == BINOP_SUBSCRIPT
2750 || sub_op == STRUCTOP_MEMBER
2751 || sub_op == STRUCTOP_MPTR
2752 || sub_op == UNOP_IND
2753 || sub_op == STRUCTOP_STRUCT
2754 || sub_op == STRUCTOP_PTR
2755 || sub_op == OP_SCOPE))
2757 struct type *type = value_type (result);
2759 if (TYPE_CODE (check_typedef (type)) != TYPE_CODE_REF)
2761 type = lookup_reference_type (type);
2762 result = allocate_value (type);
2769 error (_("Attempt to use a type as an expression"));
2773 struct value *result;
2774 enum exp_opcode sub_op = exp->elts[*pos].opcode;
2776 if (sub_op == OP_TYPE || sub_op == OP_DECLTYPE || sub_op == OP_TYPEOF)
2777 result = evaluate_subexp (NULL_TYPE, exp, pos,
2778 EVAL_AVOID_SIDE_EFFECTS);
2780 result = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2782 if (noside != EVAL_NORMAL)
2783 return allocate_value (cplus_typeid_type (exp->gdbarch));
2785 return cplus_typeid (result);
2789 /* Removing this case and compiling with gcc -Wall reveals that
2790 a lot of cases are hitting this case. Some of these should
2791 probably be removed from expression.h; others are legitimate
2792 expressions which are (apparently) not fully implemented.
2794 If there are any cases landing here which mean a user error,
2795 then they should be separate cases, with more descriptive
2798 error (_("GDB does not (yet) know how to "
2799 "evaluate that kind of expression"));
2803 return value_from_longest (builtin_type (exp->gdbarch)->builtin_int, 1);
2806 /* Evaluate a subexpression of EXP, at index *POS,
2807 and return the address of that subexpression.
2808 Advance *POS over the subexpression.
2809 If the subexpression isn't an lvalue, get an error.
2810 NOSIDE may be EVAL_AVOID_SIDE_EFFECTS;
2811 then only the type of the result need be correct. */
2813 static struct value *
2814 evaluate_subexp_for_address (struct expression *exp, int *pos,
2824 op = exp->elts[pc].opcode;
2830 x = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2832 /* We can't optimize out "&*" if there's a user-defined operator*. */
2833 if (unop_user_defined_p (op, x))
2835 x = value_x_unop (x, op, noside);
2836 goto default_case_after_eval;
2839 return coerce_array (x);
2843 return value_cast (lookup_pointer_type (exp->elts[pc + 1].type),
2844 evaluate_subexp (NULL_TYPE, exp, pos, noside));
2846 case UNOP_MEMVAL_TYPE:
2851 x = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2852 type = value_type (x);
2853 return value_cast (lookup_pointer_type (type),
2854 evaluate_subexp (NULL_TYPE, exp, pos, noside));
2858 var = exp->elts[pc + 2].symbol;
2860 /* C++: The "address" of a reference should yield the address
2861 * of the object pointed to. Let value_addr() deal with it. */
2862 if (TYPE_CODE (SYMBOL_TYPE (var)) == TYPE_CODE_REF)
2866 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2869 lookup_pointer_type (SYMBOL_TYPE (var));
2870 enum address_class sym_class = SYMBOL_CLASS (var);
2872 if (sym_class == LOC_CONST
2873 || sym_class == LOC_CONST_BYTES
2874 || sym_class == LOC_REGISTER)
2875 error (_("Attempt to take address of register or constant."));
2878 value_zero (type, not_lval);
2881 return address_of_variable (var, exp->elts[pc + 1].block);
2884 tem = longest_to_int (exp->elts[pc + 2].longconst);
2885 (*pos) += 5 + BYTES_TO_EXP_ELEM (tem + 1);
2886 x = value_aggregate_elt (exp->elts[pc + 1].type,
2887 &exp->elts[pc + 3].string,
2890 error (_("There is no field named %s"), &exp->elts[pc + 3].string);
2895 x = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2896 default_case_after_eval:
2897 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2899 struct type *type = check_typedef (value_type (x));
2901 if (TYPE_CODE (type) == TYPE_CODE_REF)
2902 return value_zero (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2904 else if (VALUE_LVAL (x) == lval_memory || value_must_coerce_to_target (x))
2905 return value_zero (lookup_pointer_type (value_type (x)),
2908 error (_("Attempt to take address of "
2909 "value not located in memory."));
2911 return value_addr (x);
2915 /* Evaluate like `evaluate_subexp' except coercing arrays to pointers.
2916 When used in contexts where arrays will be coerced anyway, this is
2917 equivalent to `evaluate_subexp' but much faster because it avoids
2918 actually fetching array contents (perhaps obsolete now that we have
2921 Note that we currently only do the coercion for C expressions, where
2922 arrays are zero based and the coercion is correct. For other languages,
2923 with nonzero based arrays, coercion loses. Use CAST_IS_CONVERSION
2924 to decide if coercion is appropriate. */
2927 evaluate_subexp_with_coercion (struct expression *exp,
2928 int *pos, enum noside noside)
2937 op = exp->elts[pc].opcode;
2942 var = exp->elts[pc + 2].symbol;
2943 type = check_typedef (SYMBOL_TYPE (var));
2944 if (TYPE_CODE (type) == TYPE_CODE_ARRAY
2945 && !TYPE_VECTOR (type)
2946 && CAST_IS_CONVERSION (exp->language_defn))
2949 val = address_of_variable (var, exp->elts[pc + 1].block);
2950 return value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2956 return evaluate_subexp (NULL_TYPE, exp, pos, noside);
2960 /* Evaluate a subexpression of EXP, at index *POS,
2961 and return a value for the size of that subexpression.
2962 Advance *POS over the subexpression. If NOSIDE is EVAL_NORMAL
2963 we allow side-effects on the operand if its type is a variable
2966 static struct value *
2967 evaluate_subexp_for_sizeof (struct expression *exp, int *pos,
2970 /* FIXME: This should be size_t. */
2971 struct type *size_type = builtin_type (exp->gdbarch)->builtin_int;
2978 op = exp->elts[pc].opcode;
2982 /* This case is handled specially
2983 so that we avoid creating a value for the result type.
2984 If the result type is very big, it's desirable not to
2985 create a value unnecessarily. */
2988 val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2989 type = check_typedef (value_type (val));
2990 if (TYPE_CODE (type) != TYPE_CODE_PTR
2991 && TYPE_CODE (type) != TYPE_CODE_REF
2992 && TYPE_CODE (type) != TYPE_CODE_ARRAY)
2993 error (_("Attempt to take contents of a non-pointer value."));
2994 type = TYPE_TARGET_TYPE (type);
2995 if (is_dynamic_type (type))
2996 type = value_type (value_ind (val));
2997 return value_from_longest (size_type, (LONGEST) TYPE_LENGTH (type));
3001 type = exp->elts[pc + 1].type;
3004 case UNOP_MEMVAL_TYPE:
3006 val = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3007 type = value_type (val);
3011 type = SYMBOL_TYPE (exp->elts[pc + 2].symbol);
3012 if (is_dynamic_type (type))
3014 val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
3015 type = value_type (val);
3021 /* Deal with the special case if NOSIDE is EVAL_NORMAL and the resulting
3022 type of the subscript is a variable length array type. In this case we
3023 must re-evaluate the right hand side of the subcription to allow
3025 case BINOP_SUBSCRIPT:
3026 if (noside == EVAL_NORMAL)
3028 int pc = (*pos) + 1;
3030 val = evaluate_subexp (NULL_TYPE, exp, &pc, EVAL_AVOID_SIDE_EFFECTS);
3031 type = check_typedef (value_type (val));
3032 if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
3034 type = check_typedef (TYPE_TARGET_TYPE (type));
3035 if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
3037 type = TYPE_INDEX_TYPE (type);
3038 /* Only re-evaluate the right hand side if the resulting type
3039 is a variable length type. */
3040 if (TYPE_RANGE_DATA (type)->flag_bound_evaluated)
3042 val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
3043 return value_from_longest
3044 (size_type, (LONGEST) TYPE_LENGTH (value_type (val)));
3053 val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3054 type = value_type (val);
3058 /* $5.3.3/2 of the C++ Standard (n3290 draft) says of sizeof:
3059 "When applied to a reference or a reference type, the result is
3060 the size of the referenced type." */
3061 CHECK_TYPEDEF (type);
3062 if (exp->language_defn->la_language == language_cplus
3063 && TYPE_CODE (type) == TYPE_CODE_REF)
3064 type = check_typedef (TYPE_TARGET_TYPE (type));
3065 return value_from_longest (size_type, (LONGEST) TYPE_LENGTH (type));
3068 /* Parse a type expression in the string [P..P+LENGTH). */
3071 parse_and_eval_type (char *p, int length)
3073 char *tmp = (char *) alloca (length + 4);
3074 struct expression *expr;
3077 memcpy (tmp + 1, p, length);
3078 tmp[length + 1] = ')';
3079 tmp[length + 2] = '0';
3080 tmp[length + 3] = '\0';
3081 expr = parse_expression (tmp);
3082 if (expr->elts[0].opcode != UNOP_CAST)
3083 error (_("Internal error in eval_type."));
3084 return expr->elts[1].type;
3088 calc_f77_array_dims (struct type *array_type)
3091 struct type *tmp_type;
3093 if ((TYPE_CODE (array_type) != TYPE_CODE_ARRAY))
3094 error (_("Can't get dimensions for a non-array type"));
3096 tmp_type = array_type;
3098 while ((tmp_type = TYPE_TARGET_TYPE (tmp_type)))
3100 if (TYPE_CODE (tmp_type) == TYPE_CODE_ARRAY)