1 /* Evaluate expressions for GDB.
3 Copyright (C) 1986-2019 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/>. */
24 #include "expression.h"
27 #include "gdbthread.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"
38 #include "user-regs.h"
40 #include "gdb_obstack.h"
42 #include "typeprint.h"
45 /* This is defined in valops.c */
46 extern int overload_resolution;
48 /* Prototypes for local functions. */
50 static struct value *evaluate_subexp_for_sizeof (struct expression *, int *,
53 static struct value *evaluate_subexp_for_address (struct expression *,
56 static value *evaluate_subexp_for_cast (expression *exp, int *pos,
60 static struct value *evaluate_struct_tuple (struct value *,
61 struct expression *, int *,
64 static LONGEST init_array_element (struct value *, struct value *,
65 struct expression *, int *, enum noside,
69 evaluate_subexp (struct type *expect_type, struct expression *exp,
70 int *pos, enum noside noside)
74 gdb::optional<enable_thread_stack_temporaries> stack_temporaries;
75 if (*pos == 0 && target_has_execution
76 && exp->language_defn->la_language == language_cplus
77 && !thread_stack_temporaries_enabled_p (inferior_thread ()))
78 stack_temporaries.emplace (inferior_thread ());
80 retval = (*exp->language_defn->la_exp_desc->evaluate_exp)
81 (expect_type, exp, pos, noside);
83 if (stack_temporaries.has_value ()
84 && value_in_thread_stack_temporaries (retval, inferior_thread ()))
85 retval = value_non_lval (retval);
90 /* Parse the string EXP as a C expression, evaluate it,
91 and return the result as a number. */
94 parse_and_eval_address (const char *exp)
96 expression_up expr = parse_expression (exp);
98 return value_as_address (evaluate_expression (expr.get ()));
101 /* Like parse_and_eval_address, but treats the value of the expression
102 as an integer, not an address, returns a LONGEST, not a CORE_ADDR. */
104 parse_and_eval_long (const char *exp)
106 expression_up expr = parse_expression (exp);
108 return value_as_long (evaluate_expression (expr.get ()));
112 parse_and_eval (const char *exp)
114 expression_up expr = parse_expression (exp);
116 return evaluate_expression (expr.get ());
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 expression_up expr = parse_exp_1 (expp, 0, nullptr, 1);
128 return evaluate_expression (expr.get ());
131 /* Evaluate an expression in internal prefix form
132 such as is constructed by parse.y.
134 See expression.h for info on the format of an expression. */
137 evaluate_expression (struct expression *exp)
141 return evaluate_subexp (NULL_TYPE, exp, &pc, EVAL_NORMAL);
144 /* Evaluate an expression, avoiding all memory references
145 and getting a value whose type alone is correct. */
148 evaluate_type (struct expression *exp)
152 return evaluate_subexp (NULL_TYPE, exp, &pc, EVAL_AVOID_SIDE_EFFECTS);
155 /* Evaluate a subexpression, avoiding all memory references and
156 getting a value whose type alone is correct. */
159 evaluate_subexpression_type (struct expression *exp, int subexp)
161 return evaluate_subexp (NULL_TYPE, exp, &subexp, EVAL_AVOID_SIDE_EFFECTS);
164 /* Find the current value of a watchpoint on EXP. Return the value in
165 *VALP and *RESULTP and the chain of intermediate and final values
166 in *VAL_CHAIN. RESULTP and VAL_CHAIN may be NULL if the caller does
169 If PRESERVE_ERRORS is true, then exceptions are passed through.
170 Otherwise, if PRESERVE_ERRORS is false, then if a memory error
171 occurs while evaluating the expression, *RESULTP will be set to
172 NULL. *RESULTP may be a lazy value, if the result could not be
173 read from memory. It is used to determine whether a value is
174 user-specified (we should watch the whole value) or intermediate
175 (we should watch only the bit used to locate the final value).
177 If the final value, or any intermediate value, could not be read
178 from memory, *VALP will be set to NULL. *VAL_CHAIN will still be
179 set to any referenced values. *VALP will never be a lazy value.
180 This is the value which we store in struct breakpoint.
182 If VAL_CHAIN is non-NULL, the values put into *VAL_CHAIN will be
183 released from the value chain. If VAL_CHAIN is NULL, all generated
184 values will be left on the value chain. */
187 fetch_subexp_value (struct expression *exp, int *pc, struct value **valp,
188 struct value **resultp,
189 std::vector<value_ref_ptr> *val_chain,
192 struct value *mark, *new_mark, *result;
200 /* Evaluate the expression. */
201 mark = value_mark ();
206 result = evaluate_subexp (NULL_TYPE, exp, pc, EVAL_NORMAL);
208 catch (const gdb_exception &ex)
210 /* Ignore memory errors if we want watchpoints pointing at
211 inaccessible memory to still be created; otherwise, throw the
212 error to some higher catcher. */
216 if (!preserve_errors)
225 new_mark = value_mark ();
226 if (mark == new_mark)
231 /* Make sure it's not lazy, so that after the target stops again we
232 have a non-lazy previous value to compare with. */
235 if (!value_lazy (result))
242 value_fetch_lazy (result);
245 catch (const gdb_exception_error &except)
253 /* Return the chain of intermediate values. We use this to
254 decide which addresses to watch. */
255 *val_chain = value_release_to_mark (mark);
259 /* Extract a field operation from an expression. If the subexpression
260 of EXP starting at *SUBEXP is not a structure dereference
261 operation, return NULL. Otherwise, return the name of the
262 dereferenced field, and advance *SUBEXP to point to the
263 subexpression of the left-hand-side of the dereference. This is
264 used when completing field names. */
267 extract_field_op (struct expression *exp, int *subexp)
272 if (exp->elts[*subexp].opcode != STRUCTOP_STRUCT
273 && exp->elts[*subexp].opcode != STRUCTOP_PTR)
275 tem = longest_to_int (exp->elts[*subexp + 1].longconst);
276 result = &exp->elts[*subexp + 2].string;
277 (*subexp) += 1 + 3 + BYTES_TO_EXP_ELEM (tem + 1);
281 /* This function evaluates brace-initializers (in C/C++) for
284 static struct value *
285 evaluate_struct_tuple (struct value *struct_val,
286 struct expression *exp,
287 int *pos, enum noside noside, int nargs)
289 struct type *struct_type = check_typedef (value_type (struct_val));
290 struct type *field_type;
295 struct value *val = NULL;
300 /* Skip static fields. */
301 while (fieldno < TYPE_NFIELDS (struct_type)
302 && field_is_static (&TYPE_FIELD (struct_type,
305 if (fieldno >= TYPE_NFIELDS (struct_type))
306 error (_("too many initializers"));
307 field_type = TYPE_FIELD_TYPE (struct_type, fieldno);
308 if (TYPE_CODE (field_type) == TYPE_CODE_UNION
309 && TYPE_FIELD_NAME (struct_type, fieldno)[0] == '0')
310 error (_("don't know which variant you want to set"));
312 /* Here, struct_type is the type of the inner struct,
313 while substruct_type is the type of the inner struct.
314 These are the same for normal structures, but a variant struct
315 contains anonymous union fields that contain substruct fields.
316 The value fieldno is the index of the top-level (normal or
317 anonymous union) field in struct_field, while the value
318 subfieldno is the index of the actual real (named inner) field
319 in substruct_type. */
321 field_type = TYPE_FIELD_TYPE (struct_type, fieldno);
323 val = evaluate_subexp (field_type, exp, pos, noside);
325 /* Now actually set the field in struct_val. */
327 /* Assign val to field fieldno. */
328 if (value_type (val) != field_type)
329 val = value_cast (field_type, val);
331 bitsize = TYPE_FIELD_BITSIZE (struct_type, fieldno);
332 bitpos = TYPE_FIELD_BITPOS (struct_type, fieldno);
333 addr = value_contents_writeable (struct_val) + bitpos / 8;
335 modify_field (struct_type, addr,
336 value_as_long (val), bitpos % 8, bitsize);
338 memcpy (addr, value_contents (val),
339 TYPE_LENGTH (value_type (val)));
345 /* Recursive helper function for setting elements of array tuples.
346 The target is ARRAY (which has bounds LOW_BOUND to HIGH_BOUND); the
347 element value is ELEMENT; EXP, POS and NOSIDE are as usual.
348 Evaluates index expresions and sets the specified element(s) of
349 ARRAY to ELEMENT. Returns last index value. */
352 init_array_element (struct value *array, struct value *element,
353 struct expression *exp, int *pos,
354 enum noside noside, LONGEST low_bound, LONGEST high_bound)
357 int element_size = TYPE_LENGTH (value_type (element));
359 if (exp->elts[*pos].opcode == BINOP_COMMA)
362 init_array_element (array, element, exp, pos, noside,
363 low_bound, high_bound);
364 return init_array_element (array, element,
365 exp, pos, noside, low_bound, high_bound);
369 index = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
370 if (index < low_bound || index > high_bound)
371 error (_("tuple index out of range"));
372 memcpy (value_contents_raw (array) + (index - low_bound) * element_size,
373 value_contents (element), element_size);
378 static struct value *
379 value_f90_subarray (struct value *array,
380 struct expression *exp, int *pos, enum noside noside)
383 LONGEST low_bound, high_bound;
384 struct type *range = check_typedef (TYPE_INDEX_TYPE (value_type (array)));
385 enum range_type range_type
386 = (enum range_type) longest_to_int (exp->elts[pc].longconst);
390 if (range_type == LOW_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT)
391 low_bound = TYPE_LOW_BOUND (range);
393 low_bound = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
395 if (range_type == HIGH_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT)
396 high_bound = TYPE_HIGH_BOUND (range);
398 high_bound = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
400 return value_slice (array, low_bound, high_bound - low_bound + 1);
404 /* Promote value ARG1 as appropriate before performing a unary operation
406 If the result is not appropriate for any particular language then it
407 needs to patch this function. */
410 unop_promote (const struct language_defn *language, struct gdbarch *gdbarch,
415 *arg1 = coerce_ref (*arg1);
416 type1 = check_typedef (value_type (*arg1));
418 if (is_integral_type (type1))
420 switch (language->la_language)
423 /* Perform integral promotion for ANSI C/C++.
424 If not appropropriate for any particular language
425 it needs to modify this function. */
427 struct type *builtin_int = builtin_type (gdbarch)->builtin_int;
429 if (TYPE_LENGTH (type1) < TYPE_LENGTH (builtin_int))
430 *arg1 = value_cast (builtin_int, *arg1);
437 /* Promote values ARG1 and ARG2 as appropriate before performing a binary
438 operation on those two operands.
439 If the result is not appropriate for any particular language then it
440 needs to patch this function. */
443 binop_promote (const struct language_defn *language, struct gdbarch *gdbarch,
444 struct value **arg1, struct value **arg2)
446 struct type *promoted_type = NULL;
450 *arg1 = coerce_ref (*arg1);
451 *arg2 = coerce_ref (*arg2);
453 type1 = check_typedef (value_type (*arg1));
454 type2 = check_typedef (value_type (*arg2));
456 if ((TYPE_CODE (type1) != TYPE_CODE_FLT
457 && TYPE_CODE (type1) != TYPE_CODE_DECFLOAT
458 && !is_integral_type (type1))
459 || (TYPE_CODE (type2) != TYPE_CODE_FLT
460 && TYPE_CODE (type2) != TYPE_CODE_DECFLOAT
461 && !is_integral_type (type2)))
464 if (TYPE_CODE (type1) == TYPE_CODE_DECFLOAT
465 || TYPE_CODE (type2) == TYPE_CODE_DECFLOAT)
467 /* No promotion required. */
469 else if (TYPE_CODE (type1) == TYPE_CODE_FLT
470 || TYPE_CODE (type2) == TYPE_CODE_FLT)
472 switch (language->la_language)
478 case language_opencl:
479 /* No promotion required. */
483 /* For other languages the result type is unchanged from gdb
484 version 6.7 for backward compatibility.
485 If either arg was long double, make sure that value is also long
486 double. Otherwise use double. */
487 if (TYPE_LENGTH (type1) * 8 > gdbarch_double_bit (gdbarch)
488 || TYPE_LENGTH (type2) * 8 > gdbarch_double_bit (gdbarch))
489 promoted_type = builtin_type (gdbarch)->builtin_long_double;
491 promoted_type = builtin_type (gdbarch)->builtin_double;
495 else if (TYPE_CODE (type1) == TYPE_CODE_BOOL
496 && TYPE_CODE (type2) == TYPE_CODE_BOOL)
498 /* No promotion required. */
501 /* Integral operations here. */
502 /* FIXME: Also mixed integral/booleans, with result an integer. */
504 const struct builtin_type *builtin = builtin_type (gdbarch);
505 unsigned int promoted_len1 = TYPE_LENGTH (type1);
506 unsigned int promoted_len2 = TYPE_LENGTH (type2);
507 int is_unsigned1 = TYPE_UNSIGNED (type1);
508 int is_unsigned2 = TYPE_UNSIGNED (type2);
509 unsigned int result_len;
510 int unsigned_operation;
512 /* Determine type length and signedness after promotion for
514 if (promoted_len1 < TYPE_LENGTH (builtin->builtin_int))
517 promoted_len1 = TYPE_LENGTH (builtin->builtin_int);
519 if (promoted_len2 < TYPE_LENGTH (builtin->builtin_int))
522 promoted_len2 = TYPE_LENGTH (builtin->builtin_int);
525 if (promoted_len1 > promoted_len2)
527 unsigned_operation = is_unsigned1;
528 result_len = promoted_len1;
530 else if (promoted_len2 > promoted_len1)
532 unsigned_operation = is_unsigned2;
533 result_len = promoted_len2;
537 unsigned_operation = is_unsigned1 || is_unsigned2;
538 result_len = promoted_len1;
541 switch (language->la_language)
547 if (result_len <= TYPE_LENGTH (builtin->builtin_int))
549 promoted_type = (unsigned_operation
550 ? builtin->builtin_unsigned_int
551 : builtin->builtin_int);
553 else if (result_len <= TYPE_LENGTH (builtin->builtin_long))
555 promoted_type = (unsigned_operation
556 ? builtin->builtin_unsigned_long
557 : builtin->builtin_long);
561 promoted_type = (unsigned_operation
562 ? builtin->builtin_unsigned_long_long
563 : builtin->builtin_long_long);
566 case language_opencl:
567 if (result_len <= TYPE_LENGTH (lookup_signed_typename
568 (language, gdbarch, "int")))
572 ? lookup_unsigned_typename (language, gdbarch, "int")
573 : lookup_signed_typename (language, gdbarch, "int"));
575 else if (result_len <= TYPE_LENGTH (lookup_signed_typename
576 (language, gdbarch, "long")))
580 ? lookup_unsigned_typename (language, gdbarch, "long")
581 : lookup_signed_typename (language, gdbarch,"long"));
585 /* For other languages the result type is unchanged from gdb
586 version 6.7 for backward compatibility.
587 If either arg was long long, make sure that value is also long
588 long. Otherwise use long. */
589 if (unsigned_operation)
591 if (result_len > gdbarch_long_bit (gdbarch) / HOST_CHAR_BIT)
592 promoted_type = builtin->builtin_unsigned_long_long;
594 promoted_type = builtin->builtin_unsigned_long;
598 if (result_len > gdbarch_long_bit (gdbarch) / HOST_CHAR_BIT)
599 promoted_type = builtin->builtin_long_long;
601 promoted_type = builtin->builtin_long;
609 /* Promote both operands to common type. */
610 *arg1 = value_cast (promoted_type, *arg1);
611 *arg2 = value_cast (promoted_type, *arg2);
616 ptrmath_type_p (const struct language_defn *lang, struct type *type)
618 type = check_typedef (type);
619 if (TYPE_IS_REFERENCE (type))
620 type = TYPE_TARGET_TYPE (type);
622 switch (TYPE_CODE (type))
628 case TYPE_CODE_ARRAY:
629 return TYPE_VECTOR (type) ? 0 : lang->c_style_arrays;
636 /* Represents a fake method with the given parameter types. This is
637 used by the parser to construct a temporary "expected" type for
638 method overload resolution. FLAGS is used as instance flags of the
639 new type, in order to be able to make the new type represent a
640 const/volatile overload. */
645 fake_method (type_instance_flags flags,
646 int num_types, struct type **param_types);
649 /* The constructed type. */
650 struct type *type () { return &m_type; }
653 struct type m_type {};
654 main_type m_main_type {};
657 fake_method::fake_method (type_instance_flags flags,
658 int num_types, struct type **param_types)
660 struct type *type = &m_type;
662 TYPE_MAIN_TYPE (type) = &m_main_type;
663 TYPE_LENGTH (type) = 1;
664 TYPE_CODE (type) = TYPE_CODE_METHOD;
665 TYPE_CHAIN (type) = type;
666 TYPE_INSTANCE_FLAGS (type) = flags;
669 if (param_types[num_types - 1] == NULL)
672 TYPE_VARARGS (type) = 1;
674 else if (TYPE_CODE (check_typedef (param_types[num_types - 1]))
678 /* Caller should have ensured this. */
679 gdb_assert (num_types == 0);
680 TYPE_PROTOTYPED (type) = 1;
684 /* We don't use TYPE_ZALLOC here to allocate space as TYPE is owned by
685 neither an objfile nor a gdbarch. As a result we must manually
686 allocate memory for auxiliary fields, and free the memory ourselves
687 when we are done with it. */
688 TYPE_NFIELDS (type) = num_types;
689 TYPE_FIELDS (type) = (struct field *)
690 xzalloc (sizeof (struct field) * num_types);
692 while (num_types-- > 0)
693 TYPE_FIELD_TYPE (type, num_types) = param_types[num_types];
696 fake_method::~fake_method ()
698 xfree (TYPE_FIELDS (&m_type));
701 /* Helper for evaluating an OP_VAR_VALUE. */
704 evaluate_var_value (enum noside noside, const block *blk, symbol *var)
706 /* JYG: We used to just return value_zero of the symbol type if
707 we're asked to avoid side effects. Otherwise we return
708 value_of_variable (...). However I'm not sure if
709 value_of_variable () has any side effect. We need a full value
710 object returned here for whatis_exp () to call evaluate_type ()
711 and then pass the full value to value_rtti_target_type () if we
712 are dealing with a pointer or reference to a base class and print
715 struct value *ret = NULL;
719 ret = value_of_variable (var, blk);
722 catch (const gdb_exception_error &except)
724 if (noside != EVAL_AVOID_SIDE_EFFECTS)
727 ret = value_zero (SYMBOL_TYPE (var), not_lval);
733 /* Helper for evaluating an OP_VAR_MSYM_VALUE. */
736 evaluate_var_msym_value (enum noside noside,
737 struct objfile *objfile, minimal_symbol *msymbol)
740 type *the_type = find_minsym_type_and_address (msymbol, objfile, &address);
742 if (noside == EVAL_AVOID_SIDE_EFFECTS && !TYPE_GNU_IFUNC (the_type))
743 return value_zero (the_type, not_lval);
745 return value_at_lazy (the_type, address);
748 /* Helper for returning a value when handling EVAL_SKIP. */
751 eval_skip_value (expression *exp)
753 return value_from_longest (builtin_type (exp->gdbarch)->builtin_int, 1);
756 /* Evaluate a function call. The function to be called is in
757 ARGVEC[0] and the arguments passed to the function are in
758 ARGVEC[1..NARGS]. FUNCTION_NAME is the name of the function, if
759 known. DEFAULT_RETURN_TYPE is used as the function's return type
760 if the return type is unknown. */
763 eval_call (expression *exp, enum noside noside,
764 int nargs, value **argvec,
765 const char *function_name,
766 type *default_return_type)
768 if (argvec[0] == NULL)
769 error (_("Cannot evaluate function -- may be inlined"));
770 if (noside == EVAL_AVOID_SIDE_EFFECTS)
772 /* If the return type doesn't look like a function type,
773 call an error. This can happen if somebody tries to turn
774 a variable into a function call. */
776 type *ftype = value_type (argvec[0]);
778 if (TYPE_CODE (ftype) == TYPE_CODE_INTERNAL_FUNCTION)
780 /* We don't know anything about what the internal
781 function might return, but we have to return
783 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
786 else if (TYPE_CODE (ftype) == TYPE_CODE_XMETHOD)
789 = result_type_of_xmethod (argvec[0],
790 gdb::make_array_view (argvec + 1,
793 if (return_type == NULL)
794 error (_("Xmethod is missing return type."));
795 return value_zero (return_type, not_lval);
797 else if (TYPE_CODE (ftype) == TYPE_CODE_FUNC
798 || TYPE_CODE (ftype) == TYPE_CODE_METHOD)
800 if (TYPE_GNU_IFUNC (ftype))
802 CORE_ADDR address = value_address (argvec[0]);
803 type *resolved_type = find_gnu_ifunc_target_type (address);
805 if (resolved_type != NULL)
806 ftype = resolved_type;
809 type *return_type = TYPE_TARGET_TYPE (ftype);
811 if (return_type == NULL)
812 return_type = default_return_type;
814 if (return_type == NULL)
815 error_call_unknown_return_type (function_name);
817 return allocate_value (return_type);
820 error (_("Expression of type other than "
821 "\"Function returning ...\" used as function"));
823 switch (TYPE_CODE (value_type (argvec[0])))
825 case TYPE_CODE_INTERNAL_FUNCTION:
826 return call_internal_function (exp->gdbarch, exp->language_defn,
827 argvec[0], nargs, argvec + 1);
828 case TYPE_CODE_XMETHOD:
829 return call_xmethod (argvec[0], gdb::make_array_view (argvec + 1, nargs));
831 return call_function_by_hand (argvec[0], default_return_type,
832 gdb::make_array_view (argvec + 1, nargs));
836 /* Helper for evaluating an OP_FUNCALL. */
839 evaluate_funcall (type *expect_type, expression *exp, int *pos,
847 symbol *function = NULL;
848 char *function_name = NULL;
849 const char *var_func_name = NULL;
854 exp_opcode op = exp->elts[*pos].opcode;
855 int nargs = longest_to_int (exp->elts[pc].longconst);
856 /* Allocate arg vector, including space for the function to be
857 called in argvec[0], a potential `this', and a terminating
859 value **argvec = (value **) alloca (sizeof (value *) * (nargs + 3));
860 if (op == STRUCTOP_MEMBER || op == STRUCTOP_MPTR)
862 /* First, evaluate the structure into arg2. */
865 if (op == STRUCTOP_MEMBER)
867 arg2 = evaluate_subexp_for_address (exp, pos, noside);
871 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
874 /* If the function is a virtual function, then the aggregate
875 value (providing the structure) plays its part by providing
876 the vtable. Otherwise, it is just along for the ride: call
877 the function directly. */
879 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
881 type *a1_type = check_typedef (value_type (arg1));
882 if (noside == EVAL_SKIP)
883 tem = 1; /* Set it to the right arg index so that all
884 arguments can also be skipped. */
885 else if (TYPE_CODE (a1_type) == TYPE_CODE_METHODPTR)
887 if (noside == EVAL_AVOID_SIDE_EFFECTS)
888 arg1 = value_zero (TYPE_TARGET_TYPE (a1_type), not_lval);
890 arg1 = cplus_method_ptr_to_value (&arg2, arg1);
892 /* Now, say which argument to start evaluating from. */
897 else if (TYPE_CODE (a1_type) == TYPE_CODE_MEMBERPTR)
899 struct type *type_ptr
900 = lookup_pointer_type (TYPE_SELF_TYPE (a1_type));
901 struct type *target_type_ptr
902 = lookup_pointer_type (TYPE_TARGET_TYPE (a1_type));
904 /* Now, convert these values to an address. */
905 arg2 = value_cast (type_ptr, arg2);
907 long mem_offset = value_as_long (arg1);
909 arg1 = value_from_pointer (target_type_ptr,
910 value_as_long (arg2) + mem_offset);
911 arg1 = value_ind (arg1);
915 error (_("Non-pointer-to-member value used in pointer-to-member "
918 else if (op == STRUCTOP_STRUCT || op == STRUCTOP_PTR)
920 /* Hair for method invocations. */
924 /* First, evaluate the structure into arg2. */
926 tem2 = longest_to_int (exp->elts[pc2 + 1].longconst);
927 *pos += 3 + BYTES_TO_EXP_ELEM (tem2 + 1);
929 if (op == STRUCTOP_STRUCT)
931 /* If v is a variable in a register, and the user types
932 v.method (), this will produce an error, because v has no
935 A possible way around this would be to allocate a copy of
936 the variable on the stack, copy in the contents, call the
937 function, and copy out the contents. I.e. convert this
938 from call by reference to call by copy-return (or
939 whatever it's called). However, this does not work
940 because it is not the same: the method being called could
941 stash a copy of the address, and then future uses through
942 that address (after the method returns) would be expected
943 to use the variable itself, not some copy of it. */
944 arg2 = evaluate_subexp_for_address (exp, pos, noside);
948 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
950 /* Check to see if the operator '->' has been overloaded.
951 If the operator has been overloaded replace arg2 with the
952 value returned by the custom operator and continue
954 while (unop_user_defined_p (op, arg2))
956 struct value *value = NULL;
959 value = value_x_unop (arg2, op, noside);
962 catch (const gdb_exception_error &except)
964 if (except.error == NOT_FOUND_ERROR)
973 /* Now, say which argument to start evaluating from. */
976 else if (op == OP_SCOPE
977 && overload_resolution
978 && (exp->language_defn->la_language == language_cplus))
980 /* Unpack it locally so we can properly handle overload
986 local_tem = longest_to_int (exp->elts[pc2 + 2].longconst);
987 (*pos) += 4 + BYTES_TO_EXP_ELEM (local_tem + 1);
988 struct type *type = exp->elts[pc2 + 1].type;
989 name = &exp->elts[pc2 + 3].string;
992 function_name = NULL;
993 if (TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
995 function = cp_lookup_symbol_namespace (TYPE_NAME (type),
997 get_selected_block (0),
999 if (function == NULL)
1000 error (_("No symbol \"%s\" in namespace \"%s\"."),
1001 name, TYPE_NAME (type));
1004 /* arg2 is left as NULL on purpose. */
1008 gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
1009 || TYPE_CODE (type) == TYPE_CODE_UNION);
1010 function_name = name;
1012 /* We need a properly typed value for method lookup. For
1013 static methods arg2 is otherwise unused. */
1014 arg2 = value_zero (type, lval_memory);
1019 else if (op == OP_ADL_FUNC)
1021 /* Save the function position and move pos so that the arguments
1022 can be evaluated. */
1028 func_name_len = longest_to_int (exp->elts[save_pos1 + 3].longconst);
1029 (*pos) += 6 + BYTES_TO_EXP_ELEM (func_name_len + 1);
1033 /* Non-method function call. */
1037 /* If this is a C++ function wait until overload resolution. */
1038 if (op == OP_VAR_VALUE
1039 && overload_resolution
1040 && (exp->language_defn->la_language == language_cplus))
1042 (*pos) += 4; /* Skip the evaluation of the symbol. */
1047 if (op == OP_VAR_MSYM_VALUE)
1049 minimal_symbol *msym = exp->elts[*pos + 2].msymbol;
1050 var_func_name = MSYMBOL_PRINT_NAME (msym);
1052 else if (op == OP_VAR_VALUE)
1054 symbol *sym = exp->elts[*pos + 2].symbol;
1055 var_func_name = SYMBOL_PRINT_NAME (sym);
1058 argvec[0] = evaluate_subexp_with_coercion (exp, pos, noside);
1059 type *type = value_type (argvec[0]);
1060 if (type && TYPE_CODE (type) == TYPE_CODE_PTR)
1061 type = TYPE_TARGET_TYPE (type);
1062 if (type && TYPE_CODE (type) == TYPE_CODE_FUNC)
1064 for (; tem <= nargs && tem <= TYPE_NFIELDS (type); tem++)
1066 argvec[tem] = evaluate_subexp (TYPE_FIELD_TYPE (type,
1074 /* Evaluate arguments (if not already done, e.g., namespace::func()
1075 and overload-resolution is off). */
1076 for (; tem <= nargs; tem++)
1078 /* Ensure that array expressions are coerced into pointer
1080 argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
1083 /* Signal end of arglist. */
1086 if (noside == EVAL_SKIP)
1087 return eval_skip_value (exp);
1089 if (op == OP_ADL_FUNC)
1091 struct symbol *symp;
1094 int string_pc = save_pos1 + 3;
1096 /* Extract the function name. */
1097 name_len = longest_to_int (exp->elts[string_pc].longconst);
1098 func_name = (char *) alloca (name_len + 1);
1099 strcpy (func_name, &exp->elts[string_pc + 1].string);
1101 find_overload_match (gdb::make_array_view (&argvec[1], nargs),
1103 NON_METHOD, /* not method */
1104 NULL, NULL, /* pass NULL symbol since
1105 symbol is unknown */
1106 NULL, &symp, NULL, 0, noside);
1108 /* Now fix the expression being evaluated. */
1109 exp->elts[save_pos1 + 2].symbol = symp;
1110 argvec[0] = evaluate_subexp_with_coercion (exp, &save_pos1, noside);
1113 if (op == STRUCTOP_STRUCT || op == STRUCTOP_PTR
1114 || (op == OP_SCOPE && function_name != NULL))
1116 int static_memfuncp;
1119 /* Method invocation: stuff "this" as first parameter. If the
1120 method turns out to be static we undo this below. */
1125 /* Name of method from expression. */
1126 tstr = &exp->elts[pc2 + 2].string;
1129 tstr = function_name;
1131 if (overload_resolution && (exp->language_defn->la_language
1134 /* Language is C++, do some overload resolution before
1136 struct value *valp = NULL;
1138 (void) find_overload_match (gdb::make_array_view (&argvec[1], nargs),
1140 METHOD, /* method */
1141 &arg2, /* the object */
1143 &static_memfuncp, 0, noside);
1145 if (op == OP_SCOPE && !static_memfuncp)
1147 /* For the time being, we don't handle this. */
1148 error (_("Call to overloaded function %s requires "
1152 argvec[1] = arg2; /* the ``this'' pointer */
1153 argvec[0] = valp; /* Use the method found after overload
1157 /* Non-C++ case -- or no overload resolution. */
1159 struct value *temp = arg2;
1161 argvec[0] = value_struct_elt (&temp, argvec + 1, tstr,
1163 op == STRUCTOP_STRUCT
1164 ? "structure" : "structure pointer");
1165 /* value_struct_elt updates temp with the correct value of
1166 the ``this'' pointer if necessary, so modify argvec[1] to
1167 reflect any ``this'' changes. */
1169 = value_from_longest (lookup_pointer_type(value_type (temp)),
1170 value_address (temp)
1171 + value_embedded_offset (temp));
1172 argvec[1] = arg2; /* the ``this'' pointer */
1175 /* Take out `this' if needed. */
1176 if (static_memfuncp)
1178 argvec[1] = argvec[0];
1183 else if (op == STRUCTOP_MEMBER || op == STRUCTOP_MPTR)
1185 /* Pointer to member. argvec[1] is already set up. */
1188 else if (op == OP_VAR_VALUE || (op == OP_SCOPE && function != NULL))
1190 /* Non-member function being called. */
1191 /* fn: This can only be done for C++ functions. A C-style
1192 function in a C++ program, for instance, does not have the
1193 fields that are expected here. */
1195 if (overload_resolution && (exp->language_defn->la_language
1198 /* Language is C++, do some overload resolution before
1200 struct symbol *symp;
1203 /* If a scope has been specified disable ADL. */
1207 if (op == OP_VAR_VALUE)
1208 function = exp->elts[save_pos1+2].symbol;
1210 (void) find_overload_match (gdb::make_array_view (&argvec[1], nargs),
1211 NULL, /* no need for name */
1212 NON_METHOD, /* not method */
1213 NULL, function, /* the function */
1214 NULL, &symp, NULL, no_adl, noside);
1216 if (op == OP_VAR_VALUE)
1218 /* Now fix the expression being evaluated. */
1219 exp->elts[save_pos1+2].symbol = symp;
1220 argvec[0] = evaluate_subexp_with_coercion (exp, &save_pos1,
1224 argvec[0] = value_of_variable (symp, get_selected_block (0));
1228 /* Not C++, or no overload resolution allowed. */
1229 /* Nothing to be done; argvec already correctly set up. */
1234 /* It is probably a C-style function. */
1235 /* Nothing to be done; argvec already correctly set up. */
1238 return eval_call (exp, noside, nargs, argvec, var_func_name, expect_type);
1241 /* Helper for skipping all the arguments in an undetermined argument list.
1242 This function was designed for use in the OP_F77_UNDETERMINED_ARGLIST
1243 case of evaluate_subexp_standard as multiple, but not all, code paths
1244 require a generic skip. */
1247 skip_undetermined_arglist (int nargs, struct expression *exp, int *pos,
1250 for (int i = 0; i < nargs; ++i)
1251 evaluate_subexp (NULL_TYPE, exp, pos, noside);
1255 evaluate_subexp_standard (struct type *expect_type,
1256 struct expression *exp, int *pos,
1260 int tem, tem2, tem3;
1262 struct value *arg1 = NULL;
1263 struct value *arg2 = NULL;
1267 struct value **argvec;
1271 struct type **arg_types;
1274 op = exp->elts[pc].opcode;
1279 tem = longest_to_int (exp->elts[pc + 2].longconst);
1280 (*pos) += 4 + BYTES_TO_EXP_ELEM (tem + 1);
1281 if (noside == EVAL_SKIP)
1282 return eval_skip_value (exp);
1283 arg1 = value_aggregate_elt (exp->elts[pc + 1].type,
1284 &exp->elts[pc + 3].string,
1285 expect_type, 0, noside);
1287 error (_("There is no field named %s"), &exp->elts[pc + 3].string);
1292 return value_from_longest (exp->elts[pc + 1].type,
1293 exp->elts[pc + 2].longconst);
1297 return value_from_contents (exp->elts[pc + 1].type,
1298 exp->elts[pc + 2].floatconst);
1304 symbol *var = exp->elts[pc + 2].symbol;
1305 if (TYPE_CODE (SYMBOL_TYPE (var)) == TYPE_CODE_ERROR)
1306 error_unknown_type (SYMBOL_PRINT_NAME (var));
1307 if (noside != EVAL_SKIP)
1308 return evaluate_var_value (noside, exp->elts[pc + 1].block, var);
1311 /* Return a dummy value of the correct type when skipping, so
1312 that parent functions know what is to be skipped. */
1313 return allocate_value (SYMBOL_TYPE (var));
1317 case OP_VAR_MSYM_VALUE:
1321 minimal_symbol *msymbol = exp->elts[pc + 2].msymbol;
1322 value *val = evaluate_var_msym_value (noside,
1323 exp->elts[pc + 1].objfile,
1326 type = value_type (val);
1327 if (TYPE_CODE (type) == TYPE_CODE_ERROR
1328 && (noside != EVAL_AVOID_SIDE_EFFECTS || pc != 0))
1329 error_unknown_type (MSYMBOL_PRINT_NAME (msymbol));
1333 case OP_VAR_ENTRY_VALUE:
1335 if (noside == EVAL_SKIP)
1336 return eval_skip_value (exp);
1339 struct symbol *sym = exp->elts[pc + 1].symbol;
1340 struct frame_info *frame;
1342 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1343 return value_zero (SYMBOL_TYPE (sym), not_lval);
1345 if (SYMBOL_COMPUTED_OPS (sym) == NULL
1346 || SYMBOL_COMPUTED_OPS (sym)->read_variable_at_entry == NULL)
1347 error (_("Symbol \"%s\" does not have any specific entry value"),
1348 SYMBOL_PRINT_NAME (sym));
1350 frame = get_selected_frame (NULL);
1351 return SYMBOL_COMPUTED_OPS (sym)->read_variable_at_entry (sym, frame);
1354 case OP_FUNC_STATIC_VAR:
1355 tem = longest_to_int (exp->elts[pc + 1].longconst);
1356 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
1357 if (noside == EVAL_SKIP)
1358 return eval_skip_value (exp);
1361 value *func = evaluate_subexp_standard (NULL, exp, pos, noside);
1362 CORE_ADDR addr = value_address (func);
1364 const block *blk = block_for_pc (addr);
1365 const char *var = &exp->elts[pc + 2].string;
1367 struct block_symbol sym = lookup_symbol (var, blk, VAR_DOMAIN, NULL);
1369 if (sym.symbol == NULL)
1370 error (_("No symbol \"%s\" in specified context."), var);
1372 return evaluate_var_value (noside, sym.block, sym.symbol);
1378 access_value_history (longest_to_int (exp->elts[pc + 1].longconst));
1382 const char *name = &exp->elts[pc + 2].string;
1386 (*pos) += 3 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
1387 regno = user_reg_map_name_to_regnum (exp->gdbarch,
1388 name, strlen (name));
1390 error (_("Register $%s not available."), name);
1392 /* In EVAL_AVOID_SIDE_EFFECTS mode, we only need to return
1393 a value with the appropriate register type. Unfortunately,
1394 we don't have easy access to the type of user registers.
1395 So for these registers, we fetch the register value regardless
1396 of the evaluation mode. */
1397 if (noside == EVAL_AVOID_SIDE_EFFECTS
1398 && regno < gdbarch_num_cooked_regs (exp->gdbarch))
1399 val = value_zero (register_type (exp->gdbarch, regno), not_lval);
1401 val = value_of_register (regno, get_selected_frame (NULL));
1403 error (_("Value of register %s not available."), name);
1409 type = language_bool_type (exp->language_defn, exp->gdbarch);
1410 return value_from_longest (type, exp->elts[pc + 1].longconst);
1412 case OP_INTERNALVAR:
1414 return value_of_internalvar (exp->gdbarch,
1415 exp->elts[pc + 1].internalvar);
1418 tem = longest_to_int (exp->elts[pc + 1].longconst);
1419 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
1420 if (noside == EVAL_SKIP)
1421 return eval_skip_value (exp);
1422 type = language_string_char_type (exp->language_defn, exp->gdbarch);
1423 return value_string (&exp->elts[pc + 2].string, tem, type);
1425 case OP_OBJC_NSSTRING: /* Objective C Foundation Class
1426 NSString constant. */
1427 tem = longest_to_int (exp->elts[pc + 1].longconst);
1428 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
1429 if (noside == EVAL_SKIP)
1430 return eval_skip_value (exp);
1431 return value_nsstring (exp->gdbarch, &exp->elts[pc + 2].string, tem + 1);
1435 tem2 = longest_to_int (exp->elts[pc + 1].longconst);
1436 tem3 = longest_to_int (exp->elts[pc + 2].longconst);
1437 nargs = tem3 - tem2 + 1;
1438 type = expect_type ? check_typedef (expect_type) : NULL_TYPE;
1440 if (expect_type != NULL_TYPE && noside != EVAL_SKIP
1441 && TYPE_CODE (type) == TYPE_CODE_STRUCT)
1443 struct value *rec = allocate_value (expect_type);
1445 memset (value_contents_raw (rec), '\0', TYPE_LENGTH (type));
1446 return evaluate_struct_tuple (rec, exp, pos, noside, nargs);
1449 if (expect_type != NULL_TYPE && noside != EVAL_SKIP
1450 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
1452 struct type *range_type = TYPE_INDEX_TYPE (type);
1453 struct type *element_type = TYPE_TARGET_TYPE (type);
1454 struct value *array = allocate_value (expect_type);
1455 int element_size = TYPE_LENGTH (check_typedef (element_type));
1456 LONGEST low_bound, high_bound, index;
1458 if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
1461 high_bound = (TYPE_LENGTH (type) / element_size) - 1;
1464 memset (value_contents_raw (array), 0, TYPE_LENGTH (expect_type));
1465 for (tem = nargs; --nargs >= 0;)
1467 struct value *element;
1470 element = evaluate_subexp (element_type, exp, pos, noside);
1471 if (value_type (element) != element_type)
1472 element = value_cast (element_type, element);
1475 int continue_pc = *pos;
1478 index = init_array_element (array, element, exp, pos, noside,
1479 low_bound, high_bound);
1484 if (index > high_bound)
1485 /* To avoid memory corruption. */
1486 error (_("Too many array elements"));
1487 memcpy (value_contents_raw (array)
1488 + (index - low_bound) * element_size,
1489 value_contents (element),
1497 if (expect_type != NULL_TYPE && noside != EVAL_SKIP
1498 && TYPE_CODE (type) == TYPE_CODE_SET)
1500 struct value *set = allocate_value (expect_type);
1501 gdb_byte *valaddr = value_contents_raw (set);
1502 struct type *element_type = TYPE_INDEX_TYPE (type);
1503 struct type *check_type = element_type;
1504 LONGEST low_bound, high_bound;
1506 /* Get targettype of elementtype. */
1507 while (TYPE_CODE (check_type) == TYPE_CODE_RANGE
1508 || TYPE_CODE (check_type) == TYPE_CODE_TYPEDEF)
1509 check_type = TYPE_TARGET_TYPE (check_type);
1511 if (get_discrete_bounds (element_type, &low_bound, &high_bound) < 0)
1512 error (_("(power)set type with unknown size"));
1513 memset (valaddr, '\0', TYPE_LENGTH (type));
1514 for (tem = 0; tem < nargs; tem++)
1516 LONGEST range_low, range_high;
1517 struct type *range_low_type, *range_high_type;
1518 struct value *elem_val;
1520 elem_val = evaluate_subexp (element_type, exp, pos, noside);
1521 range_low_type = range_high_type = value_type (elem_val);
1522 range_low = range_high = value_as_long (elem_val);
1524 /* Check types of elements to avoid mixture of elements from
1525 different types. Also check if type of element is "compatible"
1526 with element type of powerset. */
1527 if (TYPE_CODE (range_low_type) == TYPE_CODE_RANGE)
1528 range_low_type = TYPE_TARGET_TYPE (range_low_type);
1529 if (TYPE_CODE (range_high_type) == TYPE_CODE_RANGE)
1530 range_high_type = TYPE_TARGET_TYPE (range_high_type);
1531 if ((TYPE_CODE (range_low_type) != TYPE_CODE (range_high_type))
1532 || (TYPE_CODE (range_low_type) == TYPE_CODE_ENUM
1533 && (range_low_type != range_high_type)))
1534 /* different element modes. */
1535 error (_("POWERSET tuple elements of different mode"));
1536 if ((TYPE_CODE (check_type) != TYPE_CODE (range_low_type))
1537 || (TYPE_CODE (check_type) == TYPE_CODE_ENUM
1538 && range_low_type != check_type))
1539 error (_("incompatible POWERSET tuple elements"));
1540 if (range_low > range_high)
1542 warning (_("empty POWERSET tuple range"));
1545 if (range_low < low_bound || range_high > high_bound)
1546 error (_("POWERSET tuple element out of range"));
1547 range_low -= low_bound;
1548 range_high -= low_bound;
1549 for (; range_low <= range_high; range_low++)
1551 int bit_index = (unsigned) range_low % TARGET_CHAR_BIT;
1553 if (gdbarch_bits_big_endian (exp->gdbarch))
1554 bit_index = TARGET_CHAR_BIT - 1 - bit_index;
1555 valaddr[(unsigned) range_low / TARGET_CHAR_BIT]
1562 argvec = XALLOCAVEC (struct value *, nargs);
1563 for (tem = 0; tem < nargs; tem++)
1565 /* Ensure that array expressions are coerced into pointer
1567 argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
1569 if (noside == EVAL_SKIP)
1570 return eval_skip_value (exp);
1571 return value_array (tem2, tem3, argvec);
1575 struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1577 = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
1579 = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
1581 if (noside == EVAL_SKIP)
1582 return eval_skip_value (exp);
1583 return value_slice (array, lowbound, upper - lowbound + 1);
1587 /* Skip third and second args to evaluate the first one. */
1588 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1589 if (value_logical_not (arg1))
1591 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
1592 return evaluate_subexp (NULL_TYPE, exp, pos, noside);
1596 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1597 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
1601 case OP_OBJC_SELECTOR:
1602 { /* Objective C @selector operator. */
1603 char *sel = &exp->elts[pc + 2].string;
1604 int len = longest_to_int (exp->elts[pc + 1].longconst);
1605 struct type *selector_type;
1607 (*pos) += 3 + BYTES_TO_EXP_ELEM (len + 1);
1608 if (noside == EVAL_SKIP)
1609 return eval_skip_value (exp);
1612 sel[len] = 0; /* Make sure it's terminated. */
1614 selector_type = builtin_type (exp->gdbarch)->builtin_data_ptr;
1615 return value_from_longest (selector_type,
1616 lookup_child_selector (exp->gdbarch, sel));
1619 case OP_OBJC_MSGCALL:
1620 { /* Objective C message (method) call. */
1622 CORE_ADDR responds_selector = 0;
1623 CORE_ADDR method_selector = 0;
1625 CORE_ADDR selector = 0;
1627 int struct_return = 0;
1628 enum noside sub_no_side = EVAL_NORMAL;
1630 struct value *msg_send = NULL;
1631 struct value *msg_send_stret = NULL;
1632 int gnu_runtime = 0;
1634 struct value *target = NULL;
1635 struct value *method = NULL;
1636 struct value *called_method = NULL;
1638 struct type *selector_type = NULL;
1639 struct type *long_type;
1641 struct value *ret = NULL;
1644 selector = exp->elts[pc + 1].longconst;
1645 nargs = exp->elts[pc + 2].longconst;
1646 argvec = XALLOCAVEC (struct value *, nargs + 5);
1650 long_type = builtin_type (exp->gdbarch)->builtin_long;
1651 selector_type = builtin_type (exp->gdbarch)->builtin_data_ptr;
1653 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1654 sub_no_side = EVAL_NORMAL;
1656 sub_no_side = noside;
1658 target = evaluate_subexp (selector_type, exp, pos, sub_no_side);
1660 if (value_as_long (target) == 0)
1661 return value_from_longest (long_type, 0);
1663 if (lookup_minimal_symbol ("objc_msg_lookup", 0, 0).minsym)
1666 /* Find the method dispatch (Apple runtime) or method lookup
1667 (GNU runtime) function for Objective-C. These will be used
1668 to lookup the symbol information for the method. If we
1669 can't find any symbol information, then we'll use these to
1670 call the method, otherwise we can call the method
1671 directly. The msg_send_stret function is used in the special
1672 case of a method that returns a structure (Apple runtime
1676 type = selector_type;
1678 type = lookup_function_type (type);
1679 type = lookup_pointer_type (type);
1680 type = lookup_function_type (type);
1681 type = lookup_pointer_type (type);
1683 msg_send = find_function_in_inferior ("objc_msg_lookup", NULL);
1685 = find_function_in_inferior ("objc_msg_lookup", NULL);
1687 msg_send = value_from_pointer (type, value_as_address (msg_send));
1688 msg_send_stret = value_from_pointer (type,
1689 value_as_address (msg_send_stret));
1693 msg_send = find_function_in_inferior ("objc_msgSend", NULL);
1694 /* Special dispatcher for methods returning structs. */
1696 = find_function_in_inferior ("objc_msgSend_stret", NULL);
1699 /* Verify the target object responds to this method. The
1700 standard top-level 'Object' class uses a different name for
1701 the verification method than the non-standard, but more
1702 often used, 'NSObject' class. Make sure we check for both. */
1705 = lookup_child_selector (exp->gdbarch, "respondsToSelector:");
1706 if (responds_selector == 0)
1708 = lookup_child_selector (exp->gdbarch, "respondsTo:");
1710 if (responds_selector == 0)
1711 error (_("no 'respondsTo:' or 'respondsToSelector:' method"));
1714 = lookup_child_selector (exp->gdbarch, "methodForSelector:");
1715 if (method_selector == 0)
1717 = lookup_child_selector (exp->gdbarch, "methodFor:");
1719 if (method_selector == 0)
1720 error (_("no 'methodFor:' or 'methodForSelector:' method"));
1722 /* Call the verification method, to make sure that the target
1723 class implements the desired method. */
1725 argvec[0] = msg_send;
1727 argvec[2] = value_from_longest (long_type, responds_selector);
1728 argvec[3] = value_from_longest (long_type, selector);
1731 ret = call_function_by_hand (argvec[0], NULL, {argvec + 1, 3});
1734 /* Function objc_msg_lookup returns a pointer. */
1736 ret = call_function_by_hand (argvec[0], NULL, {argvec + 1, 3});
1738 if (value_as_long (ret) == 0)
1739 error (_("Target does not respond to this message selector."));
1741 /* Call "methodForSelector:" method, to get the address of a
1742 function method that implements this selector for this
1743 class. If we can find a symbol at that address, then we
1744 know the return type, parameter types etc. (that's a good
1747 argvec[0] = msg_send;
1749 argvec[2] = value_from_longest (long_type, method_selector);
1750 argvec[3] = value_from_longest (long_type, selector);
1753 ret = call_function_by_hand (argvec[0], NULL, {argvec + 1, 3});
1757 ret = call_function_by_hand (argvec[0], NULL, {argvec + 1, 3});
1760 /* ret should now be the selector. */
1762 addr = value_as_long (ret);
1765 struct symbol *sym = NULL;
1767 /* The address might point to a function descriptor;
1768 resolve it to the actual code address instead. */
1769 addr = gdbarch_convert_from_func_ptr_addr (exp->gdbarch, addr,
1770 current_top_target ());
1772 /* Is it a high_level symbol? */
1773 sym = find_pc_function (addr);
1775 method = value_of_variable (sym, 0);
1778 /* If we found a method with symbol information, check to see
1779 if it returns a struct. Otherwise assume it doesn't. */
1784 struct type *val_type;
1786 funaddr = find_function_addr (method, &val_type);
1788 block_for_pc (funaddr);
1790 val_type = check_typedef (val_type);
1792 if ((val_type == NULL)
1793 || (TYPE_CODE(val_type) == TYPE_CODE_ERROR))
1795 if (expect_type != NULL)
1796 val_type = expect_type;
1799 struct_return = using_struct_return (exp->gdbarch, method,
1802 else if (expect_type != NULL)
1804 struct_return = using_struct_return (exp->gdbarch, NULL,
1805 check_typedef (expect_type));
1808 /* Found a function symbol. Now we will substitute its
1809 value in place of the message dispatcher (obj_msgSend),
1810 so that we call the method directly instead of thru
1811 the dispatcher. The main reason for doing this is that
1812 we can now evaluate the return value and parameter values
1813 according to their known data types, in case we need to
1814 do things like promotion, dereferencing, special handling
1815 of structs and doubles, etc.
1817 We want to use the type signature of 'method', but still
1818 jump to objc_msgSend() or objc_msgSend_stret() to better
1819 mimic the behavior of the runtime. */
1823 if (TYPE_CODE (value_type (method)) != TYPE_CODE_FUNC)
1824 error (_("method address has symbol information "
1825 "with non-function type; skipping"));
1827 /* Create a function pointer of the appropriate type, and
1828 replace its value with the value of msg_send or
1829 msg_send_stret. We must use a pointer here, as
1830 msg_send and msg_send_stret are of pointer type, and
1831 the representation may be different on systems that use
1832 function descriptors. */
1835 = value_from_pointer (lookup_pointer_type (value_type (method)),
1836 value_as_address (msg_send_stret));
1839 = value_from_pointer (lookup_pointer_type (value_type (method)),
1840 value_as_address (msg_send));
1845 called_method = msg_send_stret;
1847 called_method = msg_send;
1850 if (noside == EVAL_SKIP)
1851 return eval_skip_value (exp);
1853 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1855 /* If the return type doesn't look like a function type,
1856 call an error. This can happen if somebody tries to
1857 turn a variable into a function call. This is here
1858 because people often want to call, eg, strcmp, which
1859 gdb doesn't know is a function. If gdb isn't asked for
1860 it's opinion (ie. through "whatis"), it won't offer
1863 struct type *callee_type = value_type (called_method);
1865 if (callee_type && TYPE_CODE (callee_type) == TYPE_CODE_PTR)
1866 callee_type = TYPE_TARGET_TYPE (callee_type);
1867 callee_type = TYPE_TARGET_TYPE (callee_type);
1871 if ((TYPE_CODE (callee_type) == TYPE_CODE_ERROR) && expect_type)
1872 return allocate_value (expect_type);
1874 return allocate_value (callee_type);
1877 error (_("Expression of type other than "
1878 "\"method returning ...\" used as a method"));
1881 /* Now depending on whether we found a symbol for the method,
1882 we will either call the runtime dispatcher or the method
1885 argvec[0] = called_method;
1887 argvec[2] = value_from_longest (long_type, selector);
1888 /* User-supplied arguments. */
1889 for (tem = 0; tem < nargs; tem++)
1890 argvec[tem + 3] = evaluate_subexp_with_coercion (exp, pos, noside);
1891 argvec[tem + 3] = 0;
1893 auto call_args = gdb::make_array_view (argvec + 1, nargs + 2);
1895 if (gnu_runtime && (method != NULL))
1897 /* Function objc_msg_lookup returns a pointer. */
1898 deprecated_set_value_type (argvec[0],
1899 lookup_pointer_type (lookup_function_type (value_type (argvec[0]))));
1900 argvec[0] = call_function_by_hand (argvec[0], NULL, call_args);
1903 return call_function_by_hand (argvec[0], NULL, call_args);
1908 return evaluate_funcall (expect_type, exp, pos, noside);
1910 case OP_F77_UNDETERMINED_ARGLIST:
1912 /* Remember that in F77, functions, substring ops and
1913 array subscript operations cannot be disambiguated
1914 at parse time. We have made all array subscript operations,
1915 substring operations as well as function calls come here
1916 and we now have to discover what the heck this thing actually was.
1917 If it is a function, we process just as if we got an OP_FUNCALL. */
1919 nargs = longest_to_int (exp->elts[pc + 1].longconst);
1922 /* First determine the type code we are dealing with. */
1923 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1924 type = check_typedef (value_type (arg1));
1925 code = TYPE_CODE (type);
1927 if (code == TYPE_CODE_PTR)
1929 /* Fortran always passes variable to subroutines as pointer.
1930 So we need to look into its target type to see if it is
1931 array, string or function. If it is, we need to switch
1932 to the target value the original one points to. */
1933 struct type *target_type = check_typedef (TYPE_TARGET_TYPE (type));
1935 if (TYPE_CODE (target_type) == TYPE_CODE_ARRAY
1936 || TYPE_CODE (target_type) == TYPE_CODE_STRING
1937 || TYPE_CODE (target_type) == TYPE_CODE_FUNC)
1939 arg1 = value_ind (arg1);
1940 type = check_typedef (value_type (arg1));
1941 code = TYPE_CODE (type);
1947 case TYPE_CODE_ARRAY:
1948 if (exp->elts[*pos].opcode == OP_RANGE)
1949 return value_f90_subarray (arg1, exp, pos, noside);
1952 if (noside == EVAL_SKIP)
1954 skip_undetermined_arglist (nargs, exp, pos, noside);
1955 /* Return the dummy value with the correct type. */
1958 goto multi_f77_subscript;
1961 case TYPE_CODE_STRING:
1962 if (exp->elts[*pos].opcode == OP_RANGE)
1963 return value_f90_subarray (arg1, exp, pos, noside);
1966 if (noside == EVAL_SKIP)
1968 skip_undetermined_arglist (nargs, exp, pos, noside);
1969 /* Return the dummy value with the correct type. */
1972 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
1973 return value_subscript (arg1, value_as_long (arg2));
1977 case TYPE_CODE_FUNC:
1978 case TYPE_CODE_INTERNAL_FUNCTION:
1979 /* It's a function call. */
1980 /* Allocate arg vector, including space for the function to be
1981 called in argvec[0] and a terminating NULL. */
1982 argvec = (struct value **)
1983 alloca (sizeof (struct value *) * (nargs + 2));
1986 for (; tem <= nargs; tem++)
1988 argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
1989 /* Arguments in Fortran are passed by address. Coerce the
1990 arguments here rather than in value_arg_coerce as otherwise
1991 the call to malloc to place the non-lvalue parameters in
1992 target memory is hit by this Fortran specific logic. This
1993 results in malloc being called with a pointer to an integer
1994 followed by an attempt to malloc the arguments to malloc in
1995 target memory. Infinite recursion ensues. */
1996 if (code == TYPE_CODE_PTR || code == TYPE_CODE_FUNC)
1999 = TYPE_FIELD_ARTIFICIAL (value_type (arg1), tem - 1);
2000 argvec[tem] = fortran_argument_convert (argvec[tem],
2004 argvec[tem] = 0; /* signal end of arglist */
2005 if (noside == EVAL_SKIP)
2006 return eval_skip_value (exp);
2007 return eval_call (exp, noside, nargs, argvec, NULL, expect_type);
2010 error (_("Cannot perform substring on this type"));
2014 /* We have a complex number, There should be 2 floating
2015 point numbers that compose it. */
2017 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2018 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2020 return value_literal_complex (arg1, arg2, exp->elts[pc + 1].type);
2022 case STRUCTOP_STRUCT:
2023 tem = longest_to_int (exp->elts[pc + 1].longconst);
2024 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
2025 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2026 if (noside == EVAL_SKIP)
2027 return eval_skip_value (exp);
2028 arg3 = value_struct_elt (&arg1, NULL, &exp->elts[pc + 2].string,
2030 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2031 arg3 = value_zero (value_type (arg3), VALUE_LVAL (arg3));
2035 tem = longest_to_int (exp->elts[pc + 1].longconst);
2036 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
2037 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2038 if (noside == EVAL_SKIP)
2039 return eval_skip_value (exp);
2041 /* Check to see if operator '->' has been overloaded. If so replace
2042 arg1 with the value returned by evaluating operator->(). */
2043 while (unop_user_defined_p (op, arg1))
2045 struct value *value = NULL;
2048 value = value_x_unop (arg1, op, noside);
2051 catch (const gdb_exception_error &except)
2053 if (except.error == NOT_FOUND_ERROR)
2062 /* JYG: if print object is on we need to replace the base type
2063 with rtti type in order to continue on with successful
2064 lookup of member / method only available in the rtti type. */
2066 struct type *arg_type = value_type (arg1);
2067 struct type *real_type;
2068 int full, using_enc;
2070 struct value_print_options opts;
2072 get_user_print_options (&opts);
2073 if (opts.objectprint && TYPE_TARGET_TYPE (arg_type)
2074 && (TYPE_CODE (TYPE_TARGET_TYPE (arg_type)) == TYPE_CODE_STRUCT))
2076 real_type = value_rtti_indirect_type (arg1, &full, &top,
2079 arg1 = value_cast (real_type, arg1);
2083 arg3 = value_struct_elt (&arg1, NULL, &exp->elts[pc + 2].string,
2084 NULL, "structure pointer");
2085 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2086 arg3 = value_zero (value_type (arg3), VALUE_LVAL (arg3));
2089 case STRUCTOP_MEMBER:
2091 if (op == STRUCTOP_MEMBER)
2092 arg1 = evaluate_subexp_for_address (exp, pos, noside);
2094 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2096 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2098 if (noside == EVAL_SKIP)
2099 return eval_skip_value (exp);
2101 type = check_typedef (value_type (arg2));
2102 switch (TYPE_CODE (type))
2104 case TYPE_CODE_METHODPTR:
2105 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2106 return value_zero (TYPE_TARGET_TYPE (type), not_lval);
2109 arg2 = cplus_method_ptr_to_value (&arg1, arg2);
2110 gdb_assert (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR);
2111 return value_ind (arg2);
2114 case TYPE_CODE_MEMBERPTR:
2115 /* Now, convert these values to an address. */
2116 arg1 = value_cast_pointers (lookup_pointer_type (TYPE_SELF_TYPE (type)),
2119 mem_offset = value_as_long (arg2);
2121 arg3 = value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2122 value_as_long (arg1) + mem_offset);
2123 return value_ind (arg3);
2126 error (_("non-pointer-to-member value used "
2127 "in pointer-to-member construct"));
2132 type_instance_flags flags
2133 = (type_instance_flag_value) longest_to_int (exp->elts[pc + 1].longconst);
2134 nargs = longest_to_int (exp->elts[pc + 2].longconst);
2135 arg_types = (struct type **) alloca (nargs * sizeof (struct type *));
2136 for (ix = 0; ix < nargs; ++ix)
2137 arg_types[ix] = exp->elts[pc + 2 + ix + 1].type;
2139 fake_method fake_expect_type (flags, nargs, arg_types);
2140 *(pos) += 4 + nargs;
2141 return evaluate_subexp_standard (fake_expect_type.type (), exp, pos,
2146 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
2147 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
2148 if (noside == EVAL_SKIP)
2149 return eval_skip_value (exp);
2150 if (binop_user_defined_p (op, arg1, arg2))
2151 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2153 return value_concat (arg1, arg2);
2156 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2157 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2159 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2161 if (binop_user_defined_p (op, arg1, arg2))
2162 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2164 return value_assign (arg1, arg2);
2166 case BINOP_ASSIGN_MODIFY:
2168 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2169 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2170 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2172 op = exp->elts[pc + 1].opcode;
2173 if (binop_user_defined_p (op, arg1, arg2))
2174 return value_x_binop (arg1, arg2, BINOP_ASSIGN_MODIFY, op, noside);
2175 else if (op == BINOP_ADD && ptrmath_type_p (exp->language_defn,
2177 && is_integral_type (value_type (arg2)))
2178 arg2 = value_ptradd (arg1, value_as_long (arg2));
2179 else if (op == BINOP_SUB && ptrmath_type_p (exp->language_defn,
2181 && is_integral_type (value_type (arg2)))
2182 arg2 = value_ptradd (arg1, - value_as_long (arg2));
2185 struct value *tmp = arg1;
2187 /* For shift and integer exponentiation operations,
2188 only promote the first argument. */
2189 if ((op == BINOP_LSH || op == BINOP_RSH || op == BINOP_EXP)
2190 && is_integral_type (value_type (arg2)))
2191 unop_promote (exp->language_defn, exp->gdbarch, &tmp);
2193 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2195 arg2 = value_binop (tmp, arg2, op);
2197 return value_assign (arg1, arg2);
2200 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
2201 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
2202 if (noside == EVAL_SKIP)
2203 return eval_skip_value (exp);
2204 if (binop_user_defined_p (op, arg1, arg2))
2205 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2206 else if (ptrmath_type_p (exp->language_defn, value_type (arg1))
2207 && is_integral_type (value_type (arg2)))
2208 return value_ptradd (arg1, value_as_long (arg2));
2209 else if (ptrmath_type_p (exp->language_defn, value_type (arg2))
2210 && is_integral_type (value_type (arg1)))
2211 return value_ptradd (arg2, value_as_long (arg1));
2214 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2215 return value_binop (arg1, arg2, BINOP_ADD);
2219 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
2220 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
2221 if (noside == EVAL_SKIP)
2222 return eval_skip_value (exp);
2223 if (binop_user_defined_p (op, arg1, arg2))
2224 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2225 else if (ptrmath_type_p (exp->language_defn, value_type (arg1))
2226 && ptrmath_type_p (exp->language_defn, value_type (arg2)))
2228 /* FIXME -- should be ptrdiff_t */
2229 type = builtin_type (exp->gdbarch)->builtin_long;
2230 return value_from_longest (type, value_ptrdiff (arg1, arg2));
2232 else if (ptrmath_type_p (exp->language_defn, value_type (arg1))
2233 && is_integral_type (value_type (arg2)))
2234 return value_ptradd (arg1, - value_as_long (arg2));
2237 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2238 return value_binop (arg1, arg2, BINOP_SUB);
2249 case BINOP_BITWISE_AND:
2250 case BINOP_BITWISE_IOR:
2251 case BINOP_BITWISE_XOR:
2252 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2253 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2254 if (noside == EVAL_SKIP)
2255 return eval_skip_value (exp);
2256 if (binop_user_defined_p (op, arg1, arg2))
2257 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2260 /* If EVAL_AVOID_SIDE_EFFECTS and we're dividing by zero,
2261 fudge arg2 to avoid division-by-zero, the caller is
2262 (theoretically) only looking for the type of the result. */
2263 if (noside == EVAL_AVOID_SIDE_EFFECTS
2264 /* ??? Do we really want to test for BINOP_MOD here?
2265 The implementation of value_binop gives it a well-defined
2268 || op == BINOP_INTDIV
2271 && value_logical_not (arg2))
2273 struct value *v_one, *retval;
2275 v_one = value_one (value_type (arg2));
2276 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &v_one);
2277 retval = value_binop (arg1, v_one, op);
2282 /* For shift and integer exponentiation operations,
2283 only promote the first argument. */
2284 if ((op == BINOP_LSH || op == BINOP_RSH || op == BINOP_EXP)
2285 && is_integral_type (value_type (arg2)))
2286 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
2288 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2290 return value_binop (arg1, arg2, op);
2294 case BINOP_SUBSCRIPT:
2295 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2296 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2297 if (noside == EVAL_SKIP)
2298 return eval_skip_value (exp);
2299 if (binop_user_defined_p (op, arg1, arg2))
2300 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2303 /* If the user attempts to subscript something that is not an
2304 array or pointer type (like a plain int variable for example),
2305 then report this as an error. */
2307 arg1 = coerce_ref (arg1);
2308 type = check_typedef (value_type (arg1));
2309 if (TYPE_CODE (type) != TYPE_CODE_ARRAY
2310 && TYPE_CODE (type) != TYPE_CODE_PTR)
2312 if (TYPE_NAME (type))
2313 error (_("cannot subscript something of type `%s'"),
2316 error (_("cannot subscript requested type"));
2319 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2320 return value_zero (TYPE_TARGET_TYPE (type), VALUE_LVAL (arg1));
2322 return value_subscript (arg1, value_as_long (arg2));
2324 case MULTI_SUBSCRIPT:
2326 nargs = longest_to_int (exp->elts[pc + 1].longconst);
2327 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
2330 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
2331 /* FIXME: EVAL_SKIP handling may not be correct. */
2332 if (noside == EVAL_SKIP)
2336 return eval_skip_value (exp);
2338 /* FIXME: EVAL_AVOID_SIDE_EFFECTS handling may not be correct. */
2339 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2341 /* If the user attempts to subscript something that has no target
2342 type (like a plain int variable for example), then report this
2345 type = TYPE_TARGET_TYPE (check_typedef (value_type (arg1)));
2348 arg1 = value_zero (type, VALUE_LVAL (arg1));
2354 error (_("cannot subscript something of type `%s'"),
2355 TYPE_NAME (value_type (arg1)));
2359 if (binop_user_defined_p (op, arg1, arg2))
2361 arg1 = value_x_binop (arg1, arg2, op, OP_NULL, noside);
2365 arg1 = coerce_ref (arg1);
2366 type = check_typedef (value_type (arg1));
2368 switch (TYPE_CODE (type))
2371 case TYPE_CODE_ARRAY:
2372 case TYPE_CODE_STRING:
2373 arg1 = value_subscript (arg1, value_as_long (arg2));
2377 if (TYPE_NAME (type))
2378 error (_("cannot subscript something of type `%s'"),
2381 error (_("cannot subscript requested type"));
2387 multi_f77_subscript:
2389 LONGEST subscript_array[MAX_FORTRAN_DIMS];
2390 int ndimensions = 1, i;
2391 struct value *array = arg1;
2393 if (nargs > MAX_FORTRAN_DIMS)
2394 error (_("Too many subscripts for F77 (%d Max)"), MAX_FORTRAN_DIMS);
2396 ndimensions = calc_f77_array_dims (type);
2398 if (nargs != ndimensions)
2399 error (_("Wrong number of subscripts"));
2401 gdb_assert (nargs > 0);
2403 /* Now that we know we have a legal array subscript expression
2404 let us actually find out where this element exists in the array. */
2406 /* Take array indices left to right. */
2407 for (i = 0; i < nargs; i++)
2409 /* Evaluate each subscript; it must be a legal integer in F77. */
2410 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
2412 /* Fill in the subscript array. */
2414 subscript_array[i] = value_as_long (arg2);
2417 /* Internal type of array is arranged right to left. */
2418 for (i = nargs; i > 0; i--)
2420 struct type *array_type = check_typedef (value_type (array));
2421 LONGEST index = subscript_array[i - 1];
2423 array = value_subscripted_rvalue (array, index,
2424 f77_get_lowerbound (array_type));
2430 case BINOP_LOGICAL_AND:
2431 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2432 if (noside == EVAL_SKIP)
2434 evaluate_subexp (NULL_TYPE, exp, pos, noside);
2435 return eval_skip_value (exp);
2439 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2442 if (binop_user_defined_p (op, arg1, arg2))
2444 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2445 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2449 tem = value_logical_not (arg1);
2450 arg2 = evaluate_subexp (NULL_TYPE, exp, pos,
2451 (tem ? EVAL_SKIP : noside));
2452 type = language_bool_type (exp->language_defn, exp->gdbarch);
2453 return value_from_longest (type,
2454 (LONGEST) (!tem && !value_logical_not (arg2)));
2457 case BINOP_LOGICAL_OR:
2458 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2459 if (noside == EVAL_SKIP)
2461 evaluate_subexp (NULL_TYPE, exp, pos, noside);
2462 return eval_skip_value (exp);
2466 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2469 if (binop_user_defined_p (op, arg1, arg2))
2471 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2472 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2476 tem = value_logical_not (arg1);
2477 arg2 = evaluate_subexp (NULL_TYPE, exp, pos,
2478 (!tem ? EVAL_SKIP : noside));
2479 type = language_bool_type (exp->language_defn, exp->gdbarch);
2480 return value_from_longest (type,
2481 (LONGEST) (!tem || !value_logical_not (arg2)));
2485 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2486 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2487 if (noside == EVAL_SKIP)
2488 return eval_skip_value (exp);
2489 if (binop_user_defined_p (op, arg1, arg2))
2491 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2495 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2496 tem = value_equal (arg1, arg2);
2497 type = language_bool_type (exp->language_defn, exp->gdbarch);
2498 return value_from_longest (type, (LONGEST) tem);
2501 case BINOP_NOTEQUAL:
2502 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2503 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2504 if (noside == EVAL_SKIP)
2505 return eval_skip_value (exp);
2506 if (binop_user_defined_p (op, arg1, arg2))
2508 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2512 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2513 tem = value_equal (arg1, arg2);
2514 type = language_bool_type (exp->language_defn, exp->gdbarch);
2515 return value_from_longest (type, (LONGEST) ! tem);
2519 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2520 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2521 if (noside == EVAL_SKIP)
2522 return eval_skip_value (exp);
2523 if (binop_user_defined_p (op, arg1, arg2))
2525 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2529 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2530 tem = value_less (arg1, arg2);
2531 type = language_bool_type (exp->language_defn, exp->gdbarch);
2532 return value_from_longest (type, (LONGEST) tem);
2536 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2537 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2538 if (noside == EVAL_SKIP)
2539 return eval_skip_value (exp);
2540 if (binop_user_defined_p (op, arg1, arg2))
2542 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2546 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2547 tem = value_less (arg2, arg1);
2548 type = language_bool_type (exp->language_defn, exp->gdbarch);
2549 return value_from_longest (type, (LONGEST) tem);
2553 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2554 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2555 if (noside == EVAL_SKIP)
2556 return eval_skip_value (exp);
2557 if (binop_user_defined_p (op, arg1, arg2))
2559 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2563 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2564 tem = value_less (arg2, arg1) || value_equal (arg1, arg2);
2565 type = language_bool_type (exp->language_defn, exp->gdbarch);
2566 return value_from_longest (type, (LONGEST) tem);
2570 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2571 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2572 if (noside == EVAL_SKIP)
2573 return eval_skip_value (exp);
2574 if (binop_user_defined_p (op, arg1, arg2))
2576 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2580 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2581 tem = value_less (arg1, arg2) || value_equal (arg1, arg2);
2582 type = language_bool_type (exp->language_defn, exp->gdbarch);
2583 return value_from_longest (type, (LONGEST) tem);
2587 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2588 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2589 if (noside == EVAL_SKIP)
2590 return eval_skip_value (exp);
2591 type = check_typedef (value_type (arg2));
2592 if (TYPE_CODE (type) != TYPE_CODE_INT
2593 && TYPE_CODE (type) != TYPE_CODE_ENUM)
2594 error (_("Non-integral right operand for \"@\" operator."));
2595 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2597 return allocate_repeat_value (value_type (arg1),
2598 longest_to_int (value_as_long (arg2)));
2601 return value_repeat (arg1, longest_to_int (value_as_long (arg2)));
2604 evaluate_subexp (NULL_TYPE, exp, pos, noside);
2605 return evaluate_subexp (NULL_TYPE, exp, pos, noside);
2608 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2609 if (noside == EVAL_SKIP)
2610 return eval_skip_value (exp);
2611 if (unop_user_defined_p (op, arg1))
2612 return value_x_unop (arg1, op, noside);
2615 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
2616 return value_pos (arg1);
2620 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2621 if (noside == EVAL_SKIP)
2622 return eval_skip_value (exp);
2623 if (unop_user_defined_p (op, arg1))
2624 return value_x_unop (arg1, op, noside);
2627 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
2628 return value_neg (arg1);
2631 case UNOP_COMPLEMENT:
2632 /* C++: check for and handle destructor names. */
2634 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2635 if (noside == EVAL_SKIP)
2636 return eval_skip_value (exp);
2637 if (unop_user_defined_p (UNOP_COMPLEMENT, arg1))
2638 return value_x_unop (arg1, UNOP_COMPLEMENT, noside);
2641 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
2642 return value_complement (arg1);
2645 case UNOP_LOGICAL_NOT:
2646 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2647 if (noside == EVAL_SKIP)
2648 return eval_skip_value (exp);
2649 if (unop_user_defined_p (op, arg1))
2650 return value_x_unop (arg1, op, noside);
2653 type = language_bool_type (exp->language_defn, exp->gdbarch);
2654 return value_from_longest (type, (LONGEST) value_logical_not (arg1));
2658 if (expect_type && TYPE_CODE (expect_type) == TYPE_CODE_PTR)
2659 expect_type = TYPE_TARGET_TYPE (check_typedef (expect_type));
2660 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2661 type = check_typedef (value_type (arg1));
2662 if (TYPE_CODE (type) == TYPE_CODE_METHODPTR
2663 || TYPE_CODE (type) == TYPE_CODE_MEMBERPTR)
2664 error (_("Attempt to dereference pointer "
2665 "to member without an object"));
2666 if (noside == EVAL_SKIP)
2667 return eval_skip_value (exp);
2668 if (unop_user_defined_p (op, arg1))
2669 return value_x_unop (arg1, op, noside);
2670 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2672 type = check_typedef (value_type (arg1));
2673 if (TYPE_CODE (type) == TYPE_CODE_PTR
2674 || TYPE_IS_REFERENCE (type)
2675 /* In C you can dereference an array to get the 1st elt. */
2676 || TYPE_CODE (type) == TYPE_CODE_ARRAY
2678 return value_zero (TYPE_TARGET_TYPE (type),
2680 else if (TYPE_CODE (type) == TYPE_CODE_INT)
2681 /* GDB allows dereferencing an int. */
2682 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
2685 error (_("Attempt to take contents of a non-pointer value."));
2688 /* Allow * on an integer so we can cast it to whatever we want.
2689 This returns an int, which seems like the most C-like thing to
2690 do. "long long" variables are rare enough that
2691 BUILTIN_TYPE_LONGEST would seem to be a mistake. */
2692 if (TYPE_CODE (type) == TYPE_CODE_INT)
2693 return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
2694 (CORE_ADDR) value_as_address (arg1));
2695 return value_ind (arg1);
2698 /* C++: check for and handle pointer to members. */
2700 if (noside == EVAL_SKIP)
2702 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
2703 return eval_skip_value (exp);
2707 struct value *retvalp = evaluate_subexp_for_address (exp, pos,
2714 if (noside == EVAL_SKIP)
2716 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
2717 return eval_skip_value (exp);
2719 return evaluate_subexp_for_sizeof (exp, pos, noside);
2723 type = value_type (evaluate_subexp (NULL_TYPE, exp, pos,
2724 EVAL_AVOID_SIDE_EFFECTS));
2725 /* FIXME: This should be size_t. */
2726 struct type *size_type = builtin_type (exp->gdbarch)->builtin_int;
2727 ULONGEST align = type_align (type);
2729 error (_("could not determine alignment of type"));
2730 return value_from_longest (size_type, align);
2735 type = exp->elts[pc + 1].type;
2736 return evaluate_subexp_for_cast (exp, pos, noside, type);
2738 case UNOP_CAST_TYPE:
2739 arg1 = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2740 type = value_type (arg1);
2741 return evaluate_subexp_for_cast (exp, pos, noside, type);
2743 case UNOP_DYNAMIC_CAST:
2744 arg1 = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2745 type = value_type (arg1);
2746 arg1 = evaluate_subexp (type, exp, pos, noside);
2747 if (noside == EVAL_SKIP)
2748 return eval_skip_value (exp);
2749 return value_dynamic_cast (type, arg1);
2751 case UNOP_REINTERPRET_CAST:
2752 arg1 = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2753 type = value_type (arg1);
2754 arg1 = evaluate_subexp (type, exp, pos, noside);
2755 if (noside == EVAL_SKIP)
2756 return eval_skip_value (exp);
2757 return value_reinterpret_cast (type, arg1);
2761 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2762 if (noside == EVAL_SKIP)
2763 return eval_skip_value (exp);
2764 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2765 return value_zero (exp->elts[pc + 1].type, lval_memory);
2767 return value_at_lazy (exp->elts[pc + 1].type,
2768 value_as_address (arg1));
2770 case UNOP_MEMVAL_TYPE:
2771 arg1 = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2772 type = value_type (arg1);
2773 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2774 if (noside == EVAL_SKIP)
2775 return eval_skip_value (exp);
2776 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2777 return value_zero (type, lval_memory);
2779 return value_at_lazy (type, value_as_address (arg1));
2781 case UNOP_PREINCREMENT:
2782 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2783 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2785 else if (unop_user_defined_p (op, arg1))
2787 return value_x_unop (arg1, op, noside);
2791 if (ptrmath_type_p (exp->language_defn, value_type (arg1)))
2792 arg2 = value_ptradd (arg1, 1);
2795 struct value *tmp = arg1;
2797 arg2 = value_one (value_type (arg1));
2798 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2799 arg2 = value_binop (tmp, arg2, BINOP_ADD);
2802 return value_assign (arg1, arg2);
2805 case UNOP_PREDECREMENT:
2806 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2807 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2809 else if (unop_user_defined_p (op, arg1))
2811 return value_x_unop (arg1, op, noside);
2815 if (ptrmath_type_p (exp->language_defn, value_type (arg1)))
2816 arg2 = value_ptradd (arg1, -1);
2819 struct value *tmp = arg1;
2821 arg2 = value_one (value_type (arg1));
2822 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2823 arg2 = value_binop (tmp, arg2, BINOP_SUB);
2826 return value_assign (arg1, arg2);
2829 case UNOP_POSTINCREMENT:
2830 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2831 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2833 else if (unop_user_defined_p (op, arg1))
2835 return value_x_unop (arg1, op, noside);
2839 arg3 = value_non_lval (arg1);
2841 if (ptrmath_type_p (exp->language_defn, value_type (arg1)))
2842 arg2 = value_ptradd (arg1, 1);
2845 struct value *tmp = arg1;
2847 arg2 = value_one (value_type (arg1));
2848 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2849 arg2 = value_binop (tmp, arg2, BINOP_ADD);
2852 value_assign (arg1, arg2);
2856 case UNOP_POSTDECREMENT:
2857 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2858 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2860 else if (unop_user_defined_p (op, arg1))
2862 return value_x_unop (arg1, op, noside);
2866 arg3 = value_non_lval (arg1);
2868 if (ptrmath_type_p (exp->language_defn, value_type (arg1)))
2869 arg2 = value_ptradd (arg1, -1);
2872 struct value *tmp = arg1;
2874 arg2 = value_one (value_type (arg1));
2875 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2876 arg2 = value_binop (tmp, arg2, BINOP_SUB);
2879 value_assign (arg1, arg2);
2885 return value_of_this (exp->language_defn);
2888 /* The value is not supposed to be used. This is here to make it
2889 easier to accommodate expressions that contain types. */
2891 if (noside == EVAL_SKIP)
2892 return eval_skip_value (exp);
2893 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2894 return allocate_value (exp->elts[pc + 1].type);
2896 error (_("Attempt to use a type name as an expression"));
2900 if (noside == EVAL_SKIP)
2902 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
2903 return eval_skip_value (exp);
2905 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2907 enum exp_opcode sub_op = exp->elts[*pos].opcode;
2908 struct value *result;
2910 result = evaluate_subexp (NULL_TYPE, exp, pos,
2911 EVAL_AVOID_SIDE_EFFECTS);
2913 /* 'decltype' has special semantics for lvalues. */
2914 if (op == OP_DECLTYPE
2915 && (sub_op == BINOP_SUBSCRIPT
2916 || sub_op == STRUCTOP_MEMBER
2917 || sub_op == STRUCTOP_MPTR
2918 || sub_op == UNOP_IND
2919 || sub_op == STRUCTOP_STRUCT
2920 || sub_op == STRUCTOP_PTR
2921 || sub_op == OP_SCOPE))
2923 type = value_type (result);
2925 if (!TYPE_IS_REFERENCE (type))
2927 type = lookup_lvalue_reference_type (type);
2928 result = allocate_value (type);
2935 error (_("Attempt to use a type as an expression"));
2939 struct value *result;
2940 enum exp_opcode sub_op = exp->elts[*pos].opcode;
2942 if (sub_op == OP_TYPE || sub_op == OP_DECLTYPE || sub_op == OP_TYPEOF)
2943 result = evaluate_subexp (NULL_TYPE, exp, pos,
2944 EVAL_AVOID_SIDE_EFFECTS);
2946 result = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2948 if (noside != EVAL_NORMAL)
2949 return allocate_value (cplus_typeid_type (exp->gdbarch));
2951 return cplus_typeid (result);
2955 /* Removing this case and compiling with gcc -Wall reveals that
2956 a lot of cases are hitting this case. Some of these should
2957 probably be removed from expression.h; others are legitimate
2958 expressions which are (apparently) not fully implemented.
2960 If there are any cases landing here which mean a user error,
2961 then they should be separate cases, with more descriptive
2964 error (_("GDB does not (yet) know how to "
2965 "evaluate that kind of expression"));
2968 gdb_assert_not_reached ("missed return?");
2971 /* Evaluate a subexpression of EXP, at index *POS,
2972 and return the address of that subexpression.
2973 Advance *POS over the subexpression.
2974 If the subexpression isn't an lvalue, get an error.
2975 NOSIDE may be EVAL_AVOID_SIDE_EFFECTS;
2976 then only the type of the result need be correct. */
2978 static struct value *
2979 evaluate_subexp_for_address (struct expression *exp, int *pos,
2989 op = exp->elts[pc].opcode;
2995 x = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2997 /* We can't optimize out "&*" if there's a user-defined operator*. */
2998 if (unop_user_defined_p (op, x))
3000 x = value_x_unop (x, op, noside);
3001 goto default_case_after_eval;
3004 return coerce_array (x);
3008 return value_cast (lookup_pointer_type (exp->elts[pc + 1].type),
3009 evaluate_subexp (NULL_TYPE, exp, pos, noside));
3011 case UNOP_MEMVAL_TYPE:
3016 x = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3017 type = value_type (x);
3018 return value_cast (lookup_pointer_type (type),
3019 evaluate_subexp (NULL_TYPE, exp, pos, noside));
3023 var = exp->elts[pc + 2].symbol;
3025 /* C++: The "address" of a reference should yield the address
3026 * of the object pointed to. Let value_addr() deal with it. */
3027 if (TYPE_IS_REFERENCE (SYMBOL_TYPE (var)))
3031 if (noside == EVAL_AVOID_SIDE_EFFECTS)
3034 lookup_pointer_type (SYMBOL_TYPE (var));
3035 enum address_class sym_class = SYMBOL_CLASS (var);
3037 if (sym_class == LOC_CONST
3038 || sym_class == LOC_CONST_BYTES
3039 || sym_class == LOC_REGISTER)
3040 error (_("Attempt to take address of register or constant."));
3043 value_zero (type, not_lval);
3046 return address_of_variable (var, exp->elts[pc + 1].block);
3048 case OP_VAR_MSYM_VALUE:
3052 value *val = evaluate_var_msym_value (noside,
3053 exp->elts[pc + 1].objfile,
3054 exp->elts[pc + 2].msymbol);
3055 if (noside == EVAL_AVOID_SIDE_EFFECTS)
3057 struct type *type = lookup_pointer_type (value_type (val));
3058 return value_zero (type, not_lval);
3061 return value_addr (val);
3065 tem = longest_to_int (exp->elts[pc + 2].longconst);
3066 (*pos) += 5 + BYTES_TO_EXP_ELEM (tem + 1);
3067 x = value_aggregate_elt (exp->elts[pc + 1].type,
3068 &exp->elts[pc + 3].string,
3071 error (_("There is no field named %s"), &exp->elts[pc + 3].string);
3076 x = evaluate_subexp (NULL_TYPE, exp, pos, noside);
3077 default_case_after_eval:
3078 if (noside == EVAL_AVOID_SIDE_EFFECTS)
3080 struct type *type = check_typedef (value_type (x));
3082 if (TYPE_IS_REFERENCE (type))
3083 return value_zero (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
3085 else if (VALUE_LVAL (x) == lval_memory || value_must_coerce_to_target (x))
3086 return value_zero (lookup_pointer_type (value_type (x)),
3089 error (_("Attempt to take address of "
3090 "value not located in memory."));
3092 return value_addr (x);
3096 /* Evaluate like `evaluate_subexp' except coercing arrays to pointers.
3097 When used in contexts where arrays will be coerced anyway, this is
3098 equivalent to `evaluate_subexp' but much faster because it avoids
3099 actually fetching array contents (perhaps obsolete now that we have
3102 Note that we currently only do the coercion for C expressions, where
3103 arrays are zero based and the coercion is correct. For other languages,
3104 with nonzero based arrays, coercion loses. Use CAST_IS_CONVERSION
3105 to decide if coercion is appropriate. */
3108 evaluate_subexp_with_coercion (struct expression *exp,
3109 int *pos, enum noside noside)
3118 op = exp->elts[pc].opcode;
3123 var = exp->elts[pc + 2].symbol;
3124 type = check_typedef (SYMBOL_TYPE (var));
3125 if (TYPE_CODE (type) == TYPE_CODE_ARRAY
3126 && !TYPE_VECTOR (type)
3127 && CAST_IS_CONVERSION (exp->language_defn))
3130 val = address_of_variable (var, exp->elts[pc + 1].block);
3131 return value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
3137 return evaluate_subexp (NULL_TYPE, exp, pos, noside);
3141 /* Evaluate a subexpression of EXP, at index *POS,
3142 and return a value for the size of that subexpression.
3143 Advance *POS over the subexpression. If NOSIDE is EVAL_NORMAL
3144 we allow side-effects on the operand if its type is a variable
3147 static struct value *
3148 evaluate_subexp_for_sizeof (struct expression *exp, int *pos,
3151 /* FIXME: This should be size_t. */
3152 struct type *size_type = builtin_type (exp->gdbarch)->builtin_int;
3159 op = exp->elts[pc].opcode;
3163 /* This case is handled specially
3164 so that we avoid creating a value for the result type.
3165 If the result type is very big, it's desirable not to
3166 create a value unnecessarily. */
3169 val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3170 type = check_typedef (value_type (val));
3171 if (TYPE_CODE (type) != TYPE_CODE_PTR
3172 && !TYPE_IS_REFERENCE (type)
3173 && TYPE_CODE (type) != TYPE_CODE_ARRAY)
3174 error (_("Attempt to take contents of a non-pointer value."));
3175 type = TYPE_TARGET_TYPE (type);
3176 if (is_dynamic_type (type))
3177 type = value_type (value_ind (val));
3178 return value_from_longest (size_type, (LONGEST) TYPE_LENGTH (type));
3182 type = exp->elts[pc + 1].type;
3185 case UNOP_MEMVAL_TYPE:
3187 val = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3188 type = value_type (val);
3192 type = SYMBOL_TYPE (exp->elts[pc + 2].symbol);
3193 if (is_dynamic_type (type))
3195 val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
3196 type = value_type (val);
3197 if (TYPE_CODE (type) == TYPE_CODE_ARRAY
3198 && is_dynamic_type (TYPE_INDEX_TYPE (type))
3199 && TYPE_HIGH_BOUND_UNDEFINED (TYPE_INDEX_TYPE (type)))
3200 return allocate_optimized_out_value (size_type);
3206 case OP_VAR_MSYM_VALUE:
3210 minimal_symbol *msymbol = exp->elts[pc + 2].msymbol;
3211 value *mval = evaluate_var_msym_value (noside,
3212 exp->elts[pc + 1].objfile,
3215 type = value_type (mval);
3216 if (TYPE_CODE (type) == TYPE_CODE_ERROR)
3217 error_unknown_type (MSYMBOL_PRINT_NAME (msymbol));
3219 return value_from_longest (size_type, TYPE_LENGTH (type));
3223 /* Deal with the special case if NOSIDE is EVAL_NORMAL and the resulting
3224 type of the subscript is a variable length array type. In this case we
3225 must re-evaluate the right hand side of the subcription to allow
3227 case BINOP_SUBSCRIPT:
3228 if (noside == EVAL_NORMAL)
3230 int npc = (*pos) + 1;
3232 val = evaluate_subexp (NULL_TYPE, exp, &npc, EVAL_AVOID_SIDE_EFFECTS);
3233 type = check_typedef (value_type (val));
3234 if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
3236 type = check_typedef (TYPE_TARGET_TYPE (type));
3237 if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
3239 type = TYPE_INDEX_TYPE (type);
3240 /* Only re-evaluate the right hand side if the resulting type
3241 is a variable length type. */
3242 if (TYPE_RANGE_DATA (type)->flag_bound_evaluated)
3244 val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
3245 return value_from_longest
3246 (size_type, (LONGEST) TYPE_LENGTH (value_type (val)));
3255 val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3256 type = value_type (val);
3260 /* $5.3.3/2 of the C++ Standard (n3290 draft) says of sizeof:
3261 "When applied to a reference or a reference type, the result is
3262 the size of the referenced type." */
3263 type = check_typedef (type);
3264 if (exp->language_defn->la_language == language_cplus
3265 && (TYPE_IS_REFERENCE (type)))
3266 type = check_typedef (TYPE_TARGET_TYPE (type));
3267 return value_from_longest (size_type, (LONGEST) TYPE_LENGTH (type));
3270 /* Evaluate a subexpression of EXP, at index *POS, and return a value
3271 for that subexpression cast to TO_TYPE. Advance *POS over the
3275 evaluate_subexp_for_cast (expression *exp, int *pos,
3277 struct type *to_type)
3281 /* Don't let symbols be evaluated with evaluate_subexp because that
3282 throws an "unknown type" error for no-debug data symbols.
3283 Instead, we want the cast to reinterpret the symbol. */
3284 if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
3285 || exp->elts[pc].opcode == OP_VAR_VALUE)
3290 if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3292 if (noside == EVAL_AVOID_SIDE_EFFECTS)
3293 return value_zero (to_type, not_lval);
3295 val = evaluate_var_msym_value (noside,
3296 exp->elts[pc + 1].objfile,
3297 exp->elts[pc + 2].msymbol);
3300 val = evaluate_var_value (noside,
3301 exp->elts[pc + 1].block,
3302 exp->elts[pc + 2].symbol);
3304 if (noside == EVAL_SKIP)
3305 return eval_skip_value (exp);
3307 val = value_cast (to_type, val);
3309 /* Don't allow e.g. '&(int)var_with_no_debug_info'. */
3310 if (VALUE_LVAL (val) == lval_memory)
3312 if (value_lazy (val))
3313 value_fetch_lazy (val);
3314 VALUE_LVAL (val) = not_lval;
3319 value *val = evaluate_subexp (to_type, exp, pos, noside);
3320 if (noside == EVAL_SKIP)
3321 return eval_skip_value (exp);
3322 return value_cast (to_type, val);
3325 /* Parse a type expression in the string [P..P+LENGTH). */
3328 parse_and_eval_type (char *p, int length)
3330 char *tmp = (char *) alloca (length + 4);
3333 memcpy (tmp + 1, p, length);
3334 tmp[length + 1] = ')';
3335 tmp[length + 2] = '0';
3336 tmp[length + 3] = '\0';
3337 expression_up expr = parse_expression (tmp);
3338 if (expr->elts[0].opcode != UNOP_CAST)
3339 error (_("Internal error in eval_type."));
3340 return expr->elts[1].type;
3344 calc_f77_array_dims (struct type *array_type)
3347 struct type *tmp_type;
3349 if ((TYPE_CODE (array_type) != TYPE_CODE_ARRAY))
3350 error (_("Can't get dimensions for a non-array type"));
3352 tmp_type = array_type;
3354 while ((tmp_type = TYPE_TARGET_TYPE (tmp_type)))
3356 if (TYPE_CODE (tmp_type) == TYPE_CODE_ARRAY)