44384130f6c12eb0e6f28706d47e45389e1140e1
[deliverable/binutils-gdb.git] / gdb / eval.c
1 /* Evaluate expressions for GDB.
2
3 Copyright (C) 1986-2021 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
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.
11
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.
16
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/>. */
19
20 #include "defs.h"
21 #include "symtab.h"
22 #include "gdbtypes.h"
23 #include "value.h"
24 #include "expression.h"
25 #include "target.h"
26 #include "frame.h"
27 #include "gdbthread.h"
28 #include "language.h" /* For CAST_IS_CONVERSION. */
29 #include "cp-abi.h"
30 #include "infcall.h"
31 #include "objc-lang.h"
32 #include "block.h"
33 #include "parser-defs.h"
34 #include "cp-support.h"
35 #include "ui-out.h"
36 #include "regcache.h"
37 #include "user-regs.h"
38 #include "valprint.h"
39 #include "gdb_obstack.h"
40 #include "objfiles.h"
41 #include "typeprint.h"
42 #include <ctype.h>
43 #include "expop.h"
44 #include "c-exp.h"
45
46 /* Prototypes for local functions. */
47
48 static struct value *evaluate_subexp_for_sizeof (struct expression *, int *,
49 enum noside);
50
51 static struct value *evaluate_subexp_for_address (struct expression *,
52 int *, enum noside);
53
54 static value *evaluate_subexp_for_cast (expression *exp, int *pos,
55 enum noside noside,
56 struct type *type);
57
58 static struct value *evaluate_struct_tuple (struct value *,
59 struct expression *, int *,
60 enum noside, int);
61
62 struct value *
63 evaluate_subexp (struct type *expect_type, struct expression *exp,
64 int *pos, enum noside noside)
65 {
66 return ((*exp->language_defn->expression_ops ()->evaluate_exp)
67 (expect_type, exp, pos, noside));
68 }
69 \f
70 /* Parse the string EXP as a C expression, evaluate it,
71 and return the result as a number. */
72
73 CORE_ADDR
74 parse_and_eval_address (const char *exp)
75 {
76 expression_up expr = parse_expression (exp);
77
78 return value_as_address (evaluate_expression (expr.get ()));
79 }
80
81 /* Like parse_and_eval_address, but treats the value of the expression
82 as an integer, not an address, returns a LONGEST, not a CORE_ADDR. */
83 LONGEST
84 parse_and_eval_long (const char *exp)
85 {
86 expression_up expr = parse_expression (exp);
87
88 return value_as_long (evaluate_expression (expr.get ()));
89 }
90
91 struct value *
92 parse_and_eval (const char *exp)
93 {
94 expression_up expr = parse_expression (exp);
95
96 return evaluate_expression (expr.get ());
97 }
98
99 /* Parse up to a comma (or to a closeparen)
100 in the string EXPP as an expression, evaluate it, and return the value.
101 EXPP is advanced to point to the comma. */
102
103 struct value *
104 parse_to_comma_and_eval (const char **expp)
105 {
106 expression_up expr = parse_exp_1 (expp, 0, nullptr, 1);
107
108 return evaluate_expression (expr.get ());
109 }
110 \f
111
112 /* See expression.h. */
113
114 struct value *
115 expression::evaluate (struct type *expect_type, enum noside noside)
116 {
117 gdb::optional<enable_thread_stack_temporaries> stack_temporaries;
118 if (target_has_execution ()
119 && language_defn->la_language == language_cplus
120 && !thread_stack_temporaries_enabled_p (inferior_thread ()))
121 stack_temporaries.emplace (inferior_thread ());
122
123 int pos = 0;
124 struct value *retval = evaluate_subexp (expect_type, this, &pos, noside);
125
126 if (stack_temporaries.has_value ()
127 && value_in_thread_stack_temporaries (retval, inferior_thread ()))
128 retval = value_non_lval (retval);
129
130 return retval;
131 }
132
133 /* See value.h. */
134
135 struct value *
136 evaluate_expression (struct expression *exp, struct type *expect_type)
137 {
138 return exp->evaluate (expect_type, EVAL_NORMAL);
139 }
140
141 /* Evaluate an expression, avoiding all memory references
142 and getting a value whose type alone is correct. */
143
144 struct value *
145 evaluate_type (struct expression *exp)
146 {
147 return exp->evaluate (nullptr, EVAL_AVOID_SIDE_EFFECTS);
148 }
149
150 /* Evaluate a subexpression, avoiding all memory references and
151 getting a value whose type alone is correct. */
152
153 struct value *
154 evaluate_subexpression_type (struct expression *exp, int subexp)
155 {
156 return evaluate_subexp (nullptr, exp, &subexp, EVAL_AVOID_SIDE_EFFECTS);
157 }
158
159 /* Find the current value of a watchpoint on EXP. Return the value in
160 *VALP and *RESULTP and the chain of intermediate and final values
161 in *VAL_CHAIN. RESULTP and VAL_CHAIN may be NULL if the caller does
162 not need them.
163
164 If PRESERVE_ERRORS is true, then exceptions are passed through.
165 Otherwise, if PRESERVE_ERRORS is false, then if a memory error
166 occurs while evaluating the expression, *RESULTP will be set to
167 NULL. *RESULTP may be a lazy value, if the result could not be
168 read from memory. It is used to determine whether a value is
169 user-specified (we should watch the whole value) or intermediate
170 (we should watch only the bit used to locate the final value).
171
172 If the final value, or any intermediate value, could not be read
173 from memory, *VALP will be set to NULL. *VAL_CHAIN will still be
174 set to any referenced values. *VALP will never be a lazy value.
175 This is the value which we store in struct breakpoint.
176
177 If VAL_CHAIN is non-NULL, the values put into *VAL_CHAIN will be
178 released from the value chain. If VAL_CHAIN is NULL, all generated
179 values will be left on the value chain. */
180
181 void
182 fetch_subexp_value (struct expression *exp, int *pc, struct value **valp,
183 struct value **resultp,
184 std::vector<value_ref_ptr> *val_chain,
185 bool preserve_errors)
186 {
187 struct value *mark, *new_mark, *result;
188
189 *valp = NULL;
190 if (resultp)
191 *resultp = NULL;
192 if (val_chain)
193 val_chain->clear ();
194
195 /* Evaluate the expression. */
196 mark = value_mark ();
197 result = NULL;
198
199 try
200 {
201 result = evaluate_subexp (nullptr, exp, pc, EVAL_NORMAL);
202 }
203 catch (const gdb_exception &ex)
204 {
205 /* Ignore memory errors if we want watchpoints pointing at
206 inaccessible memory to still be created; otherwise, throw the
207 error to some higher catcher. */
208 switch (ex.error)
209 {
210 case MEMORY_ERROR:
211 if (!preserve_errors)
212 break;
213 /* Fall through. */
214 default:
215 throw;
216 break;
217 }
218 }
219
220 new_mark = value_mark ();
221 if (mark == new_mark)
222 return;
223 if (resultp)
224 *resultp = result;
225
226 /* Make sure it's not lazy, so that after the target stops again we
227 have a non-lazy previous value to compare with. */
228 if (result != NULL)
229 {
230 if (!value_lazy (result))
231 *valp = result;
232 else
233 {
234
235 try
236 {
237 value_fetch_lazy (result);
238 *valp = result;
239 }
240 catch (const gdb_exception_error &except)
241 {
242 }
243 }
244 }
245
246 if (val_chain)
247 {
248 /* Return the chain of intermediate values. We use this to
249 decide which addresses to watch. */
250 *val_chain = value_release_to_mark (mark);
251 }
252 }
253
254 /* Extract a field operation from an expression. If the subexpression
255 of EXP starting at *SUBEXP is not a structure dereference
256 operation, return NULL. Otherwise, return the name of the
257 dereferenced field, and advance *SUBEXP to point to the
258 subexpression of the left-hand-side of the dereference. This is
259 used when completing field names. */
260
261 const char *
262 extract_field_op (struct expression *exp, int *subexp)
263 {
264 int tem;
265 char *result;
266
267 if (exp->elts[*subexp].opcode != STRUCTOP_STRUCT
268 && exp->elts[*subexp].opcode != STRUCTOP_PTR)
269 return NULL;
270 tem = longest_to_int (exp->elts[*subexp + 1].longconst);
271 result = &exp->elts[*subexp + 2].string;
272 (*subexp) += 1 + 3 + BYTES_TO_EXP_ELEM (tem + 1);
273 return result;
274 }
275
276 /* This function evaluates brace-initializers (in C/C++) for
277 structure types. */
278
279 static struct value *
280 evaluate_struct_tuple (struct value *struct_val,
281 struct expression *exp,
282 int *pos, enum noside noside, int nargs)
283 {
284 struct type *struct_type = check_typedef (value_type (struct_val));
285 struct type *field_type;
286 int fieldno = -1;
287
288 while (--nargs >= 0)
289 {
290 struct value *val = NULL;
291 int bitpos, bitsize;
292 bfd_byte *addr;
293
294 fieldno++;
295 /* Skip static fields. */
296 while (fieldno < struct_type->num_fields ()
297 && field_is_static (&struct_type->field (fieldno)))
298 fieldno++;
299 if (fieldno >= struct_type->num_fields ())
300 error (_("too many initializers"));
301 field_type = struct_type->field (fieldno).type ();
302 if (field_type->code () == TYPE_CODE_UNION
303 && TYPE_FIELD_NAME (struct_type, fieldno)[0] == '0')
304 error (_("don't know which variant you want to set"));
305
306 /* Here, struct_type is the type of the inner struct,
307 while substruct_type is the type of the inner struct.
308 These are the same for normal structures, but a variant struct
309 contains anonymous union fields that contain substruct fields.
310 The value fieldno is the index of the top-level (normal or
311 anonymous union) field in struct_field, while the value
312 subfieldno is the index of the actual real (named inner) field
313 in substruct_type. */
314
315 field_type = struct_type->field (fieldno).type ();
316 if (val == 0)
317 val = evaluate_subexp (field_type, exp, pos, noside);
318
319 /* Now actually set the field in struct_val. */
320
321 /* Assign val to field fieldno. */
322 if (value_type (val) != field_type)
323 val = value_cast (field_type, val);
324
325 bitsize = TYPE_FIELD_BITSIZE (struct_type, fieldno);
326 bitpos = TYPE_FIELD_BITPOS (struct_type, fieldno);
327 addr = value_contents_writeable (struct_val) + bitpos / 8;
328 if (bitsize)
329 modify_field (struct_type, addr,
330 value_as_long (val), bitpos % 8, bitsize);
331 else
332 memcpy (addr, value_contents (val),
333 TYPE_LENGTH (value_type (val)));
334
335 }
336 return struct_val;
337 }
338
339 /* Promote value ARG1 as appropriate before performing a unary operation
340 on this argument.
341 If the result is not appropriate for any particular language then it
342 needs to patch this function. */
343
344 void
345 unop_promote (const struct language_defn *language, struct gdbarch *gdbarch,
346 struct value **arg1)
347 {
348 struct type *type1;
349
350 *arg1 = coerce_ref (*arg1);
351 type1 = check_typedef (value_type (*arg1));
352
353 if (is_integral_type (type1))
354 {
355 switch (language->la_language)
356 {
357 default:
358 /* Perform integral promotion for ANSI C/C++.
359 If not appropriate for any particular language
360 it needs to modify this function. */
361 {
362 struct type *builtin_int = builtin_type (gdbarch)->builtin_int;
363
364 if (TYPE_LENGTH (type1) < TYPE_LENGTH (builtin_int))
365 *arg1 = value_cast (builtin_int, *arg1);
366 }
367 break;
368 }
369 }
370 }
371
372 /* Promote values ARG1 and ARG2 as appropriate before performing a binary
373 operation on those two operands.
374 If the result is not appropriate for any particular language then it
375 needs to patch this function. */
376
377 void
378 binop_promote (const struct language_defn *language, struct gdbarch *gdbarch,
379 struct value **arg1, struct value **arg2)
380 {
381 struct type *promoted_type = NULL;
382 struct type *type1;
383 struct type *type2;
384
385 *arg1 = coerce_ref (*arg1);
386 *arg2 = coerce_ref (*arg2);
387
388 type1 = check_typedef (value_type (*arg1));
389 type2 = check_typedef (value_type (*arg2));
390
391 if ((type1->code () != TYPE_CODE_FLT
392 && type1->code () != TYPE_CODE_DECFLOAT
393 && !is_integral_type (type1))
394 || (type2->code () != TYPE_CODE_FLT
395 && type2->code () != TYPE_CODE_DECFLOAT
396 && !is_integral_type (type2)))
397 return;
398
399 if (is_fixed_point_type (type1) || is_fixed_point_type (type2))
400 return;
401
402 if (type1->code () == TYPE_CODE_DECFLOAT
403 || type2->code () == TYPE_CODE_DECFLOAT)
404 {
405 /* No promotion required. */
406 }
407 else if (type1->code () == TYPE_CODE_FLT
408 || type2->code () == TYPE_CODE_FLT)
409 {
410 switch (language->la_language)
411 {
412 case language_c:
413 case language_cplus:
414 case language_asm:
415 case language_objc:
416 case language_opencl:
417 /* No promotion required. */
418 break;
419
420 default:
421 /* For other languages the result type is unchanged from gdb
422 version 6.7 for backward compatibility.
423 If either arg was long double, make sure that value is also long
424 double. Otherwise use double. */
425 if (TYPE_LENGTH (type1) * 8 > gdbarch_double_bit (gdbarch)
426 || TYPE_LENGTH (type2) * 8 > gdbarch_double_bit (gdbarch))
427 promoted_type = builtin_type (gdbarch)->builtin_long_double;
428 else
429 promoted_type = builtin_type (gdbarch)->builtin_double;
430 break;
431 }
432 }
433 else if (type1->code () == TYPE_CODE_BOOL
434 && type2->code () == TYPE_CODE_BOOL)
435 {
436 /* No promotion required. */
437 }
438 else
439 /* Integral operations here. */
440 /* FIXME: Also mixed integral/booleans, with result an integer. */
441 {
442 const struct builtin_type *builtin = builtin_type (gdbarch);
443 unsigned int promoted_len1 = TYPE_LENGTH (type1);
444 unsigned int promoted_len2 = TYPE_LENGTH (type2);
445 int is_unsigned1 = type1->is_unsigned ();
446 int is_unsigned2 = type2->is_unsigned ();
447 unsigned int result_len;
448 int unsigned_operation;
449
450 /* Determine type length and signedness after promotion for
451 both operands. */
452 if (promoted_len1 < TYPE_LENGTH (builtin->builtin_int))
453 {
454 is_unsigned1 = 0;
455 promoted_len1 = TYPE_LENGTH (builtin->builtin_int);
456 }
457 if (promoted_len2 < TYPE_LENGTH (builtin->builtin_int))
458 {
459 is_unsigned2 = 0;
460 promoted_len2 = TYPE_LENGTH (builtin->builtin_int);
461 }
462
463 if (promoted_len1 > promoted_len2)
464 {
465 unsigned_operation = is_unsigned1;
466 result_len = promoted_len1;
467 }
468 else if (promoted_len2 > promoted_len1)
469 {
470 unsigned_operation = is_unsigned2;
471 result_len = promoted_len2;
472 }
473 else
474 {
475 unsigned_operation = is_unsigned1 || is_unsigned2;
476 result_len = promoted_len1;
477 }
478
479 switch (language->la_language)
480 {
481 case language_c:
482 case language_cplus:
483 case language_asm:
484 case language_objc:
485 if (result_len <= TYPE_LENGTH (builtin->builtin_int))
486 {
487 promoted_type = (unsigned_operation
488 ? builtin->builtin_unsigned_int
489 : builtin->builtin_int);
490 }
491 else if (result_len <= TYPE_LENGTH (builtin->builtin_long))
492 {
493 promoted_type = (unsigned_operation
494 ? builtin->builtin_unsigned_long
495 : builtin->builtin_long);
496 }
497 else
498 {
499 promoted_type = (unsigned_operation
500 ? builtin->builtin_unsigned_long_long
501 : builtin->builtin_long_long);
502 }
503 break;
504 case language_opencl:
505 if (result_len <= TYPE_LENGTH (lookup_signed_typename
506 (language, "int")))
507 {
508 promoted_type =
509 (unsigned_operation
510 ? lookup_unsigned_typename (language, "int")
511 : lookup_signed_typename (language, "int"));
512 }
513 else if (result_len <= TYPE_LENGTH (lookup_signed_typename
514 (language, "long")))
515 {
516 promoted_type =
517 (unsigned_operation
518 ? lookup_unsigned_typename (language, "long")
519 : lookup_signed_typename (language,"long"));
520 }
521 break;
522 default:
523 /* For other languages the result type is unchanged from gdb
524 version 6.7 for backward compatibility.
525 If either arg was long long, make sure that value is also long
526 long. Otherwise use long. */
527 if (unsigned_operation)
528 {
529 if (result_len > gdbarch_long_bit (gdbarch) / HOST_CHAR_BIT)
530 promoted_type = builtin->builtin_unsigned_long_long;
531 else
532 promoted_type = builtin->builtin_unsigned_long;
533 }
534 else
535 {
536 if (result_len > gdbarch_long_bit (gdbarch) / HOST_CHAR_BIT)
537 promoted_type = builtin->builtin_long_long;
538 else
539 promoted_type = builtin->builtin_long;
540 }
541 break;
542 }
543 }
544
545 if (promoted_type)
546 {
547 /* Promote both operands to common type. */
548 *arg1 = value_cast (promoted_type, *arg1);
549 *arg2 = value_cast (promoted_type, *arg2);
550 }
551 }
552
553 static int
554 ptrmath_type_p (const struct language_defn *lang, struct type *type)
555 {
556 type = check_typedef (type);
557 if (TYPE_IS_REFERENCE (type))
558 type = TYPE_TARGET_TYPE (type);
559
560 switch (type->code ())
561 {
562 case TYPE_CODE_PTR:
563 case TYPE_CODE_FUNC:
564 return 1;
565
566 case TYPE_CODE_ARRAY:
567 return type->is_vector () ? 0 : lang->c_style_arrays_p ();
568
569 default:
570 return 0;
571 }
572 }
573
574 /* Represents a fake method with the given parameter types. This is
575 used by the parser to construct a temporary "expected" type for
576 method overload resolution. FLAGS is used as instance flags of the
577 new type, in order to be able to make the new type represent a
578 const/volatile overload. */
579
580 class fake_method
581 {
582 public:
583 fake_method (type_instance_flags flags,
584 int num_types, struct type **param_types);
585 ~fake_method ();
586
587 /* The constructed type. */
588 struct type *type () { return &m_type; }
589
590 private:
591 struct type m_type {};
592 main_type m_main_type {};
593 };
594
595 fake_method::fake_method (type_instance_flags flags,
596 int num_types, struct type **param_types)
597 {
598 struct type *type = &m_type;
599
600 TYPE_MAIN_TYPE (type) = &m_main_type;
601 TYPE_LENGTH (type) = 1;
602 type->set_code (TYPE_CODE_METHOD);
603 TYPE_CHAIN (type) = type;
604 type->set_instance_flags (flags);
605 if (num_types > 0)
606 {
607 if (param_types[num_types - 1] == NULL)
608 {
609 --num_types;
610 type->set_has_varargs (true);
611 }
612 else if (check_typedef (param_types[num_types - 1])->code ()
613 == TYPE_CODE_VOID)
614 {
615 --num_types;
616 /* Caller should have ensured this. */
617 gdb_assert (num_types == 0);
618 type->set_is_prototyped (true);
619 }
620 }
621
622 /* We don't use TYPE_ZALLOC here to allocate space as TYPE is owned by
623 neither an objfile nor a gdbarch. As a result we must manually
624 allocate memory for auxiliary fields, and free the memory ourselves
625 when we are done with it. */
626 type->set_num_fields (num_types);
627 type->set_fields
628 ((struct field *) xzalloc (sizeof (struct field) * num_types));
629
630 while (num_types-- > 0)
631 type->field (num_types).set_type (param_types[num_types]);
632 }
633
634 fake_method::~fake_method ()
635 {
636 xfree (m_type.fields ());
637 }
638
639 namespace expr
640 {
641
642 value *
643 type_instance_operation::evaluate (struct type *expect_type,
644 struct expression *exp,
645 enum noside noside)
646 {
647 type_instance_flags flags = std::get<0> (m_storage);
648 std::vector<type *> &types = std::get<1> (m_storage);
649
650 fake_method fake_expect_type (flags, types.size (), types.data ());
651 return std::get<2> (m_storage)->evaluate (fake_expect_type.type (),
652 exp, noside);
653 }
654
655 }
656
657 /* Helper for evaluating an OP_VAR_VALUE. */
658
659 value *
660 evaluate_var_value (enum noside noside, const block *blk, symbol *var)
661 {
662 /* JYG: We used to just return value_zero of the symbol type if
663 we're asked to avoid side effects. Otherwise we return
664 value_of_variable (...). However I'm not sure if
665 value_of_variable () has any side effect. We need a full value
666 object returned here for whatis_exp () to call evaluate_type ()
667 and then pass the full value to value_rtti_target_type () if we
668 are dealing with a pointer or reference to a base class and print
669 object is on. */
670
671 struct value *ret = NULL;
672
673 try
674 {
675 ret = value_of_variable (var, blk);
676 }
677
678 catch (const gdb_exception_error &except)
679 {
680 if (noside != EVAL_AVOID_SIDE_EFFECTS)
681 throw;
682
683 ret = value_zero (SYMBOL_TYPE (var), not_lval);
684 }
685
686 return ret;
687 }
688
689 namespace expr
690
691 {
692
693 value *
694 var_value_operation::evaluate (struct type *expect_type,
695 struct expression *exp,
696 enum noside noside)
697 {
698 symbol *var = std::get<0> (m_storage);
699 if (SYMBOL_TYPE (var)->code () == TYPE_CODE_ERROR)
700 error_unknown_type (var->print_name ());
701 return evaluate_var_value (noside, std::get<1> (m_storage), var);
702 }
703
704 } /* namespace expr */
705
706 /* Helper for evaluating an OP_VAR_MSYM_VALUE. */
707
708 value *
709 evaluate_var_msym_value (enum noside noside,
710 struct objfile *objfile, minimal_symbol *msymbol)
711 {
712 CORE_ADDR address;
713 type *the_type = find_minsym_type_and_address (msymbol, objfile, &address);
714
715 if (noside == EVAL_AVOID_SIDE_EFFECTS && !the_type->is_gnu_ifunc ())
716 return value_zero (the_type, not_lval);
717 else
718 return value_at_lazy (the_type, address);
719 }
720
721 /* Helper for returning a value when handling EVAL_SKIP. */
722
723 value *
724 eval_skip_value (expression *exp)
725 {
726 return value_from_longest (builtin_type (exp->gdbarch)->builtin_int, 1);
727 }
728
729 /* See expression.h. */
730
731 value *
732 evaluate_subexp_do_call (expression *exp, enum noside noside,
733 value *callee,
734 gdb::array_view<value *> argvec,
735 const char *function_name,
736 type *default_return_type)
737 {
738 if (callee == NULL)
739 error (_("Cannot evaluate function -- may be inlined"));
740 if (noside == EVAL_AVOID_SIDE_EFFECTS)
741 {
742 /* If the return type doesn't look like a function type,
743 call an error. This can happen if somebody tries to turn
744 a variable into a function call. */
745
746 type *ftype = value_type (callee);
747
748 if (ftype->code () == TYPE_CODE_INTERNAL_FUNCTION)
749 {
750 /* We don't know anything about what the internal
751 function might return, but we have to return
752 something. */
753 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
754 not_lval);
755 }
756 else if (ftype->code () == TYPE_CODE_XMETHOD)
757 {
758 type *return_type = result_type_of_xmethod (callee, argvec);
759
760 if (return_type == NULL)
761 error (_("Xmethod is missing return type."));
762 return value_zero (return_type, not_lval);
763 }
764 else if (ftype->code () == TYPE_CODE_FUNC
765 || ftype->code () == TYPE_CODE_METHOD)
766 {
767 if (ftype->is_gnu_ifunc ())
768 {
769 CORE_ADDR address = value_address (callee);
770 type *resolved_type = find_gnu_ifunc_target_type (address);
771
772 if (resolved_type != NULL)
773 ftype = resolved_type;
774 }
775
776 type *return_type = TYPE_TARGET_TYPE (ftype);
777
778 if (return_type == NULL)
779 return_type = default_return_type;
780
781 if (return_type == NULL)
782 error_call_unknown_return_type (function_name);
783
784 return allocate_value (return_type);
785 }
786 else
787 error (_("Expression of type other than "
788 "\"Function returning ...\" used as function"));
789 }
790 switch (value_type (callee)->code ())
791 {
792 case TYPE_CODE_INTERNAL_FUNCTION:
793 return call_internal_function (exp->gdbarch, exp->language_defn,
794 callee, argvec.size (), argvec.data ());
795 case TYPE_CODE_XMETHOD:
796 return call_xmethod (callee, argvec);
797 default:
798 return call_function_by_hand (callee, default_return_type, argvec);
799 }
800 }
801
802 /* Helper for evaluating an OP_FUNCALL. */
803
804 static value *
805 evaluate_funcall (type *expect_type, expression *exp, int *pos,
806 enum noside noside)
807 {
808 int tem;
809 int pc2 = 0;
810 value *arg1 = NULL;
811 value *arg2 = NULL;
812 int save_pos1;
813 symbol *function = NULL;
814 char *function_name = NULL;
815 const char *var_func_name = NULL;
816
817 int pc = (*pos);
818 (*pos) += 2;
819
820 exp_opcode op = exp->elts[*pos].opcode;
821 int nargs = longest_to_int (exp->elts[pc].longconst);
822 /* Allocate arg vector, including space for the function to be
823 called in argvec[0], a potential `this', and a terminating
824 NULL. */
825 value **argvec = (value **) alloca (sizeof (value *) * (nargs + 3));
826 if (op == STRUCTOP_MEMBER || op == STRUCTOP_MPTR)
827 {
828 /* First, evaluate the structure into arg2. */
829 pc2 = (*pos)++;
830
831 if (op == STRUCTOP_MEMBER)
832 {
833 arg2 = evaluate_subexp_for_address (exp, pos, noside);
834 }
835 else
836 {
837 arg2 = evaluate_subexp (nullptr, exp, pos, noside);
838 }
839
840 /* If the function is a virtual function, then the aggregate
841 value (providing the structure) plays its part by providing
842 the vtable. Otherwise, it is just along for the ride: call
843 the function directly. */
844
845 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
846
847 type *a1_type = check_typedef (value_type (arg1));
848 if (noside == EVAL_SKIP)
849 tem = 1; /* Set it to the right arg index so that all
850 arguments can also be skipped. */
851 else if (a1_type->code () == TYPE_CODE_METHODPTR)
852 {
853 if (noside == EVAL_AVOID_SIDE_EFFECTS)
854 arg1 = value_zero (TYPE_TARGET_TYPE (a1_type), not_lval);
855 else
856 arg1 = cplus_method_ptr_to_value (&arg2, arg1);
857
858 /* Now, say which argument to start evaluating from. */
859 nargs++;
860 tem = 2;
861 argvec[1] = arg2;
862 }
863 else if (a1_type->code () == TYPE_CODE_MEMBERPTR)
864 {
865 struct type *type_ptr
866 = lookup_pointer_type (TYPE_SELF_TYPE (a1_type));
867 struct type *target_type_ptr
868 = lookup_pointer_type (TYPE_TARGET_TYPE (a1_type));
869
870 /* Now, convert these values to an address. */
871 arg2 = value_cast (type_ptr, arg2);
872
873 long mem_offset = value_as_long (arg1);
874
875 arg1 = value_from_pointer (target_type_ptr,
876 value_as_long (arg2) + mem_offset);
877 arg1 = value_ind (arg1);
878 tem = 1;
879 }
880 else
881 error (_("Non-pointer-to-member value used in pointer-to-member "
882 "construct"));
883 }
884 else if (op == STRUCTOP_STRUCT || op == STRUCTOP_PTR)
885 {
886 /* Hair for method invocations. */
887 int tem2;
888
889 nargs++;
890 /* First, evaluate the structure into arg2. */
891 pc2 = (*pos)++;
892 tem2 = longest_to_int (exp->elts[pc2 + 1].longconst);
893 *pos += 3 + BYTES_TO_EXP_ELEM (tem2 + 1);
894
895 if (op == STRUCTOP_STRUCT)
896 {
897 /* If v is a variable in a register, and the user types
898 v.method (), this will produce an error, because v has no
899 address.
900
901 A possible way around this would be to allocate a copy of
902 the variable on the stack, copy in the contents, call the
903 function, and copy out the contents. I.e. convert this
904 from call by reference to call by copy-return (or
905 whatever it's called). However, this does not work
906 because it is not the same: the method being called could
907 stash a copy of the address, and then future uses through
908 that address (after the method returns) would be expected
909 to use the variable itself, not some copy of it. */
910 arg2 = evaluate_subexp_for_address (exp, pos, noside);
911 }
912 else
913 {
914 arg2 = evaluate_subexp (nullptr, exp, pos, noside);
915
916 /* Check to see if the operator '->' has been overloaded.
917 If the operator has been overloaded replace arg2 with the
918 value returned by the custom operator and continue
919 evaluation. */
920 while (unop_user_defined_p (op, arg2))
921 {
922 struct value *value = NULL;
923 try
924 {
925 value = value_x_unop (arg2, op, noside);
926 }
927
928 catch (const gdb_exception_error &except)
929 {
930 if (except.error == NOT_FOUND_ERROR)
931 break;
932 else
933 throw;
934 }
935
936 arg2 = value;
937 }
938 }
939 /* Now, say which argument to start evaluating from. */
940 tem = 2;
941 }
942 else if (op == OP_SCOPE
943 && overload_resolution
944 && (exp->language_defn->la_language == language_cplus))
945 {
946 /* Unpack it locally so we can properly handle overload
947 resolution. */
948 char *name;
949 int local_tem;
950
951 pc2 = (*pos)++;
952 local_tem = longest_to_int (exp->elts[pc2 + 2].longconst);
953 (*pos) += 4 + BYTES_TO_EXP_ELEM (local_tem + 1);
954 struct type *type = exp->elts[pc2 + 1].type;
955 name = &exp->elts[pc2 + 3].string;
956
957 function = NULL;
958 function_name = NULL;
959 if (type->code () == TYPE_CODE_NAMESPACE)
960 {
961 function = cp_lookup_symbol_namespace (type->name (),
962 name,
963 get_selected_block (0),
964 VAR_DOMAIN).symbol;
965 if (function == NULL)
966 error (_("No symbol \"%s\" in namespace \"%s\"."),
967 name, type->name ());
968
969 tem = 1;
970 /* arg2 is left as NULL on purpose. */
971 }
972 else
973 {
974 gdb_assert (type->code () == TYPE_CODE_STRUCT
975 || type->code () == TYPE_CODE_UNION);
976 function_name = name;
977
978 /* We need a properly typed value for method lookup. For
979 static methods arg2 is otherwise unused. */
980 arg2 = value_zero (type, lval_memory);
981 ++nargs;
982 tem = 2;
983 }
984 }
985 else if (op == OP_ADL_FUNC)
986 {
987 /* Save the function position and move pos so that the arguments
988 can be evaluated. */
989 int func_name_len;
990
991 save_pos1 = *pos;
992 tem = 1;
993
994 func_name_len = longest_to_int (exp->elts[save_pos1 + 3].longconst);
995 (*pos) += 6 + BYTES_TO_EXP_ELEM (func_name_len + 1);
996 }
997 else
998 {
999 /* Non-method function call. */
1000 save_pos1 = *pos;
1001 tem = 1;
1002
1003 /* If this is a C++ function wait until overload resolution. */
1004 if (op == OP_VAR_VALUE
1005 && overload_resolution
1006 && (exp->language_defn->la_language == language_cplus))
1007 {
1008 (*pos) += 4; /* Skip the evaluation of the symbol. */
1009 argvec[0] = NULL;
1010 }
1011 else
1012 {
1013 if (op == OP_VAR_MSYM_VALUE)
1014 {
1015 minimal_symbol *msym = exp->elts[*pos + 2].msymbol;
1016 var_func_name = msym->print_name ();
1017 }
1018 else if (op == OP_VAR_VALUE)
1019 {
1020 symbol *sym = exp->elts[*pos + 2].symbol;
1021 var_func_name = sym->print_name ();
1022 }
1023
1024 argvec[0] = evaluate_subexp_with_coercion (exp, pos, noside);
1025 type *type = value_type (argvec[0]);
1026 if (type && type->code () == TYPE_CODE_PTR)
1027 type = TYPE_TARGET_TYPE (type);
1028 if (type && type->code () == TYPE_CODE_FUNC)
1029 {
1030 for (; tem <= nargs && tem <= type->num_fields (); tem++)
1031 {
1032 argvec[tem] = evaluate_subexp (type->field (tem - 1).type (),
1033 exp, pos, noside);
1034 }
1035 }
1036 }
1037 }
1038
1039 /* Evaluate arguments (if not already done, e.g., namespace::func()
1040 and overload-resolution is off). */
1041 for (; tem <= nargs; tem++)
1042 {
1043 /* Ensure that array expressions are coerced into pointer
1044 objects. */
1045 argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
1046 }
1047
1048 /* Signal end of arglist. */
1049 argvec[tem] = 0;
1050
1051 if (noside == EVAL_SKIP)
1052 return eval_skip_value (exp);
1053
1054 if (op == OP_ADL_FUNC)
1055 {
1056 struct symbol *symp;
1057 char *func_name;
1058 int name_len;
1059 int string_pc = save_pos1 + 3;
1060
1061 /* Extract the function name. */
1062 name_len = longest_to_int (exp->elts[string_pc].longconst);
1063 func_name = (char *) alloca (name_len + 1);
1064 strcpy (func_name, &exp->elts[string_pc + 1].string);
1065
1066 find_overload_match (gdb::make_array_view (&argvec[1], nargs),
1067 func_name,
1068 NON_METHOD, /* not method */
1069 NULL, NULL, /* pass NULL symbol since
1070 symbol is unknown */
1071 NULL, &symp, NULL, 0, noside);
1072
1073 /* Now fix the expression being evaluated. */
1074 exp->elts[save_pos1 + 2].symbol = symp;
1075 argvec[0] = evaluate_subexp_with_coercion (exp, &save_pos1, noside);
1076 }
1077
1078 if (op == STRUCTOP_STRUCT || op == STRUCTOP_PTR
1079 || (op == OP_SCOPE && function_name != NULL))
1080 {
1081 int static_memfuncp;
1082 char *tstr;
1083
1084 /* Method invocation: stuff "this" as first parameter. If the
1085 method turns out to be static we undo this below. */
1086 argvec[1] = arg2;
1087
1088 if (op != OP_SCOPE)
1089 {
1090 /* Name of method from expression. */
1091 tstr = &exp->elts[pc2 + 2].string;
1092 }
1093 else
1094 tstr = function_name;
1095
1096 if (overload_resolution && (exp->language_defn->la_language
1097 == language_cplus))
1098 {
1099 /* Language is C++, do some overload resolution before
1100 evaluation. */
1101 struct value *valp = NULL;
1102
1103 (void) find_overload_match (gdb::make_array_view (&argvec[1], nargs),
1104 tstr,
1105 METHOD, /* method */
1106 &arg2, /* the object */
1107 NULL, &valp, NULL,
1108 &static_memfuncp, 0, noside);
1109
1110 if (op == OP_SCOPE && !static_memfuncp)
1111 {
1112 /* For the time being, we don't handle this. */
1113 error (_("Call to overloaded function %s requires "
1114 "`this' pointer"),
1115 function_name);
1116 }
1117 argvec[1] = arg2; /* the ``this'' pointer */
1118 argvec[0] = valp; /* Use the method found after overload
1119 resolution. */
1120 }
1121 else
1122 /* Non-C++ case -- or no overload resolution. */
1123 {
1124 struct value *temp = arg2;
1125
1126 argvec[0] = value_struct_elt (&temp, argvec + 1, tstr,
1127 &static_memfuncp,
1128 op == STRUCTOP_STRUCT
1129 ? "structure" : "structure pointer");
1130 /* value_struct_elt updates temp with the correct value of
1131 the ``this'' pointer if necessary, so modify argvec[1] to
1132 reflect any ``this'' changes. */
1133 arg2
1134 = value_from_longest (lookup_pointer_type(value_type (temp)),
1135 value_address (temp)
1136 + value_embedded_offset (temp));
1137 argvec[1] = arg2; /* the ``this'' pointer */
1138 }
1139
1140 /* Take out `this' if needed. */
1141 if (static_memfuncp)
1142 {
1143 argvec[1] = argvec[0];
1144 nargs--;
1145 argvec++;
1146 }
1147 }
1148 else if (op == STRUCTOP_MEMBER || op == STRUCTOP_MPTR)
1149 {
1150 /* Pointer to member. argvec[1] is already set up. */
1151 argvec[0] = arg1;
1152 }
1153 else if (op == OP_VAR_VALUE || (op == OP_SCOPE && function != NULL))
1154 {
1155 /* Non-member function being called. */
1156 /* fn: This can only be done for C++ functions. A C-style
1157 function in a C++ program, for instance, does not have the
1158 fields that are expected here. */
1159
1160 if (overload_resolution && (exp->language_defn->la_language
1161 == language_cplus))
1162 {
1163 /* Language is C++, do some overload resolution before
1164 evaluation. */
1165 struct symbol *symp;
1166 int no_adl = 0;
1167
1168 /* If a scope has been specified disable ADL. */
1169 if (op == OP_SCOPE)
1170 no_adl = 1;
1171
1172 if (op == OP_VAR_VALUE)
1173 function = exp->elts[save_pos1+2].symbol;
1174
1175 (void) find_overload_match (gdb::make_array_view (&argvec[1], nargs),
1176 NULL, /* no need for name */
1177 NON_METHOD, /* not method */
1178 NULL, function, /* the function */
1179 NULL, &symp, NULL, no_adl, noside);
1180
1181 if (op == OP_VAR_VALUE)
1182 {
1183 /* Now fix the expression being evaluated. */
1184 exp->elts[save_pos1+2].symbol = symp;
1185 argvec[0] = evaluate_subexp_with_coercion (exp, &save_pos1,
1186 noside);
1187 }
1188 else
1189 argvec[0] = value_of_variable (symp, get_selected_block (0));
1190 }
1191 else
1192 {
1193 /* Not C++, or no overload resolution allowed. */
1194 /* Nothing to be done; argvec already correctly set up. */
1195 }
1196 }
1197 else
1198 {
1199 /* It is probably a C-style function. */
1200 /* Nothing to be done; argvec already correctly set up. */
1201 }
1202
1203 return evaluate_subexp_do_call (exp, noside, argvec[0],
1204 gdb::make_array_view (argvec + 1, nargs),
1205 var_func_name, expect_type);
1206 }
1207
1208 /* Return true if type is integral or reference to integral */
1209
1210 static bool
1211 is_integral_or_integral_reference (struct type *type)
1212 {
1213 if (is_integral_type (type))
1214 return true;
1215
1216 type = check_typedef (type);
1217 return (type != nullptr
1218 && TYPE_IS_REFERENCE (type)
1219 && is_integral_type (TYPE_TARGET_TYPE (type)));
1220 }
1221
1222 /* Helper function that implements the body of OP_SCOPE. */
1223
1224 struct value *
1225 eval_op_scope (struct type *expect_type, struct expression *exp,
1226 enum noside noside,
1227 struct type *type, const char *string)
1228 {
1229 if (noside == EVAL_SKIP)
1230 return eval_skip_value (exp);
1231 struct value *arg1 = value_aggregate_elt (type, string, expect_type,
1232 0, noside);
1233 if (arg1 == NULL)
1234 error (_("There is no field named %s"), string);
1235 return arg1;
1236 }
1237
1238 /* Helper function that implements the body of OP_VAR_ENTRY_VALUE. */
1239
1240 struct value *
1241 eval_op_var_entry_value (struct type *expect_type, struct expression *exp,
1242 enum noside noside, symbol *sym)
1243 {
1244 if (noside == EVAL_SKIP)
1245 return eval_skip_value (exp);
1246 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1247 return value_zero (SYMBOL_TYPE (sym), not_lval);
1248
1249 if (SYMBOL_COMPUTED_OPS (sym) == NULL
1250 || SYMBOL_COMPUTED_OPS (sym)->read_variable_at_entry == NULL)
1251 error (_("Symbol \"%s\" does not have any specific entry value"),
1252 sym->print_name ());
1253
1254 struct frame_info *frame = get_selected_frame (NULL);
1255 return SYMBOL_COMPUTED_OPS (sym)->read_variable_at_entry (sym, frame);
1256 }
1257
1258 /* Helper function that implements the body of OP_VAR_MSYM_VALUE. */
1259
1260 struct value *
1261 eval_op_var_msym_value (struct type *expect_type, struct expression *exp,
1262 enum noside noside, bool outermost_p,
1263 minimal_symbol *msymbol, struct objfile *objfile)
1264 {
1265 value *val = evaluate_var_msym_value (noside, objfile, msymbol);
1266
1267 struct type *type = value_type (val);
1268 if (type->code () == TYPE_CODE_ERROR
1269 && (noside != EVAL_AVOID_SIDE_EFFECTS || !outermost_p))
1270 error_unknown_type (msymbol->print_name ());
1271 return val;
1272 }
1273
1274 /* Helper function that implements the body of OP_FUNC_STATIC_VAR. */
1275
1276 struct value *
1277 eval_op_func_static_var (struct type *expect_type, struct expression *exp,
1278 enum noside noside,
1279 value *func, const char *var)
1280 {
1281 if (noside == EVAL_SKIP)
1282 return eval_skip_value (exp);
1283 CORE_ADDR addr = value_address (func);
1284 const block *blk = block_for_pc (addr);
1285 struct block_symbol sym = lookup_symbol (var, blk, VAR_DOMAIN, NULL);
1286 if (sym.symbol == NULL)
1287 error (_("No symbol \"%s\" in specified context."), var);
1288 return evaluate_var_value (noside, sym.block, sym.symbol);
1289 }
1290
1291 /* Helper function that implements the body of OP_REGISTER. */
1292
1293 struct value *
1294 eval_op_register (struct type *expect_type, struct expression *exp,
1295 enum noside noside, const char *name)
1296 {
1297 int regno;
1298 struct value *val;
1299
1300 regno = user_reg_map_name_to_regnum (exp->gdbarch,
1301 name, strlen (name));
1302 if (regno == -1)
1303 error (_("Register $%s not available."), name);
1304
1305 /* In EVAL_AVOID_SIDE_EFFECTS mode, we only need to return
1306 a value with the appropriate register type. Unfortunately,
1307 we don't have easy access to the type of user registers.
1308 So for these registers, we fetch the register value regardless
1309 of the evaluation mode. */
1310 if (noside == EVAL_AVOID_SIDE_EFFECTS
1311 && regno < gdbarch_num_cooked_regs (exp->gdbarch))
1312 val = value_zero (register_type (exp->gdbarch, regno), not_lval);
1313 else
1314 val = value_of_register (regno, get_selected_frame (NULL));
1315 if (val == NULL)
1316 error (_("Value of register %s not available."), name);
1317 else
1318 return val;
1319 }
1320
1321 /* Helper function that implements the body of OP_STRING. */
1322
1323 struct value *
1324 eval_op_string (struct type *expect_type, struct expression *exp,
1325 enum noside noside, int len, const char *string)
1326 {
1327 if (noside == EVAL_SKIP)
1328 return eval_skip_value (exp);
1329 struct type *type = language_string_char_type (exp->language_defn,
1330 exp->gdbarch);
1331 return value_string (string, len, type);
1332 }
1333
1334 /* Helper function that implements the body of OP_OBJC_SELECTOR. */
1335
1336 struct value *
1337 eval_op_objc_selector (struct type *expect_type, struct expression *exp,
1338 enum noside noside,
1339 const char *sel)
1340 {
1341 if (noside == EVAL_SKIP)
1342 return eval_skip_value (exp);
1343
1344 struct type *selector_type = builtin_type (exp->gdbarch)->builtin_data_ptr;
1345 return value_from_longest (selector_type,
1346 lookup_child_selector (exp->gdbarch, sel));
1347 }
1348
1349 /* Helper function that implements the body of BINOP_CONCAT. */
1350
1351 struct value *
1352 eval_op_concat (struct type *expect_type, struct expression *exp,
1353 enum noside noside, struct value *arg1, struct value *arg2)
1354 {
1355 if (noside == EVAL_SKIP)
1356 return eval_skip_value (exp);
1357 if (binop_user_defined_p (BINOP_CONCAT, arg1, arg2))
1358 return value_x_binop (arg1, arg2, BINOP_CONCAT, OP_NULL, noside);
1359 else
1360 return value_concat (arg1, arg2);
1361 }
1362
1363 /* A helper function for TERNOP_SLICE. */
1364
1365 struct value *
1366 eval_op_ternop (struct type *expect_type, struct expression *exp,
1367 enum noside noside,
1368 struct value *array, struct value *low, struct value *upper)
1369 {
1370 if (noside == EVAL_SKIP)
1371 return eval_skip_value (exp);
1372 int lowbound = value_as_long (low);
1373 int upperbound = value_as_long (upper);
1374 return value_slice (array, lowbound, upperbound - lowbound + 1);
1375 }
1376
1377 /* A helper function for STRUCTOP_STRUCT. */
1378
1379 struct value *
1380 eval_op_structop_struct (struct type *expect_type, struct expression *exp,
1381 enum noside noside,
1382 struct value *arg1, const char *string)
1383 {
1384 if (noside == EVAL_SKIP)
1385 return eval_skip_value (exp);
1386 struct value *arg3 = value_struct_elt (&arg1, NULL, string,
1387 NULL, "structure");
1388 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1389 arg3 = value_zero (value_type (arg3), VALUE_LVAL (arg3));
1390 return arg3;
1391 }
1392
1393 /* A helper function for STRUCTOP_PTR. */
1394
1395 struct value *
1396 eval_op_structop_ptr (struct type *expect_type, struct expression *exp,
1397 enum noside noside,
1398 struct value *arg1, const char *string)
1399 {
1400 if (noside == EVAL_SKIP)
1401 return eval_skip_value (exp);
1402
1403 /* Check to see if operator '->' has been overloaded. If so replace
1404 arg1 with the value returned by evaluating operator->(). */
1405 while (unop_user_defined_p (STRUCTOP_PTR, arg1))
1406 {
1407 struct value *value = NULL;
1408 try
1409 {
1410 value = value_x_unop (arg1, STRUCTOP_PTR, noside);
1411 }
1412
1413 catch (const gdb_exception_error &except)
1414 {
1415 if (except.error == NOT_FOUND_ERROR)
1416 break;
1417 else
1418 throw;
1419 }
1420
1421 arg1 = value;
1422 }
1423
1424 /* JYG: if print object is on we need to replace the base type
1425 with rtti type in order to continue on with successful
1426 lookup of member / method only available in the rtti type. */
1427 {
1428 struct type *arg_type = value_type (arg1);
1429 struct type *real_type;
1430 int full, using_enc;
1431 LONGEST top;
1432 struct value_print_options opts;
1433
1434 get_user_print_options (&opts);
1435 if (opts.objectprint && TYPE_TARGET_TYPE (arg_type)
1436 && (TYPE_TARGET_TYPE (arg_type)->code () == TYPE_CODE_STRUCT))
1437 {
1438 real_type = value_rtti_indirect_type (arg1, &full, &top,
1439 &using_enc);
1440 if (real_type)
1441 arg1 = value_cast (real_type, arg1);
1442 }
1443 }
1444
1445 struct value *arg3 = value_struct_elt (&arg1, NULL, string,
1446 NULL, "structure pointer");
1447 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1448 arg3 = value_zero (value_type (arg3), VALUE_LVAL (arg3));
1449 return arg3;
1450 }
1451
1452 /* A helper function for STRUCTOP_MEMBER. */
1453
1454 struct value *
1455 eval_op_member (struct type *expect_type, struct expression *exp,
1456 enum noside noside,
1457 struct value *arg1, struct value *arg2)
1458 {
1459 long mem_offset;
1460
1461 if (noside == EVAL_SKIP)
1462 return eval_skip_value (exp);
1463
1464 struct value *arg3;
1465 struct type *type = check_typedef (value_type (arg2));
1466 switch (type->code ())
1467 {
1468 case TYPE_CODE_METHODPTR:
1469 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1470 return value_zero (TYPE_TARGET_TYPE (type), not_lval);
1471 else
1472 {
1473 arg2 = cplus_method_ptr_to_value (&arg1, arg2);
1474 gdb_assert (value_type (arg2)->code () == TYPE_CODE_PTR);
1475 return value_ind (arg2);
1476 }
1477
1478 case TYPE_CODE_MEMBERPTR:
1479 /* Now, convert these values to an address. */
1480 arg1 = value_cast_pointers (lookup_pointer_type (TYPE_SELF_TYPE (type)),
1481 arg1, 1);
1482
1483 mem_offset = value_as_long (arg2);
1484
1485 arg3 = value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
1486 value_as_long (arg1) + mem_offset);
1487 return value_ind (arg3);
1488
1489 default:
1490 error (_("non-pointer-to-member value used "
1491 "in pointer-to-member construct"));
1492 }
1493 }
1494
1495 /* A helper function for BINOP_ADD. */
1496
1497 struct value *
1498 eval_op_add (struct type *expect_type, struct expression *exp,
1499 enum noside noside,
1500 struct value *arg1, struct value *arg2)
1501 {
1502 if (noside == EVAL_SKIP)
1503 return eval_skip_value (exp);
1504 if (binop_user_defined_p (BINOP_ADD, arg1, arg2))
1505 return value_x_binop (arg1, arg2, BINOP_ADD, OP_NULL, noside);
1506 else if (ptrmath_type_p (exp->language_defn, value_type (arg1))
1507 && is_integral_or_integral_reference (value_type (arg2)))
1508 return value_ptradd (arg1, value_as_long (arg2));
1509 else if (ptrmath_type_p (exp->language_defn, value_type (arg2))
1510 && is_integral_or_integral_reference (value_type (arg1)))
1511 return value_ptradd (arg2, value_as_long (arg1));
1512 else
1513 {
1514 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
1515 return value_binop (arg1, arg2, BINOP_ADD);
1516 }
1517 }
1518
1519 /* A helper function for BINOP_SUB. */
1520
1521 struct value *
1522 eval_op_sub (struct type *expect_type, struct expression *exp,
1523 enum noside noside,
1524 struct value *arg1, struct value *arg2)
1525 {
1526 if (noside == EVAL_SKIP)
1527 return eval_skip_value (exp);
1528 if (binop_user_defined_p (BINOP_SUB, arg1, arg2))
1529 return value_x_binop (arg1, arg2, BINOP_SUB, OP_NULL, noside);
1530 else if (ptrmath_type_p (exp->language_defn, value_type (arg1))
1531 && ptrmath_type_p (exp->language_defn, value_type (arg2)))
1532 {
1533 /* FIXME -- should be ptrdiff_t */
1534 struct type *type = builtin_type (exp->gdbarch)->builtin_long;
1535 return value_from_longest (type, value_ptrdiff (arg1, arg2));
1536 }
1537 else if (ptrmath_type_p (exp->language_defn, value_type (arg1))
1538 && is_integral_or_integral_reference (value_type (arg2)))
1539 return value_ptradd (arg1, - value_as_long (arg2));
1540 else
1541 {
1542 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
1543 return value_binop (arg1, arg2, BINOP_SUB);
1544 }
1545 }
1546
1547 /* Helper function for several different binary operations. */
1548
1549 struct value *
1550 eval_op_binary (struct type *expect_type, struct expression *exp,
1551 enum noside noside, enum exp_opcode op,
1552 struct value *arg1, struct value *arg2)
1553 {
1554 if (noside == EVAL_SKIP)
1555 return eval_skip_value (exp);
1556 if (binop_user_defined_p (op, arg1, arg2))
1557 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1558 else
1559 {
1560 /* If EVAL_AVOID_SIDE_EFFECTS and we're dividing by zero,
1561 fudge arg2 to avoid division-by-zero, the caller is
1562 (theoretically) only looking for the type of the result. */
1563 if (noside == EVAL_AVOID_SIDE_EFFECTS
1564 /* ??? Do we really want to test for BINOP_MOD here?
1565 The implementation of value_binop gives it a well-defined
1566 value. */
1567 && (op == BINOP_DIV
1568 || op == BINOP_INTDIV
1569 || op == BINOP_REM
1570 || op == BINOP_MOD)
1571 && value_logical_not (arg2))
1572 {
1573 struct value *v_one;
1574
1575 v_one = value_one (value_type (arg2));
1576 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &v_one);
1577 return value_binop (arg1, v_one, op);
1578 }
1579 else
1580 {
1581 /* For shift and integer exponentiation operations,
1582 only promote the first argument. */
1583 if ((op == BINOP_LSH || op == BINOP_RSH || op == BINOP_EXP)
1584 && is_integral_type (value_type (arg2)))
1585 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
1586 else
1587 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
1588
1589 return value_binop (arg1, arg2, op);
1590 }
1591 }
1592 }
1593
1594 /* A helper function for BINOP_SUBSCRIPT. */
1595
1596 struct value *
1597 eval_op_subscript (struct type *expect_type, struct expression *exp,
1598 enum noside noside, enum exp_opcode op,
1599 struct value *arg1, struct value *arg2)
1600 {
1601 if (noside == EVAL_SKIP)
1602 return eval_skip_value (exp);
1603 if (binop_user_defined_p (op, arg1, arg2))
1604 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1605 else
1606 {
1607 /* If the user attempts to subscript something that is not an
1608 array or pointer type (like a plain int variable for example),
1609 then report this as an error. */
1610
1611 arg1 = coerce_ref (arg1);
1612 struct type *type = check_typedef (value_type (arg1));
1613 if (type->code () != TYPE_CODE_ARRAY
1614 && type->code () != TYPE_CODE_PTR)
1615 {
1616 if (type->name ())
1617 error (_("cannot subscript something of type `%s'"),
1618 type->name ());
1619 else
1620 error (_("cannot subscript requested type"));
1621 }
1622
1623 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1624 return value_zero (TYPE_TARGET_TYPE (type), VALUE_LVAL (arg1));
1625 else
1626 return value_subscript (arg1, value_as_long (arg2));
1627 }
1628 }
1629
1630 /* A helper function for BINOP_EQUAL. */
1631
1632 struct value *
1633 eval_op_equal (struct type *expect_type, struct expression *exp,
1634 enum noside noside, enum exp_opcode op,
1635 struct value *arg1, struct value *arg2)
1636 {
1637 if (noside == EVAL_SKIP)
1638 return eval_skip_value (exp);
1639 if (binop_user_defined_p (op, arg1, arg2))
1640 {
1641 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1642 }
1643 else
1644 {
1645 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
1646 int tem = value_equal (arg1, arg2);
1647 struct type *type = language_bool_type (exp->language_defn,
1648 exp->gdbarch);
1649 return value_from_longest (type, (LONGEST) tem);
1650 }
1651 }
1652
1653 /* A helper function for BINOP_NOTEQUAL. */
1654
1655 struct value *
1656 eval_op_notequal (struct type *expect_type, struct expression *exp,
1657 enum noside noside, enum exp_opcode op,
1658 struct value *arg1, struct value *arg2)
1659 {
1660 if (noside == EVAL_SKIP)
1661 return eval_skip_value (exp);
1662 if (binop_user_defined_p (op, arg1, arg2))
1663 {
1664 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1665 }
1666 else
1667 {
1668 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
1669 int tem = value_equal (arg1, arg2);
1670 struct type *type = language_bool_type (exp->language_defn,
1671 exp->gdbarch);
1672 return value_from_longest (type, (LONGEST) ! tem);
1673 }
1674 }
1675
1676 /* A helper function for BINOP_LESS. */
1677
1678 struct value *
1679 eval_op_less (struct type *expect_type, struct expression *exp,
1680 enum noside noside, enum exp_opcode op,
1681 struct value *arg1, struct value *arg2)
1682 {
1683 if (noside == EVAL_SKIP)
1684 return eval_skip_value (exp);
1685 if (binop_user_defined_p (op, arg1, arg2))
1686 {
1687 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1688 }
1689 else
1690 {
1691 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
1692 int tem = value_less (arg1, arg2);
1693 struct type *type = language_bool_type (exp->language_defn,
1694 exp->gdbarch);
1695 return value_from_longest (type, (LONGEST) tem);
1696 }
1697 }
1698
1699 /* A helper function for BINOP_GTR. */
1700
1701 struct value *
1702 eval_op_gtr (struct type *expect_type, struct expression *exp,
1703 enum noside noside, enum exp_opcode op,
1704 struct value *arg1, struct value *arg2)
1705 {
1706 if (noside == EVAL_SKIP)
1707 return eval_skip_value (exp);
1708 if (binop_user_defined_p (op, arg1, arg2))
1709 {
1710 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1711 }
1712 else
1713 {
1714 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
1715 int tem = value_less (arg2, arg1);
1716 struct type *type = language_bool_type (exp->language_defn,
1717 exp->gdbarch);
1718 return value_from_longest (type, (LONGEST) tem);
1719 }
1720 }
1721
1722 /* A helper function for BINOP_GEQ. */
1723
1724 struct value *
1725 eval_op_geq (struct type *expect_type, struct expression *exp,
1726 enum noside noside, enum exp_opcode op,
1727 struct value *arg1, struct value *arg2)
1728 {
1729 if (noside == EVAL_SKIP)
1730 return eval_skip_value (exp);
1731 if (binop_user_defined_p (op, arg1, arg2))
1732 {
1733 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1734 }
1735 else
1736 {
1737 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
1738 int tem = value_less (arg2, arg1) || value_equal (arg1, arg2);
1739 struct type *type = language_bool_type (exp->language_defn,
1740 exp->gdbarch);
1741 return value_from_longest (type, (LONGEST) tem);
1742 }
1743 }
1744
1745 /* A helper function for BINOP_LEQ. */
1746
1747 struct value *
1748 eval_op_leq (struct type *expect_type, struct expression *exp,
1749 enum noside noside, enum exp_opcode op,
1750 struct value *arg1, struct value *arg2)
1751 {
1752 if (noside == EVAL_SKIP)
1753 return eval_skip_value (exp);
1754 if (binop_user_defined_p (op, arg1, arg2))
1755 {
1756 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1757 }
1758 else
1759 {
1760 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
1761 int tem = value_less (arg1, arg2) || value_equal (arg1, arg2);
1762 struct type *type = language_bool_type (exp->language_defn,
1763 exp->gdbarch);
1764 return value_from_longest (type, (LONGEST) tem);
1765 }
1766 }
1767
1768 /* A helper function for BINOP_REPEAT. */
1769
1770 struct value *
1771 eval_op_repeat (struct type *expect_type, struct expression *exp,
1772 enum noside noside, enum exp_opcode op,
1773 struct value *arg1, struct value *arg2)
1774 {
1775 if (noside == EVAL_SKIP)
1776 return eval_skip_value (exp);
1777 struct type *type = check_typedef (value_type (arg2));
1778 if (type->code () != TYPE_CODE_INT
1779 && type->code () != TYPE_CODE_ENUM)
1780 error (_("Non-integral right operand for \"@\" operator."));
1781 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1782 {
1783 return allocate_repeat_value (value_type (arg1),
1784 longest_to_int (value_as_long (arg2)));
1785 }
1786 else
1787 return value_repeat (arg1, longest_to_int (value_as_long (arg2)));
1788 }
1789
1790 /* A helper function for UNOP_PLUS. */
1791
1792 struct value *
1793 eval_op_plus (struct type *expect_type, struct expression *exp,
1794 enum noside noside, enum exp_opcode op,
1795 struct value *arg1)
1796 {
1797 if (noside == EVAL_SKIP)
1798 return eval_skip_value (exp);
1799 if (unop_user_defined_p (op, arg1))
1800 return value_x_unop (arg1, op, noside);
1801 else
1802 {
1803 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
1804 return value_pos (arg1);
1805 }
1806 }
1807
1808 /* A helper function for UNOP_NEG. */
1809
1810 struct value *
1811 eval_op_neg (struct type *expect_type, struct expression *exp,
1812 enum noside noside, enum exp_opcode op,
1813 struct value *arg1)
1814 {
1815 if (noside == EVAL_SKIP)
1816 return eval_skip_value (exp);
1817 if (unop_user_defined_p (op, arg1))
1818 return value_x_unop (arg1, op, noside);
1819 else
1820 {
1821 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
1822 return value_neg (arg1);
1823 }
1824 }
1825
1826 /* A helper function for UNOP_COMPLEMENT. */
1827
1828 struct value *
1829 eval_op_complement (struct type *expect_type, struct expression *exp,
1830 enum noside noside, enum exp_opcode op,
1831 struct value *arg1)
1832 {
1833 if (noside == EVAL_SKIP)
1834 return eval_skip_value (exp);
1835 if (unop_user_defined_p (UNOP_COMPLEMENT, arg1))
1836 return value_x_unop (arg1, UNOP_COMPLEMENT, noside);
1837 else
1838 {
1839 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
1840 return value_complement (arg1);
1841 }
1842 }
1843
1844 /* A helper function for UNOP_LOGICAL_NOT. */
1845
1846 struct value *
1847 eval_op_lognot (struct type *expect_type, struct expression *exp,
1848 enum noside noside, enum exp_opcode op,
1849 struct value *arg1)
1850 {
1851 if (noside == EVAL_SKIP)
1852 return eval_skip_value (exp);
1853 if (unop_user_defined_p (op, arg1))
1854 return value_x_unop (arg1, op, noside);
1855 else
1856 {
1857 struct type *type = language_bool_type (exp->language_defn,
1858 exp->gdbarch);
1859 return value_from_longest (type, (LONGEST) value_logical_not (arg1));
1860 }
1861 }
1862
1863 /* A helper function for UNOP_IND. */
1864
1865 struct value *
1866 eval_op_ind (struct type *expect_type, struct expression *exp,
1867 enum noside noside,
1868 struct value *arg1)
1869 {
1870 struct type *type = check_typedef (value_type (arg1));
1871 if (type->code () == TYPE_CODE_METHODPTR
1872 || type->code () == TYPE_CODE_MEMBERPTR)
1873 error (_("Attempt to dereference pointer "
1874 "to member without an object"));
1875 if (noside == EVAL_SKIP)
1876 return eval_skip_value (exp);
1877 if (unop_user_defined_p (UNOP_IND, arg1))
1878 return value_x_unop (arg1, UNOP_IND, noside);
1879 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
1880 {
1881 type = check_typedef (value_type (arg1));
1882
1883 /* If the type pointed to is dynamic then in order to resolve the
1884 dynamic properties we must actually dereference the pointer.
1885 There is a risk that this dereference will have side-effects
1886 in the inferior, but being able to print accurate type
1887 information seems worth the risk. */
1888 if ((type->code () != TYPE_CODE_PTR
1889 && !TYPE_IS_REFERENCE (type))
1890 || !is_dynamic_type (TYPE_TARGET_TYPE (type)))
1891 {
1892 if (type->code () == TYPE_CODE_PTR
1893 || TYPE_IS_REFERENCE (type)
1894 /* In C you can dereference an array to get the 1st elt. */
1895 || type->code () == TYPE_CODE_ARRAY)
1896 return value_zero (TYPE_TARGET_TYPE (type),
1897 lval_memory);
1898 else if (type->code () == TYPE_CODE_INT)
1899 /* GDB allows dereferencing an int. */
1900 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
1901 lval_memory);
1902 else
1903 error (_("Attempt to take contents of a non-pointer value."));
1904 }
1905 }
1906
1907 /* Allow * on an integer so we can cast it to whatever we want.
1908 This returns an int, which seems like the most C-like thing to
1909 do. "long long" variables are rare enough that
1910 BUILTIN_TYPE_LONGEST would seem to be a mistake. */
1911 if (type->code () == TYPE_CODE_INT)
1912 return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
1913 (CORE_ADDR) value_as_address (arg1));
1914 return value_ind (arg1);
1915 }
1916
1917 /* A helper function for UNOP_ALIGNOF. */
1918
1919 struct value *
1920 eval_op_alignof (struct type *expect_type, struct expression *exp,
1921 enum noside noside,
1922 struct value *arg1)
1923 {
1924 struct type *type = value_type (arg1);
1925 /* FIXME: This should be size_t. */
1926 struct type *size_type = builtin_type (exp->gdbarch)->builtin_int;
1927 ULONGEST align = type_align (type);
1928 if (align == 0)
1929 error (_("could not determine alignment of type"));
1930 return value_from_longest (size_type, align);
1931 }
1932
1933 /* A helper function for UNOP_MEMVAL. */
1934
1935 struct value *
1936 eval_op_memval (struct type *expect_type, struct expression *exp,
1937 enum noside noside,
1938 struct value *arg1, struct type *type)
1939 {
1940 if (noside == EVAL_SKIP)
1941 return eval_skip_value (exp);
1942 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1943 return value_zero (type, lval_memory);
1944 else
1945 return value_at_lazy (type, value_as_address (arg1));
1946 }
1947
1948 /* A helper function for UNOP_PREINCREMENT. */
1949
1950 struct value *
1951 eval_op_preinc (struct type *expect_type, struct expression *exp,
1952 enum noside noside, enum exp_opcode op,
1953 struct value *arg1)
1954 {
1955 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
1956 return arg1;
1957 else if (unop_user_defined_p (op, arg1))
1958 {
1959 return value_x_unop (arg1, op, noside);
1960 }
1961 else
1962 {
1963 struct value *arg2;
1964 if (ptrmath_type_p (exp->language_defn, value_type (arg1)))
1965 arg2 = value_ptradd (arg1, 1);
1966 else
1967 {
1968 struct value *tmp = arg1;
1969
1970 arg2 = value_one (value_type (arg1));
1971 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
1972 arg2 = value_binop (tmp, arg2, BINOP_ADD);
1973 }
1974
1975 return value_assign (arg1, arg2);
1976 }
1977 }
1978
1979 /* A helper function for UNOP_PREDECREMENT. */
1980
1981 struct value *
1982 eval_op_predec (struct type *expect_type, struct expression *exp,
1983 enum noside noside, enum exp_opcode op,
1984 struct value *arg1)
1985 {
1986 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
1987 return arg1;
1988 else if (unop_user_defined_p (op, arg1))
1989 {
1990 return value_x_unop (arg1, op, noside);
1991 }
1992 else
1993 {
1994 struct value *arg2;
1995 if (ptrmath_type_p (exp->language_defn, value_type (arg1)))
1996 arg2 = value_ptradd (arg1, -1);
1997 else
1998 {
1999 struct value *tmp = arg1;
2000
2001 arg2 = value_one (value_type (arg1));
2002 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2003 arg2 = value_binop (tmp, arg2, BINOP_SUB);
2004 }
2005
2006 return value_assign (arg1, arg2);
2007 }
2008 }
2009
2010 /* A helper function for UNOP_POSTINCREMENT. */
2011
2012 struct value *
2013 eval_op_postinc (struct type *expect_type, struct expression *exp,
2014 enum noside noside, enum exp_opcode op,
2015 struct value *arg1)
2016 {
2017 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2018 return arg1;
2019 else if (unop_user_defined_p (op, arg1))
2020 {
2021 return value_x_unop (arg1, op, noside);
2022 }
2023 else
2024 {
2025 struct value *arg3 = value_non_lval (arg1);
2026 struct value *arg2;
2027
2028 if (ptrmath_type_p (exp->language_defn, value_type (arg1)))
2029 arg2 = value_ptradd (arg1, 1);
2030 else
2031 {
2032 struct value *tmp = arg1;
2033
2034 arg2 = value_one (value_type (arg1));
2035 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2036 arg2 = value_binop (tmp, arg2, BINOP_ADD);
2037 }
2038
2039 value_assign (arg1, arg2);
2040 return arg3;
2041 }
2042 }
2043
2044 /* A helper function for UNOP_POSTDECREMENT. */
2045
2046 struct value *
2047 eval_op_postdec (struct type *expect_type, struct expression *exp,
2048 enum noside noside, enum exp_opcode op,
2049 struct value *arg1)
2050 {
2051 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2052 return arg1;
2053 else if (unop_user_defined_p (op, arg1))
2054 {
2055 return value_x_unop (arg1, op, noside);
2056 }
2057 else
2058 {
2059 struct value *arg3 = value_non_lval (arg1);
2060 struct value *arg2;
2061
2062 if (ptrmath_type_p (exp->language_defn, value_type (arg1)))
2063 arg2 = value_ptradd (arg1, -1);
2064 else
2065 {
2066 struct value *tmp = arg1;
2067
2068 arg2 = value_one (value_type (arg1));
2069 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2070 arg2 = value_binop (tmp, arg2, BINOP_SUB);
2071 }
2072
2073 value_assign (arg1, arg2);
2074 return arg3;
2075 }
2076 }
2077
2078 /* A helper function for OP_TYPE. */
2079
2080 struct value *
2081 eval_op_type (struct type *expect_type, struct expression *exp,
2082 enum noside noside, struct type *type)
2083 {
2084 if (noside == EVAL_SKIP)
2085 return eval_skip_value (exp);
2086 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2087 return allocate_value (type);
2088 else
2089 error (_("Attempt to use a type name as an expression"));
2090 }
2091
2092 /* A helper function for BINOP_ASSIGN_MODIFY. */
2093
2094 struct value *
2095 eval_binop_assign_modify (struct type *expect_type, struct expression *exp,
2096 enum noside noside, enum exp_opcode op,
2097 struct value *arg1, struct value *arg2)
2098 {
2099 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2100 return arg1;
2101 if (binop_user_defined_p (op, arg1, arg2))
2102 return value_x_binop (arg1, arg2, BINOP_ASSIGN_MODIFY, op, noside);
2103 else if (op == BINOP_ADD && ptrmath_type_p (exp->language_defn,
2104 value_type (arg1))
2105 && is_integral_type (value_type (arg2)))
2106 arg2 = value_ptradd (arg1, value_as_long (arg2));
2107 else if (op == BINOP_SUB && ptrmath_type_p (exp->language_defn,
2108 value_type (arg1))
2109 && is_integral_type (value_type (arg2)))
2110 arg2 = value_ptradd (arg1, - value_as_long (arg2));
2111 else
2112 {
2113 struct value *tmp = arg1;
2114
2115 /* For shift and integer exponentiation operations,
2116 only promote the first argument. */
2117 if ((op == BINOP_LSH || op == BINOP_RSH || op == BINOP_EXP)
2118 && is_integral_type (value_type (arg2)))
2119 unop_promote (exp->language_defn, exp->gdbarch, &tmp);
2120 else
2121 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2122
2123 arg2 = value_binop (tmp, arg2, op);
2124 }
2125 return value_assign (arg1, arg2);
2126 }
2127
2128 /* Note that ARGS needs 2 empty slots up front and must end with a
2129 null pointer. */
2130 static struct value *
2131 eval_op_objc_msgcall (struct type *expect_type, struct expression *exp,
2132 enum noside noside, CORE_ADDR selector,
2133 value *target, gdb::array_view<value *> args)
2134 {
2135 CORE_ADDR responds_selector = 0;
2136 CORE_ADDR method_selector = 0;
2137
2138 int struct_return = 0;
2139
2140 struct value *msg_send = NULL;
2141 struct value *msg_send_stret = NULL;
2142 int gnu_runtime = 0;
2143
2144 struct value *method = NULL;
2145 struct value *called_method = NULL;
2146
2147 struct type *selector_type = NULL;
2148 struct type *long_type;
2149 struct type *type;
2150
2151 struct value *ret = NULL;
2152 CORE_ADDR addr = 0;
2153
2154 value *argvec[5];
2155
2156 long_type = builtin_type (exp->gdbarch)->builtin_long;
2157 selector_type = builtin_type (exp->gdbarch)->builtin_data_ptr;
2158
2159 if (value_as_long (target) == 0)
2160 return value_from_longest (long_type, 0);
2161
2162 if (lookup_minimal_symbol ("objc_msg_lookup", 0, 0).minsym)
2163 gnu_runtime = 1;
2164
2165 /* Find the method dispatch (Apple runtime) or method lookup
2166 (GNU runtime) function for Objective-C. These will be used
2167 to lookup the symbol information for the method. If we
2168 can't find any symbol information, then we'll use these to
2169 call the method, otherwise we can call the method
2170 directly. The msg_send_stret function is used in the special
2171 case of a method that returns a structure (Apple runtime
2172 only). */
2173 if (gnu_runtime)
2174 {
2175 type = selector_type;
2176
2177 type = lookup_function_type (type);
2178 type = lookup_pointer_type (type);
2179 type = lookup_function_type (type);
2180 type = lookup_pointer_type (type);
2181
2182 msg_send = find_function_in_inferior ("objc_msg_lookup", NULL);
2183 msg_send_stret
2184 = find_function_in_inferior ("objc_msg_lookup", NULL);
2185
2186 msg_send = value_from_pointer (type, value_as_address (msg_send));
2187 msg_send_stret = value_from_pointer (type,
2188 value_as_address (msg_send_stret));
2189 }
2190 else
2191 {
2192 msg_send = find_function_in_inferior ("objc_msgSend", NULL);
2193 /* Special dispatcher for methods returning structs. */
2194 msg_send_stret
2195 = find_function_in_inferior ("objc_msgSend_stret", NULL);
2196 }
2197
2198 /* Verify the target object responds to this method. The
2199 standard top-level 'Object' class uses a different name for
2200 the verification method than the non-standard, but more
2201 often used, 'NSObject' class. Make sure we check for both. */
2202
2203 responds_selector
2204 = lookup_child_selector (exp->gdbarch, "respondsToSelector:");
2205 if (responds_selector == 0)
2206 responds_selector
2207 = lookup_child_selector (exp->gdbarch, "respondsTo:");
2208
2209 if (responds_selector == 0)
2210 error (_("no 'respondsTo:' or 'respondsToSelector:' method"));
2211
2212 method_selector
2213 = lookup_child_selector (exp->gdbarch, "methodForSelector:");
2214 if (method_selector == 0)
2215 method_selector
2216 = lookup_child_selector (exp->gdbarch, "methodFor:");
2217
2218 if (method_selector == 0)
2219 error (_("no 'methodFor:' or 'methodForSelector:' method"));
2220
2221 /* Call the verification method, to make sure that the target
2222 class implements the desired method. */
2223
2224 argvec[0] = msg_send;
2225 argvec[1] = target;
2226 argvec[2] = value_from_longest (long_type, responds_selector);
2227 argvec[3] = value_from_longest (long_type, selector);
2228 argvec[4] = 0;
2229
2230 ret = call_function_by_hand (argvec[0], NULL, {argvec + 1, 3});
2231 if (gnu_runtime)
2232 {
2233 /* Function objc_msg_lookup returns a pointer. */
2234 argvec[0] = ret;
2235 ret = call_function_by_hand (argvec[0], NULL, {argvec + 1, 3});
2236 }
2237 if (value_as_long (ret) == 0)
2238 error (_("Target does not respond to this message selector."));
2239
2240 /* Call "methodForSelector:" method, to get the address of a
2241 function method that implements this selector for this
2242 class. If we can find a symbol at that address, then we
2243 know the return type, parameter types etc. (that's a good
2244 thing). */
2245
2246 argvec[0] = msg_send;
2247 argvec[1] = target;
2248 argvec[2] = value_from_longest (long_type, method_selector);
2249 argvec[3] = value_from_longest (long_type, selector);
2250 argvec[4] = 0;
2251
2252 ret = call_function_by_hand (argvec[0], NULL, {argvec + 1, 3});
2253 if (gnu_runtime)
2254 {
2255 argvec[0] = ret;
2256 ret = call_function_by_hand (argvec[0], NULL, {argvec + 1, 3});
2257 }
2258
2259 /* ret should now be the selector. */
2260
2261 addr = value_as_long (ret);
2262 if (addr)
2263 {
2264 struct symbol *sym = NULL;
2265
2266 /* The address might point to a function descriptor;
2267 resolve it to the actual code address instead. */
2268 addr = gdbarch_convert_from_func_ptr_addr (exp->gdbarch, addr,
2269 current_top_target ());
2270
2271 /* Is it a high_level symbol? */
2272 sym = find_pc_function (addr);
2273 if (sym != NULL)
2274 method = value_of_variable (sym, 0);
2275 }
2276
2277 /* If we found a method with symbol information, check to see
2278 if it returns a struct. Otherwise assume it doesn't. */
2279
2280 if (method)
2281 {
2282 CORE_ADDR funaddr;
2283 struct type *val_type;
2284
2285 funaddr = find_function_addr (method, &val_type);
2286
2287 block_for_pc (funaddr);
2288
2289 val_type = check_typedef (val_type);
2290
2291 if ((val_type == NULL)
2292 || (val_type->code () == TYPE_CODE_ERROR))
2293 {
2294 if (expect_type != NULL)
2295 val_type = expect_type;
2296 }
2297
2298 struct_return = using_struct_return (exp->gdbarch, method,
2299 val_type);
2300 }
2301 else if (expect_type != NULL)
2302 {
2303 struct_return = using_struct_return (exp->gdbarch, NULL,
2304 check_typedef (expect_type));
2305 }
2306
2307 /* Found a function symbol. Now we will substitute its
2308 value in place of the message dispatcher (obj_msgSend),
2309 so that we call the method directly instead of thru
2310 the dispatcher. The main reason for doing this is that
2311 we can now evaluate the return value and parameter values
2312 according to their known data types, in case we need to
2313 do things like promotion, dereferencing, special handling
2314 of structs and doubles, etc.
2315
2316 We want to use the type signature of 'method', but still
2317 jump to objc_msgSend() or objc_msgSend_stret() to better
2318 mimic the behavior of the runtime. */
2319
2320 if (method)
2321 {
2322 if (value_type (method)->code () != TYPE_CODE_FUNC)
2323 error (_("method address has symbol information "
2324 "with non-function type; skipping"));
2325
2326 /* Create a function pointer of the appropriate type, and
2327 replace its value with the value of msg_send or
2328 msg_send_stret. We must use a pointer here, as
2329 msg_send and msg_send_stret are of pointer type, and
2330 the representation may be different on systems that use
2331 function descriptors. */
2332 if (struct_return)
2333 called_method
2334 = value_from_pointer (lookup_pointer_type (value_type (method)),
2335 value_as_address (msg_send_stret));
2336 else
2337 called_method
2338 = value_from_pointer (lookup_pointer_type (value_type (method)),
2339 value_as_address (msg_send));
2340 }
2341 else
2342 {
2343 if (struct_return)
2344 called_method = msg_send_stret;
2345 else
2346 called_method = msg_send;
2347 }
2348
2349 if (noside == EVAL_SKIP)
2350 return eval_skip_value (exp);
2351
2352 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2353 {
2354 /* If the return type doesn't look like a function type,
2355 call an error. This can happen if somebody tries to
2356 turn a variable into a function call. This is here
2357 because people often want to call, eg, strcmp, which
2358 gdb doesn't know is a function. If gdb isn't asked for
2359 it's opinion (ie. through "whatis"), it won't offer
2360 it. */
2361
2362 struct type *callee_type = value_type (called_method);
2363
2364 if (callee_type && callee_type->code () == TYPE_CODE_PTR)
2365 callee_type = TYPE_TARGET_TYPE (callee_type);
2366 callee_type = TYPE_TARGET_TYPE (callee_type);
2367
2368 if (callee_type)
2369 {
2370 if ((callee_type->code () == TYPE_CODE_ERROR) && expect_type)
2371 return allocate_value (expect_type);
2372 else
2373 return allocate_value (callee_type);
2374 }
2375 else
2376 error (_("Expression of type other than "
2377 "\"method returning ...\" used as a method"));
2378 }
2379
2380 /* Now depending on whether we found a symbol for the method,
2381 we will either call the runtime dispatcher or the method
2382 directly. */
2383
2384 args[0] = target;
2385 args[1] = value_from_longest (long_type, selector);
2386
2387 if (gnu_runtime && (method != NULL))
2388 {
2389 /* Function objc_msg_lookup returns a pointer. */
2390 struct type *tem_type = value_type (called_method);
2391 tem_type = lookup_pointer_type (lookup_function_type (tem_type));
2392 deprecated_set_value_type (called_method, tem_type);
2393 called_method = call_function_by_hand (called_method, NULL, args);
2394 }
2395
2396 return call_function_by_hand (called_method, NULL, args);
2397 }
2398
2399 /* Helper function for MULTI_SUBSCRIPT. */
2400
2401 static struct value *
2402 eval_multi_subscript (struct type *expect_type, struct expression *exp,
2403 enum noside noside, value *arg1,
2404 gdb::array_view<value *> args)
2405 {
2406 if (noside == EVAL_SKIP)
2407 return arg1;
2408 for (value *arg2 : args)
2409 {
2410 if (binop_user_defined_p (MULTI_SUBSCRIPT, arg1, arg2))
2411 {
2412 arg1 = value_x_binop (arg1, arg2, MULTI_SUBSCRIPT, OP_NULL, noside);
2413 }
2414 else
2415 {
2416 arg1 = coerce_ref (arg1);
2417 struct type *type = check_typedef (value_type (arg1));
2418
2419 switch (type->code ())
2420 {
2421 case TYPE_CODE_PTR:
2422 case TYPE_CODE_ARRAY:
2423 case TYPE_CODE_STRING:
2424 arg1 = value_subscript (arg1, value_as_long (arg2));
2425 break;
2426
2427 default:
2428 if (type->name ())
2429 error (_("cannot subscript something of type `%s'"),
2430 type->name ());
2431 else
2432 error (_("cannot subscript requested type"));
2433 }
2434 }
2435 }
2436 return (arg1);
2437 }
2438
2439 namespace expr
2440 {
2441
2442 value *
2443 objc_msgcall_operation::evaluate (struct type *expect_type,
2444 struct expression *exp,
2445 enum noside noside)
2446 {
2447 enum noside sub_no_side = EVAL_NORMAL;
2448 struct type *selector_type = builtin_type (exp->gdbarch)->builtin_data_ptr;
2449
2450 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2451 sub_no_side = EVAL_NORMAL;
2452 else
2453 sub_no_side = noside;
2454 value *target
2455 = std::get<1> (m_storage)->evaluate (selector_type, exp, sub_no_side);
2456
2457 if (value_as_long (target) == 0)
2458 sub_no_side = EVAL_AVOID_SIDE_EFFECTS;
2459 else
2460 sub_no_side = noside;
2461 std::vector<operation_up> &args = std::get<2> (m_storage);
2462 value **argvec = XALLOCAVEC (struct value *, args.size () + 3);
2463 argvec[0] = nullptr;
2464 argvec[1] = nullptr;
2465 for (int i = 0; i < args.size (); ++i)
2466 argvec[i + 2] = args[i]->evaluate_with_coercion (exp, sub_no_side);
2467 argvec[args.size () + 2] = nullptr;
2468
2469 return eval_op_objc_msgcall (expect_type, exp, noside, std::
2470 get<0> (m_storage), target,
2471 gdb::make_array_view (argvec,
2472 args.size () + 3));
2473 }
2474
2475 value *
2476 multi_subscript_operation::evaluate (struct type *expect_type,
2477 struct expression *exp,
2478 enum noside noside)
2479 {
2480 value *arg1 = std::get<0> (m_storage)->evaluate_with_coercion (exp, noside);
2481 std::vector<operation_up> &values = std::get<1> (m_storage);
2482 value **argvec = XALLOCAVEC (struct value *, values.size ());
2483 for (int ix = 0; ix < values.size (); ++ix)
2484 argvec[ix] = values[ix]->evaluate_with_coercion (exp, noside);
2485 return eval_multi_subscript (expect_type, exp, noside, arg1,
2486 gdb::make_array_view (argvec, values.size ()));
2487 }
2488
2489 value *
2490 logical_and_operation::evaluate (struct type *expect_type,
2491 struct expression *exp,
2492 enum noside noside)
2493 {
2494 value *arg1 = std::get<0> (m_storage)->evaluate (nullptr, exp, noside);
2495 if (noside == EVAL_SKIP)
2496 return eval_skip_value (exp);
2497
2498 value *arg2 = std::get<1> (m_storage)->evaluate (nullptr, exp,
2499 EVAL_AVOID_SIDE_EFFECTS);
2500
2501 if (binop_user_defined_p (BINOP_LOGICAL_AND, arg1, arg2))
2502 {
2503 arg2 = std::get<1> (m_storage)->evaluate (nullptr, exp, noside);
2504 return value_x_binop (arg1, arg2, BINOP_LOGICAL_AND, OP_NULL, noside);
2505 }
2506 else
2507 {
2508 int tem = value_logical_not (arg1);
2509 if (!tem)
2510 {
2511 arg2 = std::get<1> (m_storage)->evaluate (nullptr, exp, noside);
2512 tem = value_logical_not (arg2);
2513 }
2514 struct type *type = language_bool_type (exp->language_defn,
2515 exp->gdbarch);
2516 return value_from_longest (type, !tem);
2517 }
2518 }
2519
2520 value *
2521 logical_or_operation::evaluate (struct type *expect_type,
2522 struct expression *exp,
2523 enum noside noside)
2524 {
2525 value *arg1 = std::get<0> (m_storage)->evaluate (nullptr, exp, noside);
2526 if (noside == EVAL_SKIP)
2527 return eval_skip_value (exp);
2528
2529 value *arg2 = std::get<1> (m_storage)->evaluate (nullptr, exp,
2530 EVAL_AVOID_SIDE_EFFECTS);
2531
2532 if (binop_user_defined_p (BINOP_LOGICAL_OR, arg1, arg2))
2533 {
2534 arg2 = std::get<1> (m_storage)->evaluate (nullptr, exp, noside);
2535 return value_x_binop (arg1, arg2, BINOP_LOGICAL_OR, OP_NULL, noside);
2536 }
2537 else
2538 {
2539 int tem = value_logical_not (arg1);
2540 if (tem)
2541 {
2542 arg2 = std::get<1> (m_storage)->evaluate (nullptr, exp, noside);
2543 tem = value_logical_not (arg2);
2544 }
2545
2546 struct type *type = language_bool_type (exp->language_defn,
2547 exp->gdbarch);
2548 return value_from_longest (type, !tem);
2549 }
2550 }
2551
2552 }
2553
2554 struct value *
2555 evaluate_subexp_standard (struct type *expect_type,
2556 struct expression *exp, int *pos,
2557 enum noside noside)
2558 {
2559 enum exp_opcode op;
2560 int tem, tem2, tem3;
2561 int pc, oldpos;
2562 struct value *arg1 = NULL;
2563 struct value *arg2 = NULL;
2564 struct type *type;
2565 int nargs;
2566 struct value **argvec;
2567 int ix;
2568 struct type **arg_types;
2569
2570 pc = (*pos)++;
2571 op = exp->elts[pc].opcode;
2572
2573 switch (op)
2574 {
2575 case OP_SCOPE:
2576 tem = longest_to_int (exp->elts[pc + 2].longconst);
2577 (*pos) += 4 + BYTES_TO_EXP_ELEM (tem + 1);
2578 return eval_op_scope (expect_type, exp, noside,
2579 exp->elts[pc + 1].type,
2580 &exp->elts[pc + 3].string);
2581
2582 case OP_LONG:
2583 (*pos) += 3;
2584 return value_from_longest (exp->elts[pc + 1].type,
2585 exp->elts[pc + 2].longconst);
2586
2587 case OP_FLOAT:
2588 (*pos) += 3;
2589 return value_from_contents (exp->elts[pc + 1].type,
2590 exp->elts[pc + 2].floatconst);
2591
2592 case OP_ADL_FUNC:
2593 case OP_VAR_VALUE:
2594 {
2595 (*pos) += 3;
2596 symbol *var = exp->elts[pc + 2].symbol;
2597 if (SYMBOL_TYPE (var)->code () == TYPE_CODE_ERROR)
2598 error_unknown_type (var->print_name ());
2599 if (noside != EVAL_SKIP)
2600 return evaluate_var_value (noside, exp->elts[pc + 1].block, var);
2601 else
2602 {
2603 /* Return a dummy value of the correct type when skipping, so
2604 that parent functions know what is to be skipped. */
2605 return allocate_value (SYMBOL_TYPE (var));
2606 }
2607 }
2608
2609 case OP_VAR_MSYM_VALUE:
2610 {
2611 (*pos) += 3;
2612
2613 minimal_symbol *msymbol = exp->elts[pc + 2].msymbol;
2614 return eval_op_var_msym_value (expect_type, exp, noside,
2615 pc == 0, msymbol,
2616 exp->elts[pc + 1].objfile);
2617 }
2618
2619 case OP_VAR_ENTRY_VALUE:
2620 (*pos) += 2;
2621
2622 {
2623 struct symbol *sym = exp->elts[pc + 1].symbol;
2624
2625 return eval_op_var_entry_value (expect_type, exp, noside, sym);
2626 }
2627
2628 case OP_FUNC_STATIC_VAR:
2629 tem = longest_to_int (exp->elts[pc + 1].longconst);
2630 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
2631 if (noside == EVAL_SKIP)
2632 return eval_skip_value (exp);
2633
2634 {
2635 value *func = evaluate_subexp_standard (NULL, exp, pos, noside);
2636
2637 return eval_op_func_static_var (expect_type, exp, noside, func,
2638 &exp->elts[pc + 2].string);
2639 }
2640
2641 case OP_LAST:
2642 (*pos) += 2;
2643 return
2644 access_value_history (longest_to_int (exp->elts[pc + 1].longconst));
2645
2646 case OP_REGISTER:
2647 {
2648 const char *name = &exp->elts[pc + 2].string;
2649
2650 (*pos) += 3 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
2651 return eval_op_register (expect_type, exp, noside, name);
2652 }
2653 case OP_BOOL:
2654 (*pos) += 2;
2655 type = language_bool_type (exp->language_defn, exp->gdbarch);
2656 return value_from_longest (type, exp->elts[pc + 1].longconst);
2657
2658 case OP_INTERNALVAR:
2659 (*pos) += 2;
2660 return value_of_internalvar (exp->gdbarch,
2661 exp->elts[pc + 1].internalvar);
2662
2663 case OP_STRING:
2664 tem = longest_to_int (exp->elts[pc + 1].longconst);
2665 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
2666 return eval_op_string (expect_type, exp, noside, tem,
2667 &exp->elts[pc + 2].string);
2668
2669 case OP_OBJC_NSSTRING: /* Objective C Foundation Class
2670 NSString constant. */
2671 tem = longest_to_int (exp->elts[pc + 1].longconst);
2672 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
2673 if (noside == EVAL_SKIP)
2674 return eval_skip_value (exp);
2675 return value_nsstring (exp->gdbarch, &exp->elts[pc + 2].string, tem + 1);
2676
2677 case OP_ARRAY:
2678 (*pos) += 3;
2679 tem2 = longest_to_int (exp->elts[pc + 1].longconst);
2680 tem3 = longest_to_int (exp->elts[pc + 2].longconst);
2681 nargs = tem3 - tem2 + 1;
2682 type = expect_type ? check_typedef (expect_type) : nullptr;
2683
2684 if (expect_type != nullptr && noside != EVAL_SKIP
2685 && type->code () == TYPE_CODE_STRUCT)
2686 {
2687 struct value *rec = allocate_value (expect_type);
2688
2689 memset (value_contents_raw (rec), '\0', TYPE_LENGTH (type));
2690 return evaluate_struct_tuple (rec, exp, pos, noside, nargs);
2691 }
2692
2693 if (expect_type != nullptr && noside != EVAL_SKIP
2694 && type->code () == TYPE_CODE_ARRAY)
2695 {
2696 struct type *range_type = type->index_type ();
2697 struct type *element_type = TYPE_TARGET_TYPE (type);
2698 struct value *array = allocate_value (expect_type);
2699 int element_size = TYPE_LENGTH (check_typedef (element_type));
2700 LONGEST low_bound, high_bound, index;
2701
2702 if (!get_discrete_bounds (range_type, &low_bound, &high_bound))
2703 {
2704 low_bound = 0;
2705 high_bound = (TYPE_LENGTH (type) / element_size) - 1;
2706 }
2707 index = low_bound;
2708 memset (value_contents_raw (array), 0, TYPE_LENGTH (expect_type));
2709 for (tem = nargs; --nargs >= 0;)
2710 {
2711 struct value *element;
2712
2713 element = evaluate_subexp (element_type, exp, pos, noside);
2714 if (value_type (element) != element_type)
2715 element = value_cast (element_type, element);
2716 if (index > high_bound)
2717 /* To avoid memory corruption. */
2718 error (_("Too many array elements"));
2719 memcpy (value_contents_raw (array)
2720 + (index - low_bound) * element_size,
2721 value_contents (element),
2722 element_size);
2723 index++;
2724 }
2725 return array;
2726 }
2727
2728 if (expect_type != nullptr && noside != EVAL_SKIP
2729 && type->code () == TYPE_CODE_SET)
2730 {
2731 struct value *set = allocate_value (expect_type);
2732 gdb_byte *valaddr = value_contents_raw (set);
2733 struct type *element_type = type->index_type ();
2734 struct type *check_type = element_type;
2735 LONGEST low_bound, high_bound;
2736
2737 /* Get targettype of elementtype. */
2738 while (check_type->code () == TYPE_CODE_RANGE
2739 || check_type->code () == TYPE_CODE_TYPEDEF)
2740 check_type = TYPE_TARGET_TYPE (check_type);
2741
2742 if (!get_discrete_bounds (element_type, &low_bound, &high_bound))
2743 error (_("(power)set type with unknown size"));
2744 memset (valaddr, '\0', TYPE_LENGTH (type));
2745 for (tem = 0; tem < nargs; tem++)
2746 {
2747 LONGEST range_low, range_high;
2748 struct type *range_low_type, *range_high_type;
2749 struct value *elem_val;
2750
2751 elem_val = evaluate_subexp (element_type, exp, pos, noside);
2752 range_low_type = range_high_type = value_type (elem_val);
2753 range_low = range_high = value_as_long (elem_val);
2754
2755 /* Check types of elements to avoid mixture of elements from
2756 different types. Also check if type of element is "compatible"
2757 with element type of powerset. */
2758 if (range_low_type->code () == TYPE_CODE_RANGE)
2759 range_low_type = TYPE_TARGET_TYPE (range_low_type);
2760 if (range_high_type->code () == TYPE_CODE_RANGE)
2761 range_high_type = TYPE_TARGET_TYPE (range_high_type);
2762 if ((range_low_type->code () != range_high_type->code ())
2763 || (range_low_type->code () == TYPE_CODE_ENUM
2764 && (range_low_type != range_high_type)))
2765 /* different element modes. */
2766 error (_("POWERSET tuple elements of different mode"));
2767 if ((check_type->code () != range_low_type->code ())
2768 || (check_type->code () == TYPE_CODE_ENUM
2769 && range_low_type != check_type))
2770 error (_("incompatible POWERSET tuple elements"));
2771 if (range_low > range_high)
2772 {
2773 warning (_("empty POWERSET tuple range"));
2774 continue;
2775 }
2776 if (range_low < low_bound || range_high > high_bound)
2777 error (_("POWERSET tuple element out of range"));
2778 range_low -= low_bound;
2779 range_high -= low_bound;
2780 for (; range_low <= range_high; range_low++)
2781 {
2782 int bit_index = (unsigned) range_low % TARGET_CHAR_BIT;
2783
2784 if (gdbarch_byte_order (exp->gdbarch) == BFD_ENDIAN_BIG)
2785 bit_index = TARGET_CHAR_BIT - 1 - bit_index;
2786 valaddr[(unsigned) range_low / TARGET_CHAR_BIT]
2787 |= 1 << bit_index;
2788 }
2789 }
2790 return set;
2791 }
2792
2793 argvec = XALLOCAVEC (struct value *, nargs);
2794 for (tem = 0; tem < nargs; tem++)
2795 {
2796 /* Ensure that array expressions are coerced into pointer
2797 objects. */
2798 argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
2799 }
2800 if (noside == EVAL_SKIP)
2801 return eval_skip_value (exp);
2802 return value_array (tem2, tem3, argvec);
2803
2804 case TERNOP_SLICE:
2805 {
2806 struct value *array = evaluate_subexp (nullptr, exp, pos, noside);
2807 struct value *low = evaluate_subexp (nullptr, exp, pos, noside);
2808 struct value *upper = evaluate_subexp (nullptr, exp, pos, noside);
2809 return eval_op_ternop (expect_type, exp, noside, array, low, upper);
2810 }
2811
2812 case TERNOP_COND:
2813 /* Skip third and second args to evaluate the first one. */
2814 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
2815 if (value_logical_not (arg1))
2816 {
2817 evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
2818 return evaluate_subexp (nullptr, exp, pos, noside);
2819 }
2820 else
2821 {
2822 arg2 = evaluate_subexp (nullptr, exp, pos, noside);
2823 evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
2824 return arg2;
2825 }
2826
2827 case OP_OBJC_SELECTOR:
2828 { /* Objective C @selector operator. */
2829 char *sel = &exp->elts[pc + 2].string;
2830 int len = longest_to_int (exp->elts[pc + 1].longconst);
2831
2832 (*pos) += 3 + BYTES_TO_EXP_ELEM (len + 1);
2833 if (sel[len] != 0)
2834 sel[len] = 0; /* Make sure it's terminated. */
2835
2836 return eval_op_objc_selector (expect_type, exp, noside, sel);
2837 }
2838
2839 case OP_OBJC_MSGCALL:
2840 { /* Objective C message (method) call. */
2841 CORE_ADDR selector = 0;
2842
2843 enum noside sub_no_side = EVAL_NORMAL;
2844
2845 struct value *target = NULL;
2846
2847 struct type *selector_type = NULL;
2848
2849 selector = exp->elts[pc + 1].longconst;
2850 nargs = exp->elts[pc + 2].longconst;
2851 argvec = XALLOCAVEC (struct value *, nargs + 3);
2852
2853 (*pos) += 3;
2854
2855 selector_type = builtin_type (exp->gdbarch)->builtin_data_ptr;
2856
2857 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2858 sub_no_side = EVAL_NORMAL;
2859 else
2860 sub_no_side = noside;
2861
2862 target = evaluate_subexp (selector_type, exp, pos, sub_no_side);
2863
2864 if (value_as_long (target) == 0)
2865 sub_no_side = EVAL_SKIP;
2866 else
2867 sub_no_side = noside;
2868
2869 /* Now depending on whether we found a symbol for the method,
2870 we will either call the runtime dispatcher or the method
2871 directly. */
2872
2873 argvec[0] = nullptr;
2874 argvec[1] = nullptr;
2875 /* User-supplied arguments. */
2876 for (tem = 0; tem < nargs; tem++)
2877 argvec[tem + 2] = evaluate_subexp_with_coercion (exp, pos,
2878 sub_no_side);
2879 argvec[tem + 3] = 0;
2880
2881 auto call_args = gdb::make_array_view (argvec, nargs + 3);
2882
2883 return eval_op_objc_msgcall (expect_type, exp, noside, selector,
2884 target, call_args);
2885 }
2886 break;
2887
2888 case OP_FUNCALL:
2889 return evaluate_funcall (expect_type, exp, pos, noside);
2890
2891 case OP_COMPLEX:
2892 /* We have a complex number, There should be 2 floating
2893 point numbers that compose it. */
2894 (*pos) += 2;
2895 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
2896 arg2 = evaluate_subexp (nullptr, exp, pos, noside);
2897
2898 return value_literal_complex (arg1, arg2, exp->elts[pc + 1].type);
2899
2900 case STRUCTOP_STRUCT:
2901 tem = longest_to_int (exp->elts[pc + 1].longconst);
2902 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
2903 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
2904 return eval_op_structop_struct (expect_type, exp, noside, arg1,
2905 &exp->elts[pc + 2].string);
2906
2907 case STRUCTOP_PTR:
2908 tem = longest_to_int (exp->elts[pc + 1].longconst);
2909 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
2910 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
2911 return eval_op_structop_ptr (expect_type, exp, noside, arg1,
2912 &exp->elts[pc + 2].string);
2913
2914 case STRUCTOP_MEMBER:
2915 case STRUCTOP_MPTR:
2916 if (op == STRUCTOP_MEMBER)
2917 arg1 = evaluate_subexp_for_address (exp, pos, noside);
2918 else
2919 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
2920
2921 arg2 = evaluate_subexp (nullptr, exp, pos, noside);
2922
2923 return eval_op_member (expect_type, exp, noside, arg1, arg2);
2924
2925 case TYPE_INSTANCE:
2926 {
2927 type_instance_flags flags
2928 = (type_instance_flag_value) longest_to_int (exp->elts[pc + 1].longconst);
2929 nargs = longest_to_int (exp->elts[pc + 2].longconst);
2930 arg_types = (struct type **) alloca (nargs * sizeof (struct type *));
2931 for (ix = 0; ix < nargs; ++ix)
2932 arg_types[ix] = exp->elts[pc + 2 + ix + 1].type;
2933
2934 fake_method fake_expect_type (flags, nargs, arg_types);
2935 *(pos) += 4 + nargs;
2936 return evaluate_subexp_standard (fake_expect_type.type (), exp, pos,
2937 noside);
2938 }
2939
2940 case BINOP_CONCAT:
2941 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
2942 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
2943 return eval_op_concat (expect_type, exp, noside, arg1, arg2);
2944
2945 case BINOP_ASSIGN:
2946 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
2947 /* Special-case assignments where the left-hand-side is a
2948 convenience variable -- in these, don't bother setting an
2949 expected type. This avoids a weird case where re-assigning a
2950 string or array to an internal variable could error with "Too
2951 many array elements". */
2952 arg2 = evaluate_subexp (VALUE_LVAL (arg1) == lval_internalvar
2953 ? nullptr
2954 : value_type (arg1),
2955 exp, pos, noside);
2956
2957 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2958 return arg1;
2959 if (binop_user_defined_p (op, arg1, arg2))
2960 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2961 else
2962 return value_assign (arg1, arg2);
2963
2964 case BINOP_ASSIGN_MODIFY:
2965 (*pos) += 2;
2966 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
2967 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2968 op = exp->elts[pc + 1].opcode;
2969 return eval_binop_assign_modify (expect_type, exp, noside, op,
2970 arg1, arg2);
2971
2972 case BINOP_ADD:
2973 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
2974 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
2975 return eval_op_add (expect_type, exp, noside, arg1, arg2);
2976
2977 case BINOP_SUB:
2978 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
2979 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
2980 return eval_op_sub (expect_type, exp, noside, arg1, arg2);
2981
2982 case BINOP_EXP:
2983 case BINOP_MUL:
2984 case BINOP_DIV:
2985 case BINOP_INTDIV:
2986 case BINOP_REM:
2987 case BINOP_MOD:
2988 case BINOP_LSH:
2989 case BINOP_RSH:
2990 case BINOP_BITWISE_AND:
2991 case BINOP_BITWISE_IOR:
2992 case BINOP_BITWISE_XOR:
2993 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
2994 arg2 = evaluate_subexp (nullptr, exp, pos, noside);
2995 return eval_op_binary (expect_type, exp, noside, op, arg1, arg2);
2996
2997 case BINOP_SUBSCRIPT:
2998 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
2999 arg2 = evaluate_subexp (nullptr, exp, pos, noside);
3000 return eval_op_subscript (expect_type, exp, noside, op, arg1, arg2);
3001
3002 case MULTI_SUBSCRIPT:
3003 (*pos) += 2;
3004 nargs = longest_to_int (exp->elts[pc + 1].longconst);
3005 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
3006 argvec = XALLOCAVEC (struct value *, nargs);
3007 for (ix = 0; ix < nargs; ++ix)
3008 argvec[ix] = evaluate_subexp_with_coercion (exp, pos, noside);
3009 return eval_multi_subscript (expect_type, exp, noside, arg1,
3010 gdb::make_array_view (argvec, nargs));
3011
3012 case BINOP_LOGICAL_AND:
3013 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
3014 if (noside == EVAL_SKIP)
3015 {
3016 evaluate_subexp (nullptr, exp, pos, noside);
3017 return eval_skip_value (exp);
3018 }
3019
3020 oldpos = *pos;
3021 arg2 = evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3022 *pos = oldpos;
3023
3024 if (binop_user_defined_p (op, arg1, arg2))
3025 {
3026 arg2 = evaluate_subexp (nullptr, exp, pos, noside);
3027 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
3028 }
3029 else
3030 {
3031 tem = value_logical_not (arg1);
3032 arg2
3033 = evaluate_subexp (nullptr, exp, pos, (tem ? EVAL_SKIP : noside));
3034 type = language_bool_type (exp->language_defn, exp->gdbarch);
3035 return value_from_longest (type,
3036 (LONGEST) (!tem && !value_logical_not (arg2)));
3037 }
3038
3039 case BINOP_LOGICAL_OR:
3040 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
3041 if (noside == EVAL_SKIP)
3042 {
3043 evaluate_subexp (nullptr, exp, pos, noside);
3044 return eval_skip_value (exp);
3045 }
3046
3047 oldpos = *pos;
3048 arg2 = evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3049 *pos = oldpos;
3050
3051 if (binop_user_defined_p (op, arg1, arg2))
3052 {
3053 arg2 = evaluate_subexp (nullptr, exp, pos, noside);
3054 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
3055 }
3056 else
3057 {
3058 tem = value_logical_not (arg1);
3059 arg2
3060 = evaluate_subexp (nullptr, exp, pos, (!tem ? EVAL_SKIP : noside));
3061 type = language_bool_type (exp->language_defn, exp->gdbarch);
3062 return value_from_longest (type,
3063 (LONGEST) (!tem || !value_logical_not (arg2)));
3064 }
3065
3066 case BINOP_EQUAL:
3067 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
3068 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
3069 return eval_op_equal (expect_type, exp, noside, op, arg1, arg2);
3070
3071 case BINOP_NOTEQUAL:
3072 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
3073 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
3074 return eval_op_notequal (expect_type, exp, noside, op, arg1, arg2);
3075
3076 case BINOP_LESS:
3077 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
3078 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
3079 return eval_op_less (expect_type, exp, noside, op, arg1, arg2);
3080
3081 case BINOP_GTR:
3082 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
3083 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
3084 return eval_op_gtr (expect_type, exp, noside, op, arg1, arg2);
3085
3086 case BINOP_GEQ:
3087 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
3088 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
3089 return eval_op_geq (expect_type, exp, noside, op, arg1, arg2);
3090
3091 case BINOP_LEQ:
3092 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
3093 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
3094 return eval_op_leq (expect_type, exp, noside, op, arg1, arg2);
3095
3096 case BINOP_REPEAT:
3097 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
3098 arg2 = evaluate_subexp (nullptr, exp, pos, noside);
3099 return eval_op_repeat (expect_type, exp, noside, op, arg1, arg2);
3100
3101 case BINOP_COMMA:
3102 evaluate_subexp (nullptr, exp, pos, noside);
3103 return evaluate_subexp (nullptr, exp, pos, noside);
3104
3105 case UNOP_PLUS:
3106 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
3107 return eval_op_plus (expect_type, exp, noside, op, arg1);
3108
3109 case UNOP_NEG:
3110 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
3111 return eval_op_neg (expect_type, exp, noside, op, arg1);
3112
3113 case UNOP_COMPLEMENT:
3114 /* C++: check for and handle destructor names. */
3115
3116 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
3117 return eval_op_complement (expect_type, exp, noside, op, arg1);
3118
3119 case UNOP_LOGICAL_NOT:
3120 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
3121 return eval_op_lognot (expect_type, exp, noside, op, arg1);
3122
3123 case UNOP_IND:
3124 if (expect_type && expect_type->code () == TYPE_CODE_PTR)
3125 expect_type = TYPE_TARGET_TYPE (check_typedef (expect_type));
3126 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
3127 return eval_op_ind (expect_type, exp, noside, arg1);
3128
3129 case UNOP_ADDR:
3130 /* C++: check for and handle pointer to members. */
3131
3132 if (noside == EVAL_SKIP)
3133 {
3134 evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
3135 return eval_skip_value (exp);
3136 }
3137 else
3138 return evaluate_subexp_for_address (exp, pos, noside);
3139
3140 case UNOP_SIZEOF:
3141 if (noside == EVAL_SKIP)
3142 {
3143 evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
3144 return eval_skip_value (exp);
3145 }
3146 return evaluate_subexp_for_sizeof (exp, pos, noside);
3147
3148 case UNOP_ALIGNOF:
3149 arg1 = evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3150 return eval_op_alignof (expect_type, exp, noside, arg1);
3151
3152 case UNOP_CAST:
3153 (*pos) += 2;
3154 type = exp->elts[pc + 1].type;
3155 return evaluate_subexp_for_cast (exp, pos, noside, type);
3156
3157 case UNOP_CAST_TYPE:
3158 arg1 = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3159 type = value_type (arg1);
3160 return evaluate_subexp_for_cast (exp, pos, noside, type);
3161
3162 case UNOP_DYNAMIC_CAST:
3163 arg1 = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3164 type = value_type (arg1);
3165 arg1 = evaluate_subexp (type, exp, pos, noside);
3166 if (noside == EVAL_SKIP)
3167 return eval_skip_value (exp);
3168 return value_dynamic_cast (type, arg1);
3169
3170 case UNOP_REINTERPRET_CAST:
3171 arg1 = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3172 type = value_type (arg1);
3173 arg1 = evaluate_subexp (type, exp, pos, noside);
3174 if (noside == EVAL_SKIP)
3175 return eval_skip_value (exp);
3176 return value_reinterpret_cast (type, arg1);
3177
3178 case UNOP_MEMVAL:
3179 (*pos) += 2;
3180 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
3181 return eval_op_memval (expect_type, exp, noside, arg1,
3182 exp->elts[pc + 1].type);
3183
3184 case UNOP_MEMVAL_TYPE:
3185 arg1 = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3186 type = value_type (arg1);
3187 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
3188 return eval_op_memval (expect_type, exp, noside, arg1, type);
3189
3190 case UNOP_PREINCREMENT:
3191 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
3192 return eval_op_preinc (expect_type, exp, noside, op, arg1);
3193
3194 case UNOP_PREDECREMENT:
3195 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
3196 return eval_op_predec (expect_type, exp, noside, op, arg1);
3197
3198 case UNOP_POSTINCREMENT:
3199 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
3200 return eval_op_postinc (expect_type, exp, noside, op, arg1);
3201
3202 case UNOP_POSTDECREMENT:
3203 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
3204 return eval_op_postdec (expect_type, exp, noside, op, arg1);
3205
3206 case OP_THIS:
3207 (*pos) += 1;
3208 return value_of_this (exp->language_defn);
3209
3210 case OP_TYPE:
3211 /* The value is not supposed to be used. This is here to make it
3212 easier to accommodate expressions that contain types. */
3213 (*pos) += 2;
3214 return eval_op_type (expect_type, exp, noside, exp->elts[pc + 1].type);
3215
3216 case OP_TYPEOF:
3217 case OP_DECLTYPE:
3218 if (noside == EVAL_SKIP)
3219 {
3220 evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
3221 return eval_skip_value (exp);
3222 }
3223 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
3224 {
3225 enum exp_opcode sub_op = exp->elts[*pos].opcode;
3226 struct value *result;
3227
3228 result = evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3229
3230 /* 'decltype' has special semantics for lvalues. */
3231 if (op == OP_DECLTYPE
3232 && (sub_op == BINOP_SUBSCRIPT
3233 || sub_op == STRUCTOP_MEMBER
3234 || sub_op == STRUCTOP_MPTR
3235 || sub_op == UNOP_IND
3236 || sub_op == STRUCTOP_STRUCT
3237 || sub_op == STRUCTOP_PTR
3238 || sub_op == OP_SCOPE))
3239 {
3240 type = value_type (result);
3241
3242 if (!TYPE_IS_REFERENCE (type))
3243 {
3244 type = lookup_lvalue_reference_type (type);
3245 result = allocate_value (type);
3246 }
3247 }
3248
3249 return result;
3250 }
3251 else
3252 error (_("Attempt to use a type as an expression"));
3253
3254 case OP_TYPEID:
3255 {
3256 struct value *result;
3257 enum exp_opcode sub_op = exp->elts[*pos].opcode;
3258
3259 if (sub_op == OP_TYPE || sub_op == OP_DECLTYPE || sub_op == OP_TYPEOF)
3260 result = evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3261 else
3262 result = evaluate_subexp (nullptr, exp, pos, noside);
3263
3264 if (noside != EVAL_NORMAL)
3265 return allocate_value (cplus_typeid_type (exp->gdbarch));
3266
3267 return cplus_typeid (result);
3268 }
3269
3270 default:
3271 /* Removing this case and compiling with gcc -Wall reveals that
3272 a lot of cases are hitting this case. Some of these should
3273 probably be removed from expression.h; others are legitimate
3274 expressions which are (apparently) not fully implemented.
3275
3276 If there are any cases landing here which mean a user error,
3277 then they should be separate cases, with more descriptive
3278 error messages. */
3279
3280 error (_("GDB does not (yet) know how to "
3281 "evaluate that kind of expression"));
3282 }
3283
3284 gdb_assert_not_reached ("missed return?");
3285 }
3286 \f
3287 /* Helper for evaluate_subexp_for_address. */
3288
3289 static value *
3290 evaluate_subexp_for_address_base (struct expression *exp, enum noside noside,
3291 value *x)
3292 {
3293 if (noside == EVAL_AVOID_SIDE_EFFECTS)
3294 {
3295 struct type *type = check_typedef (value_type (x));
3296
3297 if (TYPE_IS_REFERENCE (type))
3298 return value_zero (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
3299 not_lval);
3300 else if (VALUE_LVAL (x) == lval_memory || value_must_coerce_to_target (x))
3301 return value_zero (lookup_pointer_type (value_type (x)),
3302 not_lval);
3303 else
3304 error (_("Attempt to take address of "
3305 "value not located in memory."));
3306 }
3307 return value_addr (x);
3308 }
3309
3310 /* Evaluate a subexpression of EXP, at index *POS,
3311 and return the address of that subexpression.
3312 Advance *POS over the subexpression.
3313 If the subexpression isn't an lvalue, get an error.
3314 NOSIDE may be EVAL_AVOID_SIDE_EFFECTS;
3315 then only the type of the result need be correct. */
3316
3317 static struct value *
3318 evaluate_subexp_for_address (struct expression *exp, int *pos,
3319 enum noside noside)
3320 {
3321 enum exp_opcode op;
3322 int pc;
3323 struct symbol *var;
3324 struct value *x;
3325 int tem;
3326
3327 pc = (*pos);
3328 op = exp->elts[pc].opcode;
3329
3330 switch (op)
3331 {
3332 case UNOP_IND:
3333 (*pos)++;
3334 x = evaluate_subexp (nullptr, exp, pos, noside);
3335
3336 /* We can't optimize out "&*" if there's a user-defined operator*. */
3337 if (unop_user_defined_p (op, x))
3338 {
3339 x = value_x_unop (x, op, noside);
3340 goto default_case_after_eval;
3341 }
3342
3343 return coerce_array (x);
3344
3345 case UNOP_MEMVAL:
3346 (*pos) += 3;
3347 return value_cast (lookup_pointer_type (exp->elts[pc + 1].type),
3348 evaluate_subexp (nullptr, exp, pos, noside));
3349
3350 case UNOP_MEMVAL_TYPE:
3351 {
3352 struct type *type;
3353
3354 (*pos) += 1;
3355 x = evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3356 type = value_type (x);
3357 return value_cast (lookup_pointer_type (type),
3358 evaluate_subexp (nullptr, exp, pos, noside));
3359 }
3360
3361 case OP_VAR_VALUE:
3362 var = exp->elts[pc + 2].symbol;
3363
3364 /* C++: The "address" of a reference should yield the address
3365 * of the object pointed to. Let value_addr() deal with it. */
3366 if (TYPE_IS_REFERENCE (SYMBOL_TYPE (var)))
3367 goto default_case;
3368
3369 (*pos) += 4;
3370 if (noside == EVAL_AVOID_SIDE_EFFECTS)
3371 {
3372 struct type *type =
3373 lookup_pointer_type (SYMBOL_TYPE (var));
3374 enum address_class sym_class = SYMBOL_CLASS (var);
3375
3376 if (sym_class == LOC_CONST
3377 || sym_class == LOC_CONST_BYTES
3378 || sym_class == LOC_REGISTER)
3379 error (_("Attempt to take address of register or constant."));
3380
3381 return
3382 value_zero (type, not_lval);
3383 }
3384 else
3385 return address_of_variable (var, exp->elts[pc + 1].block);
3386
3387 case OP_VAR_MSYM_VALUE:
3388 {
3389 (*pos) += 4;
3390
3391 value *val = evaluate_var_msym_value (noside,
3392 exp->elts[pc + 1].objfile,
3393 exp->elts[pc + 2].msymbol);
3394 if (noside == EVAL_AVOID_SIDE_EFFECTS)
3395 {
3396 struct type *type = lookup_pointer_type (value_type (val));
3397 return value_zero (type, not_lval);
3398 }
3399 else
3400 return value_addr (val);
3401 }
3402
3403 case OP_SCOPE:
3404 tem = longest_to_int (exp->elts[pc + 2].longconst);
3405 (*pos) += 5 + BYTES_TO_EXP_ELEM (tem + 1);
3406 x = value_aggregate_elt (exp->elts[pc + 1].type,
3407 &exp->elts[pc + 3].string,
3408 NULL, 1, noside);
3409 if (x == NULL)
3410 error (_("There is no field named %s"), &exp->elts[pc + 3].string);
3411 return x;
3412
3413 default:
3414 default_case:
3415 x = evaluate_subexp (nullptr, exp, pos, noside);
3416 default_case_after_eval:
3417 return evaluate_subexp_for_address_base (exp, noside, x);
3418 }
3419 }
3420
3421 namespace expr
3422 {
3423
3424 value *
3425 operation::evaluate_for_cast (struct type *expect_type,
3426 struct expression *exp,
3427 enum noside noside)
3428 {
3429 value *val = evaluate (expect_type, exp, noside);
3430 if (noside == EVAL_SKIP)
3431 return eval_skip_value (exp);
3432 return value_cast (expect_type, val);
3433 }
3434
3435 value *
3436 operation::evaluate_for_address (struct expression *exp, enum noside noside)
3437 {
3438 value *val = evaluate (nullptr, exp, noside);
3439 return evaluate_subexp_for_address_base (exp, noside, val);
3440 }
3441
3442 value *
3443 scope_operation::evaluate_for_address (struct expression *exp,
3444 enum noside noside)
3445 {
3446 value *x = value_aggregate_elt (std::get<0> (m_storage),
3447 std::get<1> (m_storage).c_str (),
3448 NULL, 1, noside);
3449 if (x == NULL)
3450 error (_("There is no field named %s"), std::get<1> (m_storage).c_str ());
3451 return x;
3452 }
3453
3454 value *
3455 unop_ind_base_operation::evaluate_for_address (struct expression *exp,
3456 enum noside noside)
3457 {
3458 value *x = std::get<0> (m_storage)->evaluate (nullptr, exp, noside);
3459
3460 /* We can't optimize out "&*" if there's a user-defined operator*. */
3461 if (unop_user_defined_p (UNOP_IND, x))
3462 {
3463 x = value_x_unop (x, UNOP_IND, noside);
3464 return evaluate_subexp_for_address_base (exp, noside, x);
3465 }
3466
3467 return coerce_array (x);
3468 }
3469
3470 value *
3471 var_msym_value_operation::evaluate_for_address (struct expression *exp,
3472 enum noside noside)
3473 {
3474 value *val = evaluate_var_msym_value (noside,
3475 std::get<1> (m_storage),
3476 std::get<0> (m_storage));
3477 if (noside == EVAL_AVOID_SIDE_EFFECTS)
3478 {
3479 struct type *type = lookup_pointer_type (value_type (val));
3480 return value_zero (type, not_lval);
3481 }
3482 else
3483 return value_addr (val);
3484 }
3485
3486 value *
3487 unop_memval_operation::evaluate_for_address (struct expression *exp,
3488 enum noside noside)
3489 {
3490 return value_cast (lookup_pointer_type (std::get<1> (m_storage)),
3491 std::get<0> (m_storage)->evaluate (nullptr, exp, noside));
3492 }
3493
3494 value *
3495 unop_memval_type_operation::evaluate_for_address (struct expression *exp,
3496 enum noside noside)
3497 {
3498 value *typeval = std::get<0> (m_storage)->evaluate (nullptr, exp,
3499 EVAL_AVOID_SIDE_EFFECTS);
3500 struct type *type = value_type (typeval);
3501 return value_cast (lookup_pointer_type (type),
3502 std::get<1> (m_storage)->evaluate (nullptr, exp, noside));
3503 }
3504
3505 }
3506
3507 /* Evaluate like `evaluate_subexp' except coercing arrays to pointers.
3508 When used in contexts where arrays will be coerced anyway, this is
3509 equivalent to `evaluate_subexp' but much faster because it avoids
3510 actually fetching array contents (perhaps obsolete now that we have
3511 value_lazy()).
3512
3513 Note that we currently only do the coercion for C expressions, where
3514 arrays are zero based and the coercion is correct. For other languages,
3515 with nonzero based arrays, coercion loses. Use CAST_IS_CONVERSION
3516 to decide if coercion is appropriate. */
3517
3518 struct value *
3519 evaluate_subexp_with_coercion (struct expression *exp,
3520 int *pos, enum noside noside)
3521 {
3522 enum exp_opcode op;
3523 int pc;
3524 struct value *val;
3525 struct symbol *var;
3526 struct type *type;
3527
3528 pc = (*pos);
3529 op = exp->elts[pc].opcode;
3530
3531 switch (op)
3532 {
3533 case OP_VAR_VALUE:
3534 var = exp->elts[pc + 2].symbol;
3535 type = check_typedef (SYMBOL_TYPE (var));
3536 if (type->code () == TYPE_CODE_ARRAY
3537 && !type->is_vector ()
3538 && CAST_IS_CONVERSION (exp->language_defn))
3539 {
3540 (*pos) += 4;
3541 val = address_of_variable (var, exp->elts[pc + 1].block);
3542 return value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
3543 val);
3544 }
3545 /* FALLTHROUGH */
3546
3547 default:
3548 return evaluate_subexp (nullptr, exp, pos, noside);
3549 }
3550 }
3551
3552 namespace expr
3553 {
3554
3555 value *
3556 var_value_operation::evaluate_for_address (struct expression *exp,
3557 enum noside noside)
3558 {
3559 symbol *var = std::get<0> (m_storage);
3560
3561 /* C++: The "address" of a reference should yield the address
3562 * of the object pointed to. Let value_addr() deal with it. */
3563 if (TYPE_IS_REFERENCE (SYMBOL_TYPE (var)))
3564 return operation::evaluate_for_address (exp, noside);
3565
3566 if (noside == EVAL_AVOID_SIDE_EFFECTS)
3567 {
3568 struct type *type = lookup_pointer_type (SYMBOL_TYPE (var));
3569 enum address_class sym_class = SYMBOL_CLASS (var);
3570
3571 if (sym_class == LOC_CONST
3572 || sym_class == LOC_CONST_BYTES
3573 || sym_class == LOC_REGISTER)
3574 error (_("Attempt to take address of register or constant."));
3575
3576 return value_zero (type, not_lval);
3577 }
3578 else
3579 return address_of_variable (var, std::get<1> (m_storage));
3580 }
3581
3582 value *
3583 var_value_operation::evaluate_with_coercion (struct expression *exp,
3584 enum noside noside)
3585 {
3586 struct symbol *var = std::get<0> (m_storage);
3587 struct type *type = check_typedef (SYMBOL_TYPE (var));
3588 if (type->code () == TYPE_CODE_ARRAY
3589 && !type->is_vector ()
3590 && CAST_IS_CONVERSION (exp->language_defn))
3591 {
3592 struct value *val = address_of_variable (var, std::get<1> (m_storage));
3593 return value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)), val);
3594 }
3595 return evaluate (nullptr, exp, noside);
3596 }
3597
3598 }
3599
3600 /* Helper function for evaluating the size of a type. */
3601
3602 static value *
3603 evaluate_subexp_for_sizeof_base (struct expression *exp, struct type *type)
3604 {
3605 /* FIXME: This should be size_t. */
3606 struct type *size_type = builtin_type (exp->gdbarch)->builtin_int;
3607 /* $5.3.3/2 of the C++ Standard (n3290 draft) says of sizeof:
3608 "When applied to a reference or a reference type, the result is
3609 the size of the referenced type." */
3610 type = check_typedef (type);
3611 if (exp->language_defn->la_language == language_cplus
3612 && (TYPE_IS_REFERENCE (type)))
3613 type = check_typedef (TYPE_TARGET_TYPE (type));
3614 return value_from_longest (size_type, (LONGEST) TYPE_LENGTH (type));
3615 }
3616
3617 /* Evaluate a subexpression of EXP, at index *POS,
3618 and return a value for the size of that subexpression.
3619 Advance *POS over the subexpression. If NOSIDE is EVAL_NORMAL
3620 we allow side-effects on the operand if its type is a variable
3621 length array. */
3622
3623 static struct value *
3624 evaluate_subexp_for_sizeof (struct expression *exp, int *pos,
3625 enum noside noside)
3626 {
3627 /* FIXME: This should be size_t. */
3628 struct type *size_type = builtin_type (exp->gdbarch)->builtin_int;
3629 enum exp_opcode op;
3630 int pc;
3631 struct type *type;
3632 struct value *val;
3633
3634 pc = (*pos);
3635 op = exp->elts[pc].opcode;
3636
3637 switch (op)
3638 {
3639 /* This case is handled specially
3640 so that we avoid creating a value for the result type.
3641 If the result type is very big, it's desirable not to
3642 create a value unnecessarily. */
3643 case UNOP_IND:
3644 (*pos)++;
3645 val = evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3646 type = check_typedef (value_type (val));
3647 if (type->code () != TYPE_CODE_PTR
3648 && !TYPE_IS_REFERENCE (type)
3649 && type->code () != TYPE_CODE_ARRAY)
3650 error (_("Attempt to take contents of a non-pointer value."));
3651 type = TYPE_TARGET_TYPE (type);
3652 if (is_dynamic_type (type))
3653 type = value_type (value_ind (val));
3654 return value_from_longest (size_type, (LONGEST) TYPE_LENGTH (type));
3655
3656 case UNOP_MEMVAL:
3657 (*pos) += 3;
3658 type = exp->elts[pc + 1].type;
3659 break;
3660
3661 case UNOP_MEMVAL_TYPE:
3662 (*pos) += 1;
3663 val = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3664 type = value_type (val);
3665 break;
3666
3667 case OP_VAR_VALUE:
3668 type = SYMBOL_TYPE (exp->elts[pc + 2].symbol);
3669 if (is_dynamic_type (type))
3670 {
3671 val = evaluate_subexp (nullptr, exp, pos, EVAL_NORMAL);
3672 type = value_type (val);
3673 if (type->code () == TYPE_CODE_ARRAY)
3674 {
3675 if (type_not_allocated (type) || type_not_associated (type))
3676 return value_zero (size_type, not_lval);
3677 else if (is_dynamic_type (type->index_type ())
3678 && type->bounds ()->high.kind () == PROP_UNDEFINED)
3679 return allocate_optimized_out_value (size_type);
3680 }
3681 }
3682 else
3683 (*pos) += 4;
3684 break;
3685
3686 case OP_VAR_MSYM_VALUE:
3687 {
3688 (*pos) += 4;
3689
3690 minimal_symbol *msymbol = exp->elts[pc + 2].msymbol;
3691 value *mval = evaluate_var_msym_value (noside,
3692 exp->elts[pc + 1].objfile,
3693 msymbol);
3694
3695 type = value_type (mval);
3696 if (type->code () == TYPE_CODE_ERROR)
3697 error_unknown_type (msymbol->print_name ());
3698
3699 return value_from_longest (size_type, TYPE_LENGTH (type));
3700 }
3701 break;
3702
3703 /* Deal with the special case if NOSIDE is EVAL_NORMAL and the resulting
3704 type of the subscript is a variable length array type. In this case we
3705 must re-evaluate the right hand side of the subscription to allow
3706 side-effects. */
3707 case BINOP_SUBSCRIPT:
3708 if (noside == EVAL_NORMAL)
3709 {
3710 int npc = (*pos) + 1;
3711
3712 val = evaluate_subexp (nullptr, exp, &npc, EVAL_AVOID_SIDE_EFFECTS);
3713 type = check_typedef (value_type (val));
3714 if (type->code () == TYPE_CODE_ARRAY)
3715 {
3716 type = check_typedef (TYPE_TARGET_TYPE (type));
3717 if (type->code () == TYPE_CODE_ARRAY)
3718 {
3719 type = type->index_type ();
3720 /* Only re-evaluate the right hand side if the resulting type
3721 is a variable length type. */
3722 if (type->bounds ()->flag_bound_evaluated)
3723 {
3724 val = evaluate_subexp (nullptr, exp, pos, EVAL_NORMAL);
3725 return value_from_longest
3726 (size_type, (LONGEST) TYPE_LENGTH (value_type (val)));
3727 }
3728 }
3729 }
3730 }
3731
3732 /* Fall through. */
3733
3734 default:
3735 val = evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3736 type = value_type (val);
3737 break;
3738 }
3739
3740 return evaluate_subexp_for_sizeof_base (exp, type);
3741 }
3742
3743 namespace expr
3744 {
3745
3746 value *
3747 operation::evaluate_for_sizeof (struct expression *exp, enum noside noside)
3748 {
3749 value *val = evaluate (nullptr, exp, EVAL_AVOID_SIDE_EFFECTS);
3750 return evaluate_subexp_for_sizeof_base (exp, value_type (val));
3751 }
3752
3753 value *
3754 var_msym_value_operation::evaluate_for_sizeof (struct expression *exp,
3755 enum noside noside)
3756
3757 {
3758 minimal_symbol *msymbol = std::get<0> (m_storage);
3759 value *mval = evaluate_var_msym_value (noside,
3760 std::get<1> (m_storage),
3761 msymbol);
3762
3763 struct type *type = value_type (mval);
3764 if (type->code () == TYPE_CODE_ERROR)
3765 error_unknown_type (msymbol->print_name ());
3766
3767 /* FIXME: This should be size_t. */
3768 struct type *size_type = builtin_type (exp->gdbarch)->builtin_int;
3769 return value_from_longest (size_type, TYPE_LENGTH (type));
3770 }
3771
3772 value *
3773 subscript_operation::evaluate_for_sizeof (struct expression *exp,
3774 enum noside noside)
3775 {
3776 if (noside == EVAL_NORMAL)
3777 {
3778 value *val = std::get<0> (m_storage)->evaluate (nullptr, exp,
3779 EVAL_AVOID_SIDE_EFFECTS);
3780 struct type *type = check_typedef (value_type (val));
3781 if (type->code () == TYPE_CODE_ARRAY)
3782 {
3783 type = check_typedef (TYPE_TARGET_TYPE (type));
3784 if (type->code () == TYPE_CODE_ARRAY)
3785 {
3786 type = type->index_type ();
3787 /* Only re-evaluate the right hand side if the resulting type
3788 is a variable length type. */
3789 if (type->bounds ()->flag_bound_evaluated)
3790 {
3791 val = evaluate (nullptr, exp, EVAL_NORMAL);
3792 /* FIXME: This should be size_t. */
3793 struct type *size_type
3794 = builtin_type (exp->gdbarch)->builtin_int;
3795 return value_from_longest
3796 (size_type, (LONGEST) TYPE_LENGTH (value_type (val)));
3797 }
3798 }
3799 }
3800 }
3801
3802 return operation::evaluate_for_sizeof (exp, noside);
3803 }
3804
3805 value *
3806 unop_ind_base_operation::evaluate_for_sizeof (struct expression *exp,
3807 enum noside noside)
3808 {
3809 value *val = std::get<0> (m_storage)->evaluate (nullptr, exp,
3810 EVAL_AVOID_SIDE_EFFECTS);
3811 struct type *type = check_typedef (value_type (val));
3812 if (type->code () != TYPE_CODE_PTR
3813 && !TYPE_IS_REFERENCE (type)
3814 && type->code () != TYPE_CODE_ARRAY)
3815 error (_("Attempt to take contents of a non-pointer value."));
3816 type = TYPE_TARGET_TYPE (type);
3817 if (is_dynamic_type (type))
3818 type = value_type (value_ind (val));
3819 /* FIXME: This should be size_t. */
3820 struct type *size_type = builtin_type (exp->gdbarch)->builtin_int;
3821 return value_from_longest (size_type, (LONGEST) TYPE_LENGTH (type));
3822 }
3823
3824 value *
3825 unop_memval_operation::evaluate_for_sizeof (struct expression *exp,
3826 enum noside noside)
3827 {
3828 return evaluate_subexp_for_sizeof_base (exp, std::get<1> (m_storage));
3829 }
3830
3831 value *
3832 unop_memval_type_operation::evaluate_for_sizeof (struct expression *exp,
3833 enum noside noside)
3834 {
3835 value *typeval = std::get<0> (m_storage)->evaluate (nullptr, exp,
3836 EVAL_AVOID_SIDE_EFFECTS);
3837 return evaluate_subexp_for_sizeof_base (exp, value_type (typeval));
3838 }
3839
3840 value *
3841 var_value_operation::evaluate_for_sizeof (struct expression *exp,
3842 enum noside noside)
3843 {
3844 struct type *type = SYMBOL_TYPE (std::get<0> (m_storage));
3845 if (is_dynamic_type (type))
3846 {
3847 value *val = evaluate (nullptr, exp, EVAL_NORMAL);
3848 type = value_type (val);
3849 if (type->code () == TYPE_CODE_ARRAY)
3850 {
3851 /* FIXME: This should be size_t. */
3852 struct type *size_type = builtin_type (exp->gdbarch)->builtin_int;
3853 if (type_not_allocated (type) || type_not_associated (type))
3854 return value_zero (size_type, not_lval);
3855 else if (is_dynamic_type (type->index_type ())
3856 && type->bounds ()->high.kind () == PROP_UNDEFINED)
3857 return allocate_optimized_out_value (size_type);
3858 }
3859 }
3860 return evaluate_subexp_for_sizeof_base (exp, type);
3861 }
3862
3863 }
3864
3865 /* Evaluate a subexpression of EXP, at index *POS, and return a value
3866 for that subexpression cast to TO_TYPE. Advance *POS over the
3867 subexpression. */
3868
3869 static value *
3870 evaluate_subexp_for_cast (expression *exp, int *pos,
3871 enum noside noside,
3872 struct type *to_type)
3873 {
3874 int pc = *pos;
3875
3876 /* Don't let symbols be evaluated with evaluate_subexp because that
3877 throws an "unknown type" error for no-debug data symbols.
3878 Instead, we want the cast to reinterpret the symbol. */
3879 if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
3880 || exp->elts[pc].opcode == OP_VAR_VALUE)
3881 {
3882 (*pos) += 4;
3883
3884 value *val;
3885 if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3886 {
3887 if (noside == EVAL_AVOID_SIDE_EFFECTS)
3888 return value_zero (to_type, not_lval);
3889
3890 val = evaluate_var_msym_value (noside,
3891 exp->elts[pc + 1].objfile,
3892 exp->elts[pc + 2].msymbol);
3893 }
3894 else
3895 val = evaluate_var_value (noside,
3896 exp->elts[pc + 1].block,
3897 exp->elts[pc + 2].symbol);
3898
3899 if (noside == EVAL_SKIP)
3900 return eval_skip_value (exp);
3901
3902 val = value_cast (to_type, val);
3903
3904 /* Don't allow e.g. '&(int)var_with_no_debug_info'. */
3905 if (VALUE_LVAL (val) == lval_memory)
3906 {
3907 if (value_lazy (val))
3908 value_fetch_lazy (val);
3909 VALUE_LVAL (val) = not_lval;
3910 }
3911 return val;
3912 }
3913
3914 value *val = evaluate_subexp (to_type, exp, pos, noside);
3915 if (noside == EVAL_SKIP)
3916 return eval_skip_value (exp);
3917 return value_cast (to_type, val);
3918 }
3919
3920 namespace expr
3921 {
3922
3923 value *
3924 var_msym_value_operation::evaluate_for_cast (struct type *to_type,
3925 struct expression *exp,
3926 enum noside noside)
3927 {
3928 if (noside == EVAL_AVOID_SIDE_EFFECTS)
3929 return value_zero (to_type, not_lval);
3930
3931 value *val = evaluate_var_msym_value (noside,
3932 std::get<1> (m_storage),
3933 std::get<0> (m_storage));
3934
3935 if (noside == EVAL_SKIP)
3936 return eval_skip_value (exp);
3937
3938 val = value_cast (to_type, val);
3939
3940 /* Don't allow e.g. '&(int)var_with_no_debug_info'. */
3941 if (VALUE_LVAL (val) == lval_memory)
3942 {
3943 if (value_lazy (val))
3944 value_fetch_lazy (val);
3945 VALUE_LVAL (val) = not_lval;
3946 }
3947 return val;
3948 }
3949
3950 value *
3951 var_value_operation::evaluate_for_cast (struct type *to_type,
3952 struct expression *exp,
3953 enum noside noside)
3954 {
3955 value *val = evaluate_var_value (noside,
3956 std::get<1> (m_storage),
3957 std::get<0> (m_storage));
3958
3959 if (noside == EVAL_SKIP)
3960 return eval_skip_value (exp);
3961
3962 val = value_cast (to_type, val);
3963
3964 /* Don't allow e.g. '&(int)var_with_no_debug_info'. */
3965 if (VALUE_LVAL (val) == lval_memory)
3966 {
3967 if (value_lazy (val))
3968 value_fetch_lazy (val);
3969 VALUE_LVAL (val) = not_lval;
3970 }
3971 return val;
3972 }
3973
3974 }
3975
3976 /* Parse a type expression in the string [P..P+LENGTH). */
3977
3978 struct type *
3979 parse_and_eval_type (const char *p, int length)
3980 {
3981 char *tmp = (char *) alloca (length + 4);
3982
3983 tmp[0] = '(';
3984 memcpy (tmp + 1, p, length);
3985 tmp[length + 1] = ')';
3986 tmp[length + 2] = '0';
3987 tmp[length + 3] = '\0';
3988 expression_up expr = parse_expression (tmp);
3989 if (expr->first_opcode () != UNOP_CAST)
3990 error (_("Internal error in eval_type."));
3991 return expr->elts[1].type;
3992 }
This page took 0.11176 seconds and 3 git commands to generate.