Remove Chill from comments
[deliverable/binutils-gdb.git] / gdb / eval.c
1 /* Evaluate expressions for GDB.
2
3 Copyright (C) 1986-2014 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 <string.h>
22 #include "symtab.h"
23 #include "gdbtypes.h"
24 #include "value.h"
25 #include "expression.h"
26 #include "target.h"
27 #include "frame.h"
28 #include "language.h" /* For CAST_IS_CONVERSION. */
29 #include "f-lang.h" /* For array bound stuff. */
30 #include "cp-abi.h"
31 #include "infcall.h"
32 #include "objc-lang.h"
33 #include "block.h"
34 #include "parser-defs.h"
35 #include "cp-support.h"
36 #include "ui-out.h"
37 #include "exceptions.h"
38 #include "regcache.h"
39 #include "user-regs.h"
40 #include "valprint.h"
41 #include "gdb_obstack.h"
42 #include "objfiles.h"
43
44 #include "gdb_assert.h"
45
46 #include <ctype.h>
47
48 /* This is defined in valops.c */
49 extern int overload_resolution;
50
51 /* Prototypes for local functions. */
52
53 static struct value *evaluate_subexp_for_sizeof (struct expression *, int *,
54 enum noside);
55
56 static struct value *evaluate_subexp_for_address (struct expression *,
57 int *, enum noside);
58
59 static struct value *evaluate_struct_tuple (struct value *,
60 struct expression *, int *,
61 enum noside, int);
62
63 static LONGEST init_array_element (struct value *, struct value *,
64 struct expression *, int *, enum noside,
65 LONGEST, LONGEST);
66
67 struct value *
68 evaluate_subexp (struct type *expect_type, struct expression *exp,
69 int *pos, enum noside noside)
70 {
71 return (*exp->language_defn->la_exp_desc->evaluate_exp)
72 (expect_type, exp, pos, noside);
73 }
74 \f
75 /* Parse the string EXP as a C expression, evaluate it,
76 and return the result as a number. */
77
78 CORE_ADDR
79 parse_and_eval_address (const char *exp)
80 {
81 struct expression *expr = parse_expression (exp);
82 CORE_ADDR addr;
83 struct cleanup *old_chain =
84 make_cleanup (free_current_contents, &expr);
85
86 addr = value_as_address (evaluate_expression (expr));
87 do_cleanups (old_chain);
88 return addr;
89 }
90
91 /* Like parse_and_eval_address, but treats the value of the expression
92 as an integer, not an address, returns a LONGEST, not a CORE_ADDR. */
93 LONGEST
94 parse_and_eval_long (const char *exp)
95 {
96 struct expression *expr = parse_expression (exp);
97 LONGEST retval;
98 struct cleanup *old_chain =
99 make_cleanup (free_current_contents, &expr);
100
101 retval = value_as_long (evaluate_expression (expr));
102 do_cleanups (old_chain);
103 return (retval);
104 }
105
106 struct value *
107 parse_and_eval (const char *exp)
108 {
109 struct expression *expr = parse_expression (exp);
110 struct value *val;
111 struct cleanup *old_chain =
112 make_cleanup (free_current_contents, &expr);
113
114 val = evaluate_expression (expr);
115 do_cleanups (old_chain);
116 return val;
117 }
118
119 /* Parse up to a comma (or to a closeparen)
120 in the string EXPP as an expression, evaluate it, and return the value.
121 EXPP is advanced to point to the comma. */
122
123 struct value *
124 parse_to_comma_and_eval (const char **expp)
125 {
126 struct expression *expr = parse_exp_1 (expp, 0, (struct block *) 0, 1);
127 struct value *val;
128 struct cleanup *old_chain =
129 make_cleanup (free_current_contents, &expr);
130
131 val = evaluate_expression (expr);
132 do_cleanups (old_chain);
133 return val;
134 }
135 \f
136 /* Evaluate an expression in internal prefix form
137 such as is constructed by parse.y.
138
139 See expression.h for info on the format of an expression. */
140
141 struct value *
142 evaluate_expression (struct expression *exp)
143 {
144 int pc = 0;
145
146 return evaluate_subexp (NULL_TYPE, exp, &pc, EVAL_NORMAL);
147 }
148
149 /* Evaluate an expression, avoiding all memory references
150 and getting a value whose type alone is correct. */
151
152 struct value *
153 evaluate_type (struct expression *exp)
154 {
155 int pc = 0;
156
157 return evaluate_subexp (NULL_TYPE, exp, &pc, EVAL_AVOID_SIDE_EFFECTS);
158 }
159
160 /* Evaluate a subexpression, avoiding all memory references and
161 getting a value whose type alone is correct. */
162
163 struct value *
164 evaluate_subexpression_type (struct expression *exp, int subexp)
165 {
166 return evaluate_subexp (NULL_TYPE, exp, &subexp, EVAL_AVOID_SIDE_EFFECTS);
167 }
168
169 /* Find the current value of a watchpoint on EXP. Return the value in
170 *VALP and *RESULTP and the chain of intermediate and final values
171 in *VAL_CHAIN. RESULTP and VAL_CHAIN may be NULL if the caller does
172 not need them.
173
174 If PRESERVE_ERRORS is true, then exceptions are passed through.
175 Otherwise, if PRESERVE_ERRORS is false, then if a memory error
176 occurs while evaluating the expression, *RESULTP will be set to
177 NULL. *RESULTP may be a lazy value, if the result could not be
178 read from memory. It is used to determine whether a value is
179 user-specified (we should watch the whole value) or intermediate
180 (we should watch only the bit used to locate the final value).
181
182 If the final value, or any intermediate value, could not be read
183 from memory, *VALP will be set to NULL. *VAL_CHAIN will still be
184 set to any referenced values. *VALP will never be a lazy value.
185 This is the value which we store in struct breakpoint.
186
187 If VAL_CHAIN is non-NULL, *VAL_CHAIN will be released from the
188 value chain. The caller must free the values individually. If
189 VAL_CHAIN is NULL, all generated values will be left on the value
190 chain. */
191
192 void
193 fetch_subexp_value (struct expression *exp, int *pc, struct value **valp,
194 struct value **resultp, struct value **val_chain,
195 int preserve_errors)
196 {
197 struct value *mark, *new_mark, *result;
198 volatile struct gdb_exception ex;
199
200 *valp = NULL;
201 if (resultp)
202 *resultp = NULL;
203 if (val_chain)
204 *val_chain = NULL;
205
206 /* Evaluate the expression. */
207 mark = value_mark ();
208 result = NULL;
209
210 TRY_CATCH (ex, RETURN_MASK_ALL)
211 {
212 result = evaluate_subexp (NULL_TYPE, exp, pc, EVAL_NORMAL);
213 }
214 if (ex.reason < 0)
215 {
216 /* Ignore memory errors if we want watchpoints pointing at
217 inaccessible memory to still be created; otherwise, throw the
218 error to some higher catcher. */
219 switch (ex.error)
220 {
221 case MEMORY_ERROR:
222 if (!preserve_errors)
223 break;
224 default:
225 throw_exception (ex);
226 break;
227 }
228 }
229
230 new_mark = value_mark ();
231 if (mark == new_mark)
232 return;
233 if (resultp)
234 *resultp = result;
235
236 /* Make sure it's not lazy, so that after the target stops again we
237 have a non-lazy previous value to compare with. */
238 if (result != NULL)
239 {
240 if (!value_lazy (result))
241 *valp = result;
242 else
243 {
244 volatile struct gdb_exception except;
245
246 TRY_CATCH (except, RETURN_MASK_ERROR)
247 {
248 value_fetch_lazy (result);
249 *valp = result;
250 }
251 }
252 }
253
254 if (val_chain)
255 {
256 /* Return the chain of intermediate values. We use this to
257 decide which addresses to watch. */
258 *val_chain = new_mark;
259 value_release_to_mark (mark);
260 }
261 }
262
263 /* Extract a field operation from an expression. If the subexpression
264 of EXP starting at *SUBEXP is not a structure dereference
265 operation, return NULL. Otherwise, return the name of the
266 dereferenced field, and advance *SUBEXP to point to the
267 subexpression of the left-hand-side of the dereference. This is
268 used when completing field names. */
269
270 char *
271 extract_field_op (struct expression *exp, int *subexp)
272 {
273 int tem;
274 char *result;
275
276 if (exp->elts[*subexp].opcode != STRUCTOP_STRUCT
277 && exp->elts[*subexp].opcode != STRUCTOP_PTR)
278 return NULL;
279 tem = longest_to_int (exp->elts[*subexp + 1].longconst);
280 result = &exp->elts[*subexp + 2].string;
281 (*subexp) += 1 + 3 + BYTES_TO_EXP_ELEM (tem + 1);
282 return result;
283 }
284
285 /* This function evaluates brace-initializers (in C/C++) for
286 structure types. */
287
288 static struct value *
289 evaluate_struct_tuple (struct value *struct_val,
290 struct expression *exp,
291 int *pos, enum noside noside, int nargs)
292 {
293 struct type *struct_type = check_typedef (value_type (struct_val));
294 struct type *field_type;
295 int fieldno = -1;
296
297 while (--nargs >= 0)
298 {
299 struct value *val = NULL;
300 int bitpos, bitsize;
301 bfd_byte *addr;
302
303 fieldno++;
304 /* Skip static fields. */
305 while (fieldno < TYPE_NFIELDS (struct_type)
306 && field_is_static (&TYPE_FIELD (struct_type,
307 fieldno)))
308 fieldno++;
309 if (fieldno >= TYPE_NFIELDS (struct_type))
310 error (_("too many initializers"));
311 field_type = TYPE_FIELD_TYPE (struct_type, fieldno);
312 if (TYPE_CODE (field_type) == TYPE_CODE_UNION
313 && TYPE_FIELD_NAME (struct_type, fieldno)[0] == '0')
314 error (_("don't know which variant you want to set"));
315
316 /* Here, struct_type is the type of the inner struct,
317 while substruct_type is the type of the inner struct.
318 These are the same for normal structures, but a variant struct
319 contains anonymous union fields that contain substruct fields.
320 The value fieldno is the index of the top-level (normal or
321 anonymous union) field in struct_field, while the value
322 subfieldno is the index of the actual real (named inner) field
323 in substruct_type. */
324
325 field_type = TYPE_FIELD_TYPE (struct_type, fieldno);
326 if (val == 0)
327 val = evaluate_subexp (field_type, exp, pos, noside);
328
329 /* Now actually set the field in struct_val. */
330
331 /* Assign val to field fieldno. */
332 if (value_type (val) != field_type)
333 val = value_cast (field_type, val);
334
335 bitsize = TYPE_FIELD_BITSIZE (struct_type, fieldno);
336 bitpos = TYPE_FIELD_BITPOS (struct_type, fieldno);
337 addr = value_contents_writeable (struct_val) + bitpos / 8;
338 if (bitsize)
339 modify_field (struct_type, addr,
340 value_as_long (val), bitpos % 8, bitsize);
341 else
342 memcpy (addr, value_contents (val),
343 TYPE_LENGTH (value_type (val)));
344
345 }
346 return struct_val;
347 }
348
349 /* Recursive helper function for setting elements of array tuples.
350 The target is ARRAY (which has bounds LOW_BOUND to HIGH_BOUND); the
351 element value is ELEMENT; EXP, POS and NOSIDE are as usual.
352 Evaluates index expresions and sets the specified element(s) of
353 ARRAY to ELEMENT. Returns last index value. */
354
355 static LONGEST
356 init_array_element (struct value *array, struct value *element,
357 struct expression *exp, int *pos,
358 enum noside noside, LONGEST low_bound, LONGEST high_bound)
359 {
360 LONGEST index;
361 int element_size = TYPE_LENGTH (value_type (element));
362
363 if (exp->elts[*pos].opcode == BINOP_COMMA)
364 {
365 (*pos)++;
366 init_array_element (array, element, exp, pos, noside,
367 low_bound, high_bound);
368 return init_array_element (array, element,
369 exp, pos, noside, low_bound, high_bound);
370 }
371 else
372 {
373 index = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
374 if (index < low_bound || index > high_bound)
375 error (_("tuple index out of range"));
376 memcpy (value_contents_raw (array) + (index - low_bound) * element_size,
377 value_contents (element), element_size);
378 }
379 return index;
380 }
381
382 static struct value *
383 value_f90_subarray (struct value *array,
384 struct expression *exp, int *pos, enum noside noside)
385 {
386 int pc = (*pos) + 1;
387 LONGEST low_bound, high_bound;
388 struct type *range = check_typedef (TYPE_INDEX_TYPE (value_type (array)));
389 enum f90_range_type range_type = longest_to_int (exp->elts[pc].longconst);
390
391 *pos += 3;
392
393 if (range_type == LOW_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT)
394 low_bound = TYPE_LOW_BOUND (range);
395 else
396 low_bound = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
397
398 if (range_type == HIGH_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT)
399 high_bound = TYPE_HIGH_BOUND (range);
400 else
401 high_bound = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
402
403 return value_slice (array, low_bound, high_bound - low_bound + 1);
404 }
405
406
407 /* Promote value ARG1 as appropriate before performing a unary operation
408 on this argument.
409 If the result is not appropriate for any particular language then it
410 needs to patch this function. */
411
412 void
413 unop_promote (const struct language_defn *language, struct gdbarch *gdbarch,
414 struct value **arg1)
415 {
416 struct type *type1;
417
418 *arg1 = coerce_ref (*arg1);
419 type1 = check_typedef (value_type (*arg1));
420
421 if (is_integral_type (type1))
422 {
423 switch (language->la_language)
424 {
425 default:
426 /* Perform integral promotion for ANSI C/C++.
427 If not appropropriate for any particular language
428 it needs to modify this function. */
429 {
430 struct type *builtin_int = builtin_type (gdbarch)->builtin_int;
431
432 if (TYPE_LENGTH (type1) < TYPE_LENGTH (builtin_int))
433 *arg1 = value_cast (builtin_int, *arg1);
434 }
435 break;
436 }
437 }
438 }
439
440 /* Promote values ARG1 and ARG2 as appropriate before performing a binary
441 operation on those two operands.
442 If the result is not appropriate for any particular language then it
443 needs to patch this function. */
444
445 void
446 binop_promote (const struct language_defn *language, struct gdbarch *gdbarch,
447 struct value **arg1, struct value **arg2)
448 {
449 struct type *promoted_type = NULL;
450 struct type *type1;
451 struct type *type2;
452
453 *arg1 = coerce_ref (*arg1);
454 *arg2 = coerce_ref (*arg2);
455
456 type1 = check_typedef (value_type (*arg1));
457 type2 = check_typedef (value_type (*arg2));
458
459 if ((TYPE_CODE (type1) != TYPE_CODE_FLT
460 && TYPE_CODE (type1) != TYPE_CODE_DECFLOAT
461 && !is_integral_type (type1))
462 || (TYPE_CODE (type2) != TYPE_CODE_FLT
463 && TYPE_CODE (type2) != TYPE_CODE_DECFLOAT
464 && !is_integral_type (type2)))
465 return;
466
467 if (TYPE_CODE (type1) == TYPE_CODE_DECFLOAT
468 || TYPE_CODE (type2) == TYPE_CODE_DECFLOAT)
469 {
470 /* No promotion required. */
471 }
472 else if (TYPE_CODE (type1) == TYPE_CODE_FLT
473 || TYPE_CODE (type2) == TYPE_CODE_FLT)
474 {
475 switch (language->la_language)
476 {
477 case language_c:
478 case language_cplus:
479 case language_asm:
480 case language_objc:
481 case language_opencl:
482 /* No promotion required. */
483 break;
484
485 default:
486 /* For other languages the result type is unchanged from gdb
487 version 6.7 for backward compatibility.
488 If either arg was long double, make sure that value is also long
489 double. Otherwise use double. */
490 if (TYPE_LENGTH (type1) * 8 > gdbarch_double_bit (gdbarch)
491 || TYPE_LENGTH (type2) * 8 > gdbarch_double_bit (gdbarch))
492 promoted_type = builtin_type (gdbarch)->builtin_long_double;
493 else
494 promoted_type = builtin_type (gdbarch)->builtin_double;
495 break;
496 }
497 }
498 else if (TYPE_CODE (type1) == TYPE_CODE_BOOL
499 && TYPE_CODE (type2) == TYPE_CODE_BOOL)
500 {
501 /* No promotion required. */
502 }
503 else
504 /* Integral operations here. */
505 /* FIXME: Also mixed integral/booleans, with result an integer. */
506 {
507 const struct builtin_type *builtin = builtin_type (gdbarch);
508 unsigned int promoted_len1 = TYPE_LENGTH (type1);
509 unsigned int promoted_len2 = TYPE_LENGTH (type2);
510 int is_unsigned1 = TYPE_UNSIGNED (type1);
511 int is_unsigned2 = TYPE_UNSIGNED (type2);
512 unsigned int result_len;
513 int unsigned_operation;
514
515 /* Determine type length and signedness after promotion for
516 both operands. */
517 if (promoted_len1 < TYPE_LENGTH (builtin->builtin_int))
518 {
519 is_unsigned1 = 0;
520 promoted_len1 = TYPE_LENGTH (builtin->builtin_int);
521 }
522 if (promoted_len2 < TYPE_LENGTH (builtin->builtin_int))
523 {
524 is_unsigned2 = 0;
525 promoted_len2 = TYPE_LENGTH (builtin->builtin_int);
526 }
527
528 if (promoted_len1 > promoted_len2)
529 {
530 unsigned_operation = is_unsigned1;
531 result_len = promoted_len1;
532 }
533 else if (promoted_len2 > promoted_len1)
534 {
535 unsigned_operation = is_unsigned2;
536 result_len = promoted_len2;
537 }
538 else
539 {
540 unsigned_operation = is_unsigned1 || is_unsigned2;
541 result_len = promoted_len1;
542 }
543
544 switch (language->la_language)
545 {
546 case language_c:
547 case language_cplus:
548 case language_asm:
549 case language_objc:
550 if (result_len <= TYPE_LENGTH (builtin->builtin_int))
551 {
552 promoted_type = (unsigned_operation
553 ? builtin->builtin_unsigned_int
554 : builtin->builtin_int);
555 }
556 else if (result_len <= TYPE_LENGTH (builtin->builtin_long))
557 {
558 promoted_type = (unsigned_operation
559 ? builtin->builtin_unsigned_long
560 : builtin->builtin_long);
561 }
562 else
563 {
564 promoted_type = (unsigned_operation
565 ? builtin->builtin_unsigned_long_long
566 : builtin->builtin_long_long);
567 }
568 break;
569 case language_opencl:
570 if (result_len <= TYPE_LENGTH (lookup_signed_typename
571 (language, gdbarch, "int")))
572 {
573 promoted_type =
574 (unsigned_operation
575 ? lookup_unsigned_typename (language, gdbarch, "int")
576 : lookup_signed_typename (language, gdbarch, "int"));
577 }
578 else if (result_len <= TYPE_LENGTH (lookup_signed_typename
579 (language, gdbarch, "long")))
580 {
581 promoted_type =
582 (unsigned_operation
583 ? lookup_unsigned_typename (language, gdbarch, "long")
584 : lookup_signed_typename (language, gdbarch,"long"));
585 }
586 break;
587 default:
588 /* For other languages the result type is unchanged from gdb
589 version 6.7 for backward compatibility.
590 If either arg was long long, make sure that value is also long
591 long. Otherwise use long. */
592 if (unsigned_operation)
593 {
594 if (result_len > gdbarch_long_bit (gdbarch) / HOST_CHAR_BIT)
595 promoted_type = builtin->builtin_unsigned_long_long;
596 else
597 promoted_type = builtin->builtin_unsigned_long;
598 }
599 else
600 {
601 if (result_len > gdbarch_long_bit (gdbarch) / HOST_CHAR_BIT)
602 promoted_type = builtin->builtin_long_long;
603 else
604 promoted_type = builtin->builtin_long;
605 }
606 break;
607 }
608 }
609
610 if (promoted_type)
611 {
612 /* Promote both operands to common type. */
613 *arg1 = value_cast (promoted_type, *arg1);
614 *arg2 = value_cast (promoted_type, *arg2);
615 }
616 }
617
618 static int
619 ptrmath_type_p (const struct language_defn *lang, struct type *type)
620 {
621 type = check_typedef (type);
622 if (TYPE_CODE (type) == TYPE_CODE_REF)
623 type = TYPE_TARGET_TYPE (type);
624
625 switch (TYPE_CODE (type))
626 {
627 case TYPE_CODE_PTR:
628 case TYPE_CODE_FUNC:
629 return 1;
630
631 case TYPE_CODE_ARRAY:
632 return TYPE_VECTOR (type) ? 0 : lang->c_style_arrays;
633
634 default:
635 return 0;
636 }
637 }
638
639 /* Constructs a fake method with the given parameter types.
640 This function is used by the parser to construct an "expected"
641 type for method overload resolution. */
642
643 static struct type *
644 make_params (int num_types, struct type **param_types)
645 {
646 struct type *type = XCNEW (struct type);
647 TYPE_MAIN_TYPE (type) = XCNEW (struct main_type);
648 TYPE_LENGTH (type) = 1;
649 TYPE_CODE (type) = TYPE_CODE_METHOD;
650 TYPE_VPTR_FIELDNO (type) = -1;
651 TYPE_CHAIN (type) = type;
652 if (num_types > 0)
653 {
654 if (param_types[num_types - 1] == NULL)
655 {
656 --num_types;
657 TYPE_VARARGS (type) = 1;
658 }
659 else if (TYPE_CODE (check_typedef (param_types[num_types - 1]))
660 == TYPE_CODE_VOID)
661 {
662 --num_types;
663 /* Caller should have ensured this. */
664 gdb_assert (num_types == 0);
665 TYPE_PROTOTYPED (type) = 1;
666 }
667 }
668
669 TYPE_NFIELDS (type) = num_types;
670 TYPE_FIELDS (type) = (struct field *)
671 TYPE_ZALLOC (type, sizeof (struct field) * num_types);
672
673 while (num_types-- > 0)
674 TYPE_FIELD_TYPE (type, num_types) = param_types[num_types];
675
676 return type;
677 }
678
679 struct value *
680 evaluate_subexp_standard (struct type *expect_type,
681 struct expression *exp, int *pos,
682 enum noside noside)
683 {
684 enum exp_opcode op;
685 int tem, tem2, tem3;
686 int pc, pc2 = 0, oldpos;
687 struct value *arg1 = NULL;
688 struct value *arg2 = NULL;
689 struct value *arg3;
690 struct type *type;
691 int nargs;
692 struct value **argvec;
693 int code;
694 int ix;
695 long mem_offset;
696 struct type **arg_types;
697 int save_pos1;
698 struct symbol *function = NULL;
699 char *function_name = NULL;
700
701 pc = (*pos)++;
702 op = exp->elts[pc].opcode;
703
704 switch (op)
705 {
706 case OP_SCOPE:
707 tem = longest_to_int (exp->elts[pc + 2].longconst);
708 (*pos) += 4 + BYTES_TO_EXP_ELEM (tem + 1);
709 if (noside == EVAL_SKIP)
710 goto nosideret;
711 arg1 = value_aggregate_elt (exp->elts[pc + 1].type,
712 &exp->elts[pc + 3].string,
713 expect_type, 0, noside);
714 if (arg1 == NULL)
715 error (_("There is no field named %s"), &exp->elts[pc + 3].string);
716 return arg1;
717
718 case OP_LONG:
719 (*pos) += 3;
720 return value_from_longest (exp->elts[pc + 1].type,
721 exp->elts[pc + 2].longconst);
722
723 case OP_DOUBLE:
724 (*pos) += 3;
725 return value_from_double (exp->elts[pc + 1].type,
726 exp->elts[pc + 2].doubleconst);
727
728 case OP_DECFLOAT:
729 (*pos) += 3;
730 return value_from_decfloat (exp->elts[pc + 1].type,
731 exp->elts[pc + 2].decfloatconst);
732
733 case OP_ADL_FUNC:
734 case OP_VAR_VALUE:
735 (*pos) += 3;
736 if (noside == EVAL_SKIP)
737 goto nosideret;
738
739 /* JYG: We used to just return value_zero of the symbol type
740 if we're asked to avoid side effects. Otherwise we return
741 value_of_variable (...). However I'm not sure if
742 value_of_variable () has any side effect.
743 We need a full value object returned here for whatis_exp ()
744 to call evaluate_type () and then pass the full value to
745 value_rtti_target_type () if we are dealing with a pointer
746 or reference to a base class and print object is on. */
747
748 {
749 volatile struct gdb_exception except;
750 struct value *ret = NULL;
751
752 TRY_CATCH (except, RETURN_MASK_ERROR)
753 {
754 ret = value_of_variable (exp->elts[pc + 2].symbol,
755 exp->elts[pc + 1].block);
756 }
757
758 if (except.reason < 0)
759 {
760 if (noside == EVAL_AVOID_SIDE_EFFECTS)
761 ret = value_zero (SYMBOL_TYPE (exp->elts[pc + 2].symbol),
762 not_lval);
763 else
764 throw_exception (except);
765 }
766
767 return ret;
768 }
769
770 case OP_VAR_ENTRY_VALUE:
771 (*pos) += 2;
772 if (noside == EVAL_SKIP)
773 goto nosideret;
774
775 {
776 struct symbol *sym = exp->elts[pc + 1].symbol;
777 struct frame_info *frame;
778
779 if (noside == EVAL_AVOID_SIDE_EFFECTS)
780 return value_zero (SYMBOL_TYPE (sym), not_lval);
781
782 if (SYMBOL_COMPUTED_OPS (sym) == NULL
783 || SYMBOL_COMPUTED_OPS (sym)->read_variable_at_entry == NULL)
784 error (_("Symbol \"%s\" does not have any specific entry value"),
785 SYMBOL_PRINT_NAME (sym));
786
787 frame = get_selected_frame (NULL);
788 return SYMBOL_COMPUTED_OPS (sym)->read_variable_at_entry (sym, frame);
789 }
790
791 case OP_LAST:
792 (*pos) += 2;
793 return
794 access_value_history (longest_to_int (exp->elts[pc + 1].longconst));
795
796 case OP_REGISTER:
797 {
798 const char *name = &exp->elts[pc + 2].string;
799 int regno;
800 struct value *val;
801
802 (*pos) += 3 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
803 regno = user_reg_map_name_to_regnum (exp->gdbarch,
804 name, strlen (name));
805 if (regno == -1)
806 error (_("Register $%s not available."), name);
807
808 /* In EVAL_AVOID_SIDE_EFFECTS mode, we only need to return
809 a value with the appropriate register type. Unfortunately,
810 we don't have easy access to the type of user registers.
811 So for these registers, we fetch the register value regardless
812 of the evaluation mode. */
813 if (noside == EVAL_AVOID_SIDE_EFFECTS
814 && regno < gdbarch_num_regs (exp->gdbarch)
815 + gdbarch_num_pseudo_regs (exp->gdbarch))
816 val = value_zero (register_type (exp->gdbarch, regno), not_lval);
817 else
818 val = value_of_register (regno, get_selected_frame (NULL));
819 if (val == NULL)
820 error (_("Value of register %s not available."), name);
821 else
822 return val;
823 }
824 case OP_BOOL:
825 (*pos) += 2;
826 type = language_bool_type (exp->language_defn, exp->gdbarch);
827 return value_from_longest (type, exp->elts[pc + 1].longconst);
828
829 case OP_INTERNALVAR:
830 (*pos) += 2;
831 return value_of_internalvar (exp->gdbarch,
832 exp->elts[pc + 1].internalvar);
833
834 case OP_STRING:
835 tem = longest_to_int (exp->elts[pc + 1].longconst);
836 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
837 if (noside == EVAL_SKIP)
838 goto nosideret;
839 type = language_string_char_type (exp->language_defn, exp->gdbarch);
840 return value_string (&exp->elts[pc + 2].string, tem, type);
841
842 case OP_OBJC_NSSTRING: /* Objective C Foundation Class
843 NSString constant. */
844 tem = longest_to_int (exp->elts[pc + 1].longconst);
845 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
846 if (noside == EVAL_SKIP)
847 {
848 goto nosideret;
849 }
850 return value_nsstring (exp->gdbarch, &exp->elts[pc + 2].string, tem + 1);
851
852 case OP_ARRAY:
853 (*pos) += 3;
854 tem2 = longest_to_int (exp->elts[pc + 1].longconst);
855 tem3 = longest_to_int (exp->elts[pc + 2].longconst);
856 nargs = tem3 - tem2 + 1;
857 type = expect_type ? check_typedef (expect_type) : NULL_TYPE;
858
859 if (expect_type != NULL_TYPE && noside != EVAL_SKIP
860 && TYPE_CODE (type) == TYPE_CODE_STRUCT)
861 {
862 struct value *rec = allocate_value (expect_type);
863
864 memset (value_contents_raw (rec), '\0', TYPE_LENGTH (type));
865 return evaluate_struct_tuple (rec, exp, pos, noside, nargs);
866 }
867
868 if (expect_type != NULL_TYPE && noside != EVAL_SKIP
869 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
870 {
871 struct type *range_type = TYPE_INDEX_TYPE (type);
872 struct type *element_type = TYPE_TARGET_TYPE (type);
873 struct value *array = allocate_value (expect_type);
874 int element_size = TYPE_LENGTH (check_typedef (element_type));
875 LONGEST low_bound, high_bound, index;
876
877 if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
878 {
879 low_bound = 0;
880 high_bound = (TYPE_LENGTH (type) / element_size) - 1;
881 }
882 index = low_bound;
883 memset (value_contents_raw (array), 0, TYPE_LENGTH (expect_type));
884 for (tem = nargs; --nargs >= 0;)
885 {
886 struct value *element;
887 int index_pc = 0;
888
889 element = evaluate_subexp (element_type, exp, pos, noside);
890 if (value_type (element) != element_type)
891 element = value_cast (element_type, element);
892 if (index_pc)
893 {
894 int continue_pc = *pos;
895
896 *pos = index_pc;
897 index = init_array_element (array, element, exp, pos, noside,
898 low_bound, high_bound);
899 *pos = continue_pc;
900 }
901 else
902 {
903 if (index > high_bound)
904 /* To avoid memory corruption. */
905 error (_("Too many array elements"));
906 memcpy (value_contents_raw (array)
907 + (index - low_bound) * element_size,
908 value_contents (element),
909 element_size);
910 }
911 index++;
912 }
913 return array;
914 }
915
916 if (expect_type != NULL_TYPE && noside != EVAL_SKIP
917 && TYPE_CODE (type) == TYPE_CODE_SET)
918 {
919 struct value *set = allocate_value (expect_type);
920 gdb_byte *valaddr = value_contents_raw (set);
921 struct type *element_type = TYPE_INDEX_TYPE (type);
922 struct type *check_type = element_type;
923 LONGEST low_bound, high_bound;
924
925 /* Get targettype of elementtype. */
926 while (TYPE_CODE (check_type) == TYPE_CODE_RANGE
927 || TYPE_CODE (check_type) == TYPE_CODE_TYPEDEF)
928 check_type = TYPE_TARGET_TYPE (check_type);
929
930 if (get_discrete_bounds (element_type, &low_bound, &high_bound) < 0)
931 error (_("(power)set type with unknown size"));
932 memset (valaddr, '\0', TYPE_LENGTH (type));
933 for (tem = 0; tem < nargs; tem++)
934 {
935 LONGEST range_low, range_high;
936 struct type *range_low_type, *range_high_type;
937 struct value *elem_val;
938
939 elem_val = evaluate_subexp (element_type, exp, pos, noside);
940 range_low_type = range_high_type = value_type (elem_val);
941 range_low = range_high = value_as_long (elem_val);
942
943 /* Check types of elements to avoid mixture of elements from
944 different types. Also check if type of element is "compatible"
945 with element type of powerset. */
946 if (TYPE_CODE (range_low_type) == TYPE_CODE_RANGE)
947 range_low_type = TYPE_TARGET_TYPE (range_low_type);
948 if (TYPE_CODE (range_high_type) == TYPE_CODE_RANGE)
949 range_high_type = TYPE_TARGET_TYPE (range_high_type);
950 if ((TYPE_CODE (range_low_type) != TYPE_CODE (range_high_type))
951 || (TYPE_CODE (range_low_type) == TYPE_CODE_ENUM
952 && (range_low_type != range_high_type)))
953 /* different element modes. */
954 error (_("POWERSET tuple elements of different mode"));
955 if ((TYPE_CODE (check_type) != TYPE_CODE (range_low_type))
956 || (TYPE_CODE (check_type) == TYPE_CODE_ENUM
957 && range_low_type != check_type))
958 error (_("incompatible POWERSET tuple elements"));
959 if (range_low > range_high)
960 {
961 warning (_("empty POWERSET tuple range"));
962 continue;
963 }
964 if (range_low < low_bound || range_high > high_bound)
965 error (_("POWERSET tuple element out of range"));
966 range_low -= low_bound;
967 range_high -= low_bound;
968 for (; range_low <= range_high; range_low++)
969 {
970 int bit_index = (unsigned) range_low % TARGET_CHAR_BIT;
971
972 if (gdbarch_bits_big_endian (exp->gdbarch))
973 bit_index = TARGET_CHAR_BIT - 1 - bit_index;
974 valaddr[(unsigned) range_low / TARGET_CHAR_BIT]
975 |= 1 << bit_index;
976 }
977 }
978 return set;
979 }
980
981 argvec = (struct value **) alloca (sizeof (struct value *) * nargs);
982 for (tem = 0; tem < nargs; tem++)
983 {
984 /* Ensure that array expressions are coerced into pointer
985 objects. */
986 argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
987 }
988 if (noside == EVAL_SKIP)
989 goto nosideret;
990 return value_array (tem2, tem3, argvec);
991
992 case TERNOP_SLICE:
993 {
994 struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
995 int lowbound
996 = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
997 int upper
998 = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
999
1000 if (noside == EVAL_SKIP)
1001 goto nosideret;
1002 return value_slice (array, lowbound, upper - lowbound + 1);
1003 }
1004
1005 case TERNOP_COND:
1006 /* Skip third and second args to evaluate the first one. */
1007 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1008 if (value_logical_not (arg1))
1009 {
1010 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
1011 return evaluate_subexp (NULL_TYPE, exp, pos, noside);
1012 }
1013 else
1014 {
1015 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1016 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
1017 return arg2;
1018 }
1019
1020 case OP_OBJC_SELECTOR:
1021 { /* Objective C @selector operator. */
1022 char *sel = &exp->elts[pc + 2].string;
1023 int len = longest_to_int (exp->elts[pc + 1].longconst);
1024 struct type *selector_type;
1025
1026 (*pos) += 3 + BYTES_TO_EXP_ELEM (len + 1);
1027 if (noside == EVAL_SKIP)
1028 goto nosideret;
1029
1030 if (sel[len] != 0)
1031 sel[len] = 0; /* Make sure it's terminated. */
1032
1033 selector_type = builtin_type (exp->gdbarch)->builtin_data_ptr;
1034 return value_from_longest (selector_type,
1035 lookup_child_selector (exp->gdbarch, sel));
1036 }
1037
1038 case OP_OBJC_MSGCALL:
1039 { /* Objective C message (method) call. */
1040
1041 CORE_ADDR responds_selector = 0;
1042 CORE_ADDR method_selector = 0;
1043
1044 CORE_ADDR selector = 0;
1045
1046 int struct_return = 0;
1047 int sub_no_side = 0;
1048
1049 struct value *msg_send = NULL;
1050 struct value *msg_send_stret = NULL;
1051 int gnu_runtime = 0;
1052
1053 struct value *target = NULL;
1054 struct value *method = NULL;
1055 struct value *called_method = NULL;
1056
1057 struct type *selector_type = NULL;
1058 struct type *long_type;
1059
1060 struct value *ret = NULL;
1061 CORE_ADDR addr = 0;
1062
1063 selector = exp->elts[pc + 1].longconst;
1064 nargs = exp->elts[pc + 2].longconst;
1065 argvec = (struct value **) alloca (sizeof (struct value *)
1066 * (nargs + 5));
1067
1068 (*pos) += 3;
1069
1070 long_type = builtin_type (exp->gdbarch)->builtin_long;
1071 selector_type = builtin_type (exp->gdbarch)->builtin_data_ptr;
1072
1073 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1074 sub_no_side = EVAL_NORMAL;
1075 else
1076 sub_no_side = noside;
1077
1078 target = evaluate_subexp (selector_type, exp, pos, sub_no_side);
1079
1080 if (value_as_long (target) == 0)
1081 return value_from_longest (long_type, 0);
1082
1083 if (lookup_minimal_symbol ("objc_msg_lookup", 0, 0).minsym)
1084 gnu_runtime = 1;
1085
1086 /* Find the method dispatch (Apple runtime) or method lookup
1087 (GNU runtime) function for Objective-C. These will be used
1088 to lookup the symbol information for the method. If we
1089 can't find any symbol information, then we'll use these to
1090 call the method, otherwise we can call the method
1091 directly. The msg_send_stret function is used in the special
1092 case of a method that returns a structure (Apple runtime
1093 only). */
1094 if (gnu_runtime)
1095 {
1096 struct type *type = selector_type;
1097
1098 type = lookup_function_type (type);
1099 type = lookup_pointer_type (type);
1100 type = lookup_function_type (type);
1101 type = lookup_pointer_type (type);
1102
1103 msg_send = find_function_in_inferior ("objc_msg_lookup", NULL);
1104 msg_send_stret
1105 = find_function_in_inferior ("objc_msg_lookup", NULL);
1106
1107 msg_send = value_from_pointer (type, value_as_address (msg_send));
1108 msg_send_stret = value_from_pointer (type,
1109 value_as_address (msg_send_stret));
1110 }
1111 else
1112 {
1113 msg_send = find_function_in_inferior ("objc_msgSend", NULL);
1114 /* Special dispatcher for methods returning structs. */
1115 msg_send_stret
1116 = find_function_in_inferior ("objc_msgSend_stret", NULL);
1117 }
1118
1119 /* Verify the target object responds to this method. The
1120 standard top-level 'Object' class uses a different name for
1121 the verification method than the non-standard, but more
1122 often used, 'NSObject' class. Make sure we check for both. */
1123
1124 responds_selector
1125 = lookup_child_selector (exp->gdbarch, "respondsToSelector:");
1126 if (responds_selector == 0)
1127 responds_selector
1128 = lookup_child_selector (exp->gdbarch, "respondsTo:");
1129
1130 if (responds_selector == 0)
1131 error (_("no 'respondsTo:' or 'respondsToSelector:' method"));
1132
1133 method_selector
1134 = lookup_child_selector (exp->gdbarch, "methodForSelector:");
1135 if (method_selector == 0)
1136 method_selector
1137 = lookup_child_selector (exp->gdbarch, "methodFor:");
1138
1139 if (method_selector == 0)
1140 error (_("no 'methodFor:' or 'methodForSelector:' method"));
1141
1142 /* Call the verification method, to make sure that the target
1143 class implements the desired method. */
1144
1145 argvec[0] = msg_send;
1146 argvec[1] = target;
1147 argvec[2] = value_from_longest (long_type, responds_selector);
1148 argvec[3] = value_from_longest (long_type, selector);
1149 argvec[4] = 0;
1150
1151 ret = call_function_by_hand (argvec[0], 3, argvec + 1);
1152 if (gnu_runtime)
1153 {
1154 /* Function objc_msg_lookup returns a pointer. */
1155 argvec[0] = ret;
1156 ret = call_function_by_hand (argvec[0], 3, argvec + 1);
1157 }
1158 if (value_as_long (ret) == 0)
1159 error (_("Target does not respond to this message selector."));
1160
1161 /* Call "methodForSelector:" method, to get the address of a
1162 function method that implements this selector for this
1163 class. If we can find a symbol at that address, then we
1164 know the return type, parameter types etc. (that's a good
1165 thing). */
1166
1167 argvec[0] = msg_send;
1168 argvec[1] = target;
1169 argvec[2] = value_from_longest (long_type, method_selector);
1170 argvec[3] = value_from_longest (long_type, selector);
1171 argvec[4] = 0;
1172
1173 ret = call_function_by_hand (argvec[0], 3, argvec + 1);
1174 if (gnu_runtime)
1175 {
1176 argvec[0] = ret;
1177 ret = call_function_by_hand (argvec[0], 3, argvec + 1);
1178 }
1179
1180 /* ret should now be the selector. */
1181
1182 addr = value_as_long (ret);
1183 if (addr)
1184 {
1185 struct symbol *sym = NULL;
1186
1187 /* The address might point to a function descriptor;
1188 resolve it to the actual code address instead. */
1189 addr = gdbarch_convert_from_func_ptr_addr (exp->gdbarch, addr,
1190 &current_target);
1191
1192 /* Is it a high_level symbol? */
1193 sym = find_pc_function (addr);
1194 if (sym != NULL)
1195 method = value_of_variable (sym, 0);
1196 }
1197
1198 /* If we found a method with symbol information, check to see
1199 if it returns a struct. Otherwise assume it doesn't. */
1200
1201 if (method)
1202 {
1203 CORE_ADDR funaddr;
1204 struct type *val_type;
1205
1206 funaddr = find_function_addr (method, &val_type);
1207
1208 block_for_pc (funaddr);
1209
1210 CHECK_TYPEDEF (val_type);
1211
1212 if ((val_type == NULL)
1213 || (TYPE_CODE(val_type) == TYPE_CODE_ERROR))
1214 {
1215 if (expect_type != NULL)
1216 val_type = expect_type;
1217 }
1218
1219 struct_return = using_struct_return (exp->gdbarch, method,
1220 val_type);
1221 }
1222 else if (expect_type != NULL)
1223 {
1224 struct_return = using_struct_return (exp->gdbarch, NULL,
1225 check_typedef (expect_type));
1226 }
1227
1228 /* Found a function symbol. Now we will substitute its
1229 value in place of the message dispatcher (obj_msgSend),
1230 so that we call the method directly instead of thru
1231 the dispatcher. The main reason for doing this is that
1232 we can now evaluate the return value and parameter values
1233 according to their known data types, in case we need to
1234 do things like promotion, dereferencing, special handling
1235 of structs and doubles, etc.
1236
1237 We want to use the type signature of 'method', but still
1238 jump to objc_msgSend() or objc_msgSend_stret() to better
1239 mimic the behavior of the runtime. */
1240
1241 if (method)
1242 {
1243 if (TYPE_CODE (value_type (method)) != TYPE_CODE_FUNC)
1244 error (_("method address has symbol information "
1245 "with non-function type; skipping"));
1246
1247 /* Create a function pointer of the appropriate type, and
1248 replace its value with the value of msg_send or
1249 msg_send_stret. We must use a pointer here, as
1250 msg_send and msg_send_stret are of pointer type, and
1251 the representation may be different on systems that use
1252 function descriptors. */
1253 if (struct_return)
1254 called_method
1255 = value_from_pointer (lookup_pointer_type (value_type (method)),
1256 value_as_address (msg_send_stret));
1257 else
1258 called_method
1259 = value_from_pointer (lookup_pointer_type (value_type (method)),
1260 value_as_address (msg_send));
1261 }
1262 else
1263 {
1264 if (struct_return)
1265 called_method = msg_send_stret;
1266 else
1267 called_method = msg_send;
1268 }
1269
1270 if (noside == EVAL_SKIP)
1271 goto nosideret;
1272
1273 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1274 {
1275 /* If the return type doesn't look like a function type,
1276 call an error. This can happen if somebody tries to
1277 turn a variable into a function call. This is here
1278 because people often want to call, eg, strcmp, which
1279 gdb doesn't know is a function. If gdb isn't asked for
1280 it's opinion (ie. through "whatis"), it won't offer
1281 it. */
1282
1283 struct type *type = value_type (called_method);
1284
1285 if (type && TYPE_CODE (type) == TYPE_CODE_PTR)
1286 type = TYPE_TARGET_TYPE (type);
1287 type = TYPE_TARGET_TYPE (type);
1288
1289 if (type)
1290 {
1291 if ((TYPE_CODE (type) == TYPE_CODE_ERROR) && expect_type)
1292 return allocate_value (expect_type);
1293 else
1294 return allocate_value (type);
1295 }
1296 else
1297 error (_("Expression of type other than "
1298 "\"method returning ...\" used as a method"));
1299 }
1300
1301 /* Now depending on whether we found a symbol for the method,
1302 we will either call the runtime dispatcher or the method
1303 directly. */
1304
1305 argvec[0] = called_method;
1306 argvec[1] = target;
1307 argvec[2] = value_from_longest (long_type, selector);
1308 /* User-supplied arguments. */
1309 for (tem = 0; tem < nargs; tem++)
1310 argvec[tem + 3] = evaluate_subexp_with_coercion (exp, pos, noside);
1311 argvec[tem + 3] = 0;
1312
1313 if (gnu_runtime && (method != NULL))
1314 {
1315 /* Function objc_msg_lookup returns a pointer. */
1316 deprecated_set_value_type (argvec[0],
1317 lookup_pointer_type (lookup_function_type (value_type (argvec[0]))));
1318 argvec[0]
1319 = call_function_by_hand (argvec[0], nargs + 2, argvec + 1);
1320 }
1321
1322 ret = call_function_by_hand (argvec[0], nargs + 2, argvec + 1);
1323 return ret;
1324 }
1325 break;
1326
1327 case OP_FUNCALL:
1328 (*pos) += 2;
1329 op = exp->elts[*pos].opcode;
1330 nargs = longest_to_int (exp->elts[pc + 1].longconst);
1331 /* Allocate arg vector, including space for the function to be
1332 called in argvec[0], a potential `this', and a terminating NULL. */
1333 argvec = (struct value **)
1334 alloca (sizeof (struct value *) * (nargs + 3));
1335 if (op == STRUCTOP_MEMBER || op == STRUCTOP_MPTR)
1336 {
1337 /* First, evaluate the structure into arg2. */
1338 pc2 = (*pos)++;
1339
1340 if (noside == EVAL_SKIP)
1341 goto nosideret;
1342
1343 if (op == STRUCTOP_MEMBER)
1344 {
1345 arg2 = evaluate_subexp_for_address (exp, pos, noside);
1346 }
1347 else
1348 {
1349 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1350 }
1351
1352 /* If the function is a virtual function, then the
1353 aggregate value (providing the structure) plays
1354 its part by providing the vtable. Otherwise,
1355 it is just along for the ride: call the function
1356 directly. */
1357
1358 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1359
1360 type = check_typedef (value_type (arg1));
1361 if (TYPE_CODE (type) == TYPE_CODE_METHODPTR)
1362 {
1363 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1364 arg1 = value_zero (TYPE_TARGET_TYPE (type), not_lval);
1365 else
1366 arg1 = cplus_method_ptr_to_value (&arg2, arg1);
1367
1368 /* Now, say which argument to start evaluating from. */
1369 nargs++;
1370 tem = 2;
1371 argvec[1] = arg2;
1372 }
1373 else if (TYPE_CODE (type) == TYPE_CODE_MEMBERPTR)
1374 {
1375 struct type *type_ptr
1376 = lookup_pointer_type (TYPE_DOMAIN_TYPE (type));
1377 struct type *target_type_ptr
1378 = lookup_pointer_type (TYPE_TARGET_TYPE (type));
1379
1380 /* Now, convert these values to an address. */
1381 arg2 = value_cast (type_ptr, arg2);
1382
1383 mem_offset = value_as_long (arg1);
1384
1385 arg1 = value_from_pointer (target_type_ptr,
1386 value_as_long (arg2) + mem_offset);
1387 arg1 = value_ind (arg1);
1388 tem = 1;
1389 }
1390 else
1391 error (_("Non-pointer-to-member value used in pointer-to-member "
1392 "construct"));
1393 }
1394 else if (op == STRUCTOP_STRUCT || op == STRUCTOP_PTR)
1395 {
1396 /* Hair for method invocations. */
1397 int tem2;
1398
1399 nargs++;
1400 /* First, evaluate the structure into arg2. */
1401 pc2 = (*pos)++;
1402 tem2 = longest_to_int (exp->elts[pc2 + 1].longconst);
1403 *pos += 3 + BYTES_TO_EXP_ELEM (tem2 + 1);
1404 if (noside == EVAL_SKIP)
1405 goto nosideret;
1406
1407 if (op == STRUCTOP_STRUCT)
1408 {
1409 /* If v is a variable in a register, and the user types
1410 v.method (), this will produce an error, because v has
1411 no address.
1412
1413 A possible way around this would be to allocate a
1414 copy of the variable on the stack, copy in the
1415 contents, call the function, and copy out the
1416 contents. I.e. convert this from call by reference
1417 to call by copy-return (or whatever it's called).
1418 However, this does not work because it is not the
1419 same: the method being called could stash a copy of
1420 the address, and then future uses through that address
1421 (after the method returns) would be expected to
1422 use the variable itself, not some copy of it. */
1423 arg2 = evaluate_subexp_for_address (exp, pos, noside);
1424 }
1425 else
1426 {
1427 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1428
1429 /* Check to see if the operator '->' has been
1430 overloaded. If the operator has been overloaded
1431 replace arg2 with the value returned by the custom
1432 operator and continue evaluation. */
1433 while (unop_user_defined_p (op, arg2))
1434 {
1435 volatile struct gdb_exception except;
1436 struct value *value = NULL;
1437 TRY_CATCH (except, RETURN_MASK_ERROR)
1438 {
1439 value = value_x_unop (arg2, op, noside);
1440 }
1441
1442 if (except.reason < 0)
1443 {
1444 if (except.error == NOT_FOUND_ERROR)
1445 break;
1446 else
1447 throw_exception (except);
1448 }
1449 arg2 = value;
1450 }
1451 }
1452 /* Now, say which argument to start evaluating from. */
1453 tem = 2;
1454 }
1455 else if (op == OP_SCOPE
1456 && overload_resolution
1457 && (exp->language_defn->la_language == language_cplus))
1458 {
1459 /* Unpack it locally so we can properly handle overload
1460 resolution. */
1461 char *name;
1462 int local_tem;
1463
1464 pc2 = (*pos)++;
1465 local_tem = longest_to_int (exp->elts[pc2 + 2].longconst);
1466 (*pos) += 4 + BYTES_TO_EXP_ELEM (local_tem + 1);
1467 type = exp->elts[pc2 + 1].type;
1468 name = &exp->elts[pc2 + 3].string;
1469
1470 function = NULL;
1471 function_name = NULL;
1472 if (TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
1473 {
1474 function = cp_lookup_symbol_namespace (TYPE_TAG_NAME (type),
1475 name,
1476 get_selected_block (0),
1477 VAR_DOMAIN);
1478 if (function == NULL)
1479 error (_("No symbol \"%s\" in namespace \"%s\"."),
1480 name, TYPE_TAG_NAME (type));
1481
1482 tem = 1;
1483 /* arg2 is left as NULL on purpose. */
1484 }
1485 else
1486 {
1487 gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
1488 || TYPE_CODE (type) == TYPE_CODE_UNION);
1489 function_name = name;
1490
1491 /* We need a properly typed value for method lookup. For
1492 static methods arg2 is otherwise unused. */
1493 arg2 = value_zero (type, lval_memory);
1494 ++nargs;
1495 tem = 2;
1496 }
1497 }
1498 else if (op == OP_ADL_FUNC)
1499 {
1500 /* Save the function position and move pos so that the arguments
1501 can be evaluated. */
1502 int func_name_len;
1503
1504 save_pos1 = *pos;
1505 tem = 1;
1506
1507 func_name_len = longest_to_int (exp->elts[save_pos1 + 3].longconst);
1508 (*pos) += 6 + BYTES_TO_EXP_ELEM (func_name_len + 1);
1509 }
1510 else
1511 {
1512 /* Non-method function call. */
1513 save_pos1 = *pos;
1514 tem = 1;
1515
1516 /* If this is a C++ function wait until overload resolution. */
1517 if (op == OP_VAR_VALUE
1518 && overload_resolution
1519 && (exp->language_defn->la_language == language_cplus))
1520 {
1521 (*pos) += 4; /* Skip the evaluation of the symbol. */
1522 argvec[0] = NULL;
1523 }
1524 else
1525 {
1526 argvec[0] = evaluate_subexp_with_coercion (exp, pos, noside);
1527 type = value_type (argvec[0]);
1528 if (type && TYPE_CODE (type) == TYPE_CODE_PTR)
1529 type = TYPE_TARGET_TYPE (type);
1530 if (type && TYPE_CODE (type) == TYPE_CODE_FUNC)
1531 {
1532 for (; tem <= nargs && tem <= TYPE_NFIELDS (type); tem++)
1533 {
1534 argvec[tem] = evaluate_subexp (TYPE_FIELD_TYPE (type,
1535 tem - 1),
1536 exp, pos, noside);
1537 }
1538 }
1539 }
1540 }
1541
1542 /* Evaluate arguments (if not already done, e.g., namespace::func()
1543 and overload-resolution is off). */
1544 for (; tem <= nargs; tem++)
1545 {
1546 /* Ensure that array expressions are coerced into pointer
1547 objects. */
1548 argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
1549 }
1550
1551 /* Signal end of arglist. */
1552 argvec[tem] = 0;
1553
1554 if (op == OP_ADL_FUNC)
1555 {
1556 struct symbol *symp;
1557 char *func_name;
1558 int name_len;
1559 int string_pc = save_pos1 + 3;
1560
1561 /* Extract the function name. */
1562 name_len = longest_to_int (exp->elts[string_pc].longconst);
1563 func_name = (char *) alloca (name_len + 1);
1564 strcpy (func_name, &exp->elts[string_pc + 1].string);
1565
1566 find_overload_match (&argvec[1], nargs, func_name,
1567 NON_METHOD, /* not method */
1568 NULL, NULL, /* pass NULL symbol since
1569 symbol is unknown */
1570 NULL, &symp, NULL, 0);
1571
1572 /* Now fix the expression being evaluated. */
1573 exp->elts[save_pos1 + 2].symbol = symp;
1574 argvec[0] = evaluate_subexp_with_coercion (exp, &save_pos1, noside);
1575 }
1576
1577 if (op == STRUCTOP_STRUCT || op == STRUCTOP_PTR
1578 || (op == OP_SCOPE && function_name != NULL))
1579 {
1580 int static_memfuncp;
1581 char *tstr;
1582
1583 /* Method invocation: stuff "this" as first parameter.
1584 If the method turns out to be static we undo this below. */
1585 argvec[1] = arg2;
1586
1587 if (op != OP_SCOPE)
1588 {
1589 /* Name of method from expression. */
1590 tstr = &exp->elts[pc2 + 2].string;
1591 }
1592 else
1593 tstr = function_name;
1594
1595 if (overload_resolution && (exp->language_defn->la_language
1596 == language_cplus))
1597 {
1598 /* Language is C++, do some overload resolution before
1599 evaluation. */
1600 struct value *valp = NULL;
1601
1602 (void) find_overload_match (&argvec[1], nargs, tstr,
1603 METHOD, /* method */
1604 &arg2, /* the object */
1605 NULL, &valp, NULL,
1606 &static_memfuncp, 0);
1607
1608 if (op == OP_SCOPE && !static_memfuncp)
1609 {
1610 /* For the time being, we don't handle this. */
1611 error (_("Call to overloaded function %s requires "
1612 "`this' pointer"),
1613 function_name);
1614 }
1615 argvec[1] = arg2; /* the ``this'' pointer */
1616 argvec[0] = valp; /* Use the method found after overload
1617 resolution. */
1618 }
1619 else
1620 /* Non-C++ case -- or no overload resolution. */
1621 {
1622 struct value *temp = arg2;
1623
1624 argvec[0] = value_struct_elt (&temp, argvec + 1, tstr,
1625 &static_memfuncp,
1626 op == STRUCTOP_STRUCT
1627 ? "structure" : "structure pointer");
1628 /* value_struct_elt updates temp with the correct value
1629 of the ``this'' pointer if necessary, so modify argvec[1] to
1630 reflect any ``this'' changes. */
1631 arg2
1632 = value_from_longest (lookup_pointer_type(value_type (temp)),
1633 value_address (temp)
1634 + value_embedded_offset (temp));
1635 argvec[1] = arg2; /* the ``this'' pointer */
1636 }
1637
1638 /* Take out `this' if needed. */
1639 if (static_memfuncp)
1640 {
1641 argvec[1] = argvec[0];
1642 nargs--;
1643 argvec++;
1644 }
1645 }
1646 else if (op == STRUCTOP_MEMBER || op == STRUCTOP_MPTR)
1647 {
1648 /* Pointer to member. argvec[1] is already set up. */
1649 argvec[0] = arg1;
1650 }
1651 else if (op == OP_VAR_VALUE || (op == OP_SCOPE && function != NULL))
1652 {
1653 /* Non-member function being called. */
1654 /* fn: This can only be done for C++ functions. A C-style function
1655 in a C++ program, for instance, does not have the fields that
1656 are expected here. */
1657
1658 if (overload_resolution && (exp->language_defn->la_language
1659 == language_cplus))
1660 {
1661 /* Language is C++, do some overload resolution before
1662 evaluation. */
1663 struct symbol *symp;
1664 int no_adl = 0;
1665
1666 /* If a scope has been specified disable ADL. */
1667 if (op == OP_SCOPE)
1668 no_adl = 1;
1669
1670 if (op == OP_VAR_VALUE)
1671 function = exp->elts[save_pos1+2].symbol;
1672
1673 (void) find_overload_match (&argvec[1], nargs,
1674 NULL, /* no need for name */
1675 NON_METHOD, /* not method */
1676 NULL, function, /* the function */
1677 NULL, &symp, NULL, no_adl);
1678
1679 if (op == OP_VAR_VALUE)
1680 {
1681 /* Now fix the expression being evaluated. */
1682 exp->elts[save_pos1+2].symbol = symp;
1683 argvec[0] = evaluate_subexp_with_coercion (exp, &save_pos1,
1684 noside);
1685 }
1686 else
1687 argvec[0] = value_of_variable (symp, get_selected_block (0));
1688 }
1689 else
1690 {
1691 /* Not C++, or no overload resolution allowed. */
1692 /* Nothing to be done; argvec already correctly set up. */
1693 }
1694 }
1695 else
1696 {
1697 /* It is probably a C-style function. */
1698 /* Nothing to be done; argvec already correctly set up. */
1699 }
1700
1701 do_call_it:
1702
1703 if (noside == EVAL_SKIP)
1704 goto nosideret;
1705 if (argvec[0] == NULL)
1706 error (_("Cannot evaluate function -- may be inlined"));
1707 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1708 {
1709 /* If the return type doesn't look like a function type, call an
1710 error. This can happen if somebody tries to turn a variable into
1711 a function call. This is here because people often want to
1712 call, eg, strcmp, which gdb doesn't know is a function. If
1713 gdb isn't asked for it's opinion (ie. through "whatis"),
1714 it won't offer it. */
1715
1716 struct type *ftype = value_type (argvec[0]);
1717
1718 if (TYPE_CODE (ftype) == TYPE_CODE_INTERNAL_FUNCTION)
1719 {
1720 /* We don't know anything about what the internal
1721 function might return, but we have to return
1722 something. */
1723 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
1724 not_lval);
1725 }
1726 else if (TYPE_GNU_IFUNC (ftype))
1727 return allocate_value (TYPE_TARGET_TYPE (TYPE_TARGET_TYPE (ftype)));
1728 else if (TYPE_TARGET_TYPE (ftype))
1729 return allocate_value (TYPE_TARGET_TYPE (ftype));
1730 else
1731 error (_("Expression of type other than "
1732 "\"Function returning ...\" used as function"));
1733 }
1734 switch (TYPE_CODE (value_type (argvec[0])))
1735 {
1736 case TYPE_CODE_INTERNAL_FUNCTION:
1737 return call_internal_function (exp->gdbarch, exp->language_defn,
1738 argvec[0], nargs, argvec + 1);
1739 case TYPE_CODE_XMETHOD:
1740 return call_xmethod (argvec[0], nargs, argvec + 1);
1741 default:
1742 return call_function_by_hand (argvec[0], nargs, argvec + 1);
1743 }
1744 /* pai: FIXME save value from call_function_by_hand, then adjust
1745 pc by adjust_fn_pc if +ve. */
1746
1747 case OP_F77_UNDETERMINED_ARGLIST:
1748
1749 /* Remember that in F77, functions, substring ops and
1750 array subscript operations cannot be disambiguated
1751 at parse time. We have made all array subscript operations,
1752 substring operations as well as function calls come here
1753 and we now have to discover what the heck this thing actually was.
1754 If it is a function, we process just as if we got an OP_FUNCALL. */
1755
1756 nargs = longest_to_int (exp->elts[pc + 1].longconst);
1757 (*pos) += 2;
1758
1759 /* First determine the type code we are dealing with. */
1760 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1761 type = check_typedef (value_type (arg1));
1762 code = TYPE_CODE (type);
1763
1764 if (code == TYPE_CODE_PTR)
1765 {
1766 /* Fortran always passes variable to subroutines as pointer.
1767 So we need to look into its target type to see if it is
1768 array, string or function. If it is, we need to switch
1769 to the target value the original one points to. */
1770 struct type *target_type = check_typedef (TYPE_TARGET_TYPE (type));
1771
1772 if (TYPE_CODE (target_type) == TYPE_CODE_ARRAY
1773 || TYPE_CODE (target_type) == TYPE_CODE_STRING
1774 || TYPE_CODE (target_type) == TYPE_CODE_FUNC)
1775 {
1776 arg1 = value_ind (arg1);
1777 type = check_typedef (value_type (arg1));
1778 code = TYPE_CODE (type);
1779 }
1780 }
1781
1782 switch (code)
1783 {
1784 case TYPE_CODE_ARRAY:
1785 if (exp->elts[*pos].opcode == OP_F90_RANGE)
1786 return value_f90_subarray (arg1, exp, pos, noside);
1787 else
1788 goto multi_f77_subscript;
1789
1790 case TYPE_CODE_STRING:
1791 if (exp->elts[*pos].opcode == OP_F90_RANGE)
1792 return value_f90_subarray (arg1, exp, pos, noside);
1793 else
1794 {
1795 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
1796 return value_subscript (arg1, value_as_long (arg2));
1797 }
1798
1799 case TYPE_CODE_PTR:
1800 case TYPE_CODE_FUNC:
1801 /* It's a function call. */
1802 /* Allocate arg vector, including space for the function to be
1803 called in argvec[0] and a terminating NULL. */
1804 argvec = (struct value **)
1805 alloca (sizeof (struct value *) * (nargs + 2));
1806 argvec[0] = arg1;
1807 tem = 1;
1808 for (; tem <= nargs; tem++)
1809 argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
1810 argvec[tem] = 0; /* signal end of arglist */
1811 goto do_call_it;
1812
1813 default:
1814 error (_("Cannot perform substring on this type"));
1815 }
1816
1817 case OP_COMPLEX:
1818 /* We have a complex number, There should be 2 floating
1819 point numbers that compose it. */
1820 (*pos) += 2;
1821 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1822 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1823
1824 return value_literal_complex (arg1, arg2, exp->elts[pc + 1].type);
1825
1826 case STRUCTOP_STRUCT:
1827 tem = longest_to_int (exp->elts[pc + 1].longconst);
1828 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
1829 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1830 if (noside == EVAL_SKIP)
1831 goto nosideret;
1832 arg3 = value_struct_elt (&arg1, NULL, &exp->elts[pc + 2].string,
1833 NULL, "structure");
1834 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1835 arg3 = value_zero (value_type (arg3), not_lval);
1836 return arg3;
1837
1838 case STRUCTOP_PTR:
1839 tem = longest_to_int (exp->elts[pc + 1].longconst);
1840 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
1841 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1842 if (noside == EVAL_SKIP)
1843 goto nosideret;
1844
1845 /* Check to see if operator '->' has been overloaded. If so replace
1846 arg1 with the value returned by evaluating operator->(). */
1847 while (unop_user_defined_p (op, arg1))
1848 {
1849 volatile struct gdb_exception except;
1850 struct value *value = NULL;
1851 TRY_CATCH (except, RETURN_MASK_ERROR)
1852 {
1853 value = value_x_unop (arg1, op, noside);
1854 }
1855
1856 if (except.reason < 0)
1857 {
1858 if (except.error == NOT_FOUND_ERROR)
1859 break;
1860 else
1861 throw_exception (except);
1862 }
1863 arg1 = value;
1864 }
1865
1866 /* JYG: if print object is on we need to replace the base type
1867 with rtti type in order to continue on with successful
1868 lookup of member / method only available in the rtti type. */
1869 {
1870 struct type *type = value_type (arg1);
1871 struct type *real_type;
1872 int full, top, using_enc;
1873 struct value_print_options opts;
1874
1875 get_user_print_options (&opts);
1876 if (opts.objectprint && TYPE_TARGET_TYPE(type)
1877 && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_CLASS))
1878 {
1879 real_type = value_rtti_indirect_type (arg1, &full, &top,
1880 &using_enc);
1881 if (real_type)
1882 arg1 = value_cast (real_type, arg1);
1883 }
1884 }
1885
1886 arg3 = value_struct_elt (&arg1, NULL, &exp->elts[pc + 2].string,
1887 NULL, "structure pointer");
1888 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1889 arg3 = value_zero (value_type (arg3), not_lval);
1890 return arg3;
1891
1892 case STRUCTOP_MEMBER:
1893 case STRUCTOP_MPTR:
1894 if (op == STRUCTOP_MEMBER)
1895 arg1 = evaluate_subexp_for_address (exp, pos, noside);
1896 else
1897 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1898
1899 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1900
1901 if (noside == EVAL_SKIP)
1902 goto nosideret;
1903
1904 type = check_typedef (value_type (arg2));
1905 switch (TYPE_CODE (type))
1906 {
1907 case TYPE_CODE_METHODPTR:
1908 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1909 return value_zero (TYPE_TARGET_TYPE (type), not_lval);
1910 else
1911 {
1912 arg2 = cplus_method_ptr_to_value (&arg1, arg2);
1913 gdb_assert (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR);
1914 return value_ind (arg2);
1915 }
1916
1917 case TYPE_CODE_MEMBERPTR:
1918 /* Now, convert these values to an address. */
1919 arg1 = value_cast_pointers (lookup_pointer_type (TYPE_DOMAIN_TYPE (type)),
1920 arg1, 1);
1921
1922 mem_offset = value_as_long (arg2);
1923
1924 arg3 = value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
1925 value_as_long (arg1) + mem_offset);
1926 return value_ind (arg3);
1927
1928 default:
1929 error (_("non-pointer-to-member value used "
1930 "in pointer-to-member construct"));
1931 }
1932
1933 case TYPE_INSTANCE:
1934 nargs = longest_to_int (exp->elts[pc + 1].longconst);
1935 arg_types = (struct type **) alloca (nargs * sizeof (struct type *));
1936 for (ix = 0; ix < nargs; ++ix)
1937 arg_types[ix] = exp->elts[pc + 1 + ix + 1].type;
1938
1939 expect_type = make_params (nargs, arg_types);
1940 *(pos) += 3 + nargs;
1941 arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
1942 xfree (TYPE_FIELDS (expect_type));
1943 xfree (TYPE_MAIN_TYPE (expect_type));
1944 xfree (expect_type);
1945 return arg1;
1946
1947 case BINOP_CONCAT:
1948 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
1949 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
1950 if (noside == EVAL_SKIP)
1951 goto nosideret;
1952 if (binop_user_defined_p (op, arg1, arg2))
1953 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1954 else
1955 return value_concat (arg1, arg2);
1956
1957 case BINOP_ASSIGN:
1958 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1959 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
1960
1961 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
1962 return arg1;
1963 if (binop_user_defined_p (op, arg1, arg2))
1964 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1965 else
1966 return value_assign (arg1, arg2);
1967
1968 case BINOP_ASSIGN_MODIFY:
1969 (*pos) += 2;
1970 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1971 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
1972 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
1973 return arg1;
1974 op = exp->elts[pc + 1].opcode;
1975 if (binop_user_defined_p (op, arg1, arg2))
1976 return value_x_binop (arg1, arg2, BINOP_ASSIGN_MODIFY, op, noside);
1977 else if (op == BINOP_ADD && ptrmath_type_p (exp->language_defn,
1978 value_type (arg1))
1979 && is_integral_type (value_type (arg2)))
1980 arg2 = value_ptradd (arg1, value_as_long (arg2));
1981 else if (op == BINOP_SUB && ptrmath_type_p (exp->language_defn,
1982 value_type (arg1))
1983 && is_integral_type (value_type (arg2)))
1984 arg2 = value_ptradd (arg1, - value_as_long (arg2));
1985 else
1986 {
1987 struct value *tmp = arg1;
1988
1989 /* For shift and integer exponentiation operations,
1990 only promote the first argument. */
1991 if ((op == BINOP_LSH || op == BINOP_RSH || op == BINOP_EXP)
1992 && is_integral_type (value_type (arg2)))
1993 unop_promote (exp->language_defn, exp->gdbarch, &tmp);
1994 else
1995 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
1996
1997 arg2 = value_binop (tmp, arg2, op);
1998 }
1999 return value_assign (arg1, arg2);
2000
2001 case BINOP_ADD:
2002 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
2003 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
2004 if (noside == EVAL_SKIP)
2005 goto nosideret;
2006 if (binop_user_defined_p (op, arg1, arg2))
2007 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2008 else if (ptrmath_type_p (exp->language_defn, value_type (arg1))
2009 && is_integral_type (value_type (arg2)))
2010 return value_ptradd (arg1, value_as_long (arg2));
2011 else if (ptrmath_type_p (exp->language_defn, value_type (arg2))
2012 && is_integral_type (value_type (arg1)))
2013 return value_ptradd (arg2, value_as_long (arg1));
2014 else
2015 {
2016 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2017 return value_binop (arg1, arg2, BINOP_ADD);
2018 }
2019
2020 case BINOP_SUB:
2021 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
2022 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
2023 if (noside == EVAL_SKIP)
2024 goto nosideret;
2025 if (binop_user_defined_p (op, arg1, arg2))
2026 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2027 else if (ptrmath_type_p (exp->language_defn, value_type (arg1))
2028 && ptrmath_type_p (exp->language_defn, value_type (arg2)))
2029 {
2030 /* FIXME -- should be ptrdiff_t */
2031 type = builtin_type (exp->gdbarch)->builtin_long;
2032 return value_from_longest (type, value_ptrdiff (arg1, arg2));
2033 }
2034 else if (ptrmath_type_p (exp->language_defn, value_type (arg1))
2035 && is_integral_type (value_type (arg2)))
2036 return value_ptradd (arg1, - value_as_long (arg2));
2037 else
2038 {
2039 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2040 return value_binop (arg1, arg2, BINOP_SUB);
2041 }
2042
2043 case BINOP_EXP:
2044 case BINOP_MUL:
2045 case BINOP_DIV:
2046 case BINOP_INTDIV:
2047 case BINOP_REM:
2048 case BINOP_MOD:
2049 case BINOP_LSH:
2050 case BINOP_RSH:
2051 case BINOP_BITWISE_AND:
2052 case BINOP_BITWISE_IOR:
2053 case BINOP_BITWISE_XOR:
2054 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2055 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2056 if (noside == EVAL_SKIP)
2057 goto nosideret;
2058 if (binop_user_defined_p (op, arg1, arg2))
2059 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2060 else
2061 {
2062 /* If EVAL_AVOID_SIDE_EFFECTS and we're dividing by zero,
2063 fudge arg2 to avoid division-by-zero, the caller is
2064 (theoretically) only looking for the type of the result. */
2065 if (noside == EVAL_AVOID_SIDE_EFFECTS
2066 /* ??? Do we really want to test for BINOP_MOD here?
2067 The implementation of value_binop gives it a well-defined
2068 value. */
2069 && (op == BINOP_DIV
2070 || op == BINOP_INTDIV
2071 || op == BINOP_REM
2072 || op == BINOP_MOD)
2073 && value_logical_not (arg2))
2074 {
2075 struct value *v_one, *retval;
2076
2077 v_one = value_one (value_type (arg2));
2078 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &v_one);
2079 retval = value_binop (arg1, v_one, op);
2080 return retval;
2081 }
2082 else
2083 {
2084 /* For shift and integer exponentiation operations,
2085 only promote the first argument. */
2086 if ((op == BINOP_LSH || op == BINOP_RSH || op == BINOP_EXP)
2087 && is_integral_type (value_type (arg2)))
2088 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
2089 else
2090 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2091
2092 return value_binop (arg1, arg2, op);
2093 }
2094 }
2095
2096 case BINOP_SUBSCRIPT:
2097 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2098 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2099 if (noside == EVAL_SKIP)
2100 goto nosideret;
2101 if (binop_user_defined_p (op, arg1, arg2))
2102 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2103 else
2104 {
2105 /* If the user attempts to subscript something that is not an
2106 array or pointer type (like a plain int variable for example),
2107 then report this as an error. */
2108
2109 arg1 = coerce_ref (arg1);
2110 type = check_typedef (value_type (arg1));
2111 if (TYPE_CODE (type) != TYPE_CODE_ARRAY
2112 && TYPE_CODE (type) != TYPE_CODE_PTR)
2113 {
2114 if (TYPE_NAME (type))
2115 error (_("cannot subscript something of type `%s'"),
2116 TYPE_NAME (type));
2117 else
2118 error (_("cannot subscript requested type"));
2119 }
2120
2121 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2122 return value_zero (TYPE_TARGET_TYPE (type), VALUE_LVAL (arg1));
2123 else
2124 return value_subscript (arg1, value_as_long (arg2));
2125 }
2126 case MULTI_SUBSCRIPT:
2127 (*pos) += 2;
2128 nargs = longest_to_int (exp->elts[pc + 1].longconst);
2129 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
2130 while (nargs-- > 0)
2131 {
2132 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
2133 /* FIXME: EVAL_SKIP handling may not be correct. */
2134 if (noside == EVAL_SKIP)
2135 {
2136 if (nargs > 0)
2137 {
2138 continue;
2139 }
2140 else
2141 {
2142 goto nosideret;
2143 }
2144 }
2145 /* FIXME: EVAL_AVOID_SIDE_EFFECTS handling may not be correct. */
2146 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2147 {
2148 /* If the user attempts to subscript something that has no target
2149 type (like a plain int variable for example), then report this
2150 as an error. */
2151
2152 type = TYPE_TARGET_TYPE (check_typedef (value_type (arg1)));
2153 if (type != NULL)
2154 {
2155 arg1 = value_zero (type, VALUE_LVAL (arg1));
2156 noside = EVAL_SKIP;
2157 continue;
2158 }
2159 else
2160 {
2161 error (_("cannot subscript something of type `%s'"),
2162 TYPE_NAME (value_type (arg1)));
2163 }
2164 }
2165
2166 if (binop_user_defined_p (op, arg1, arg2))
2167 {
2168 arg1 = value_x_binop (arg1, arg2, op, OP_NULL, noside);
2169 }
2170 else
2171 {
2172 arg1 = coerce_ref (arg1);
2173 type = check_typedef (value_type (arg1));
2174
2175 switch (TYPE_CODE (type))
2176 {
2177 case TYPE_CODE_PTR:
2178 case TYPE_CODE_ARRAY:
2179 case TYPE_CODE_STRING:
2180 arg1 = value_subscript (arg1, value_as_long (arg2));
2181 break;
2182
2183 default:
2184 if (TYPE_NAME (type))
2185 error (_("cannot subscript something of type `%s'"),
2186 TYPE_NAME (type));
2187 else
2188 error (_("cannot subscript requested type"));
2189 }
2190 }
2191 }
2192 return (arg1);
2193
2194 multi_f77_subscript:
2195 {
2196 LONGEST subscript_array[MAX_FORTRAN_DIMS];
2197 int ndimensions = 1, i;
2198 struct value *array = arg1;
2199
2200 if (nargs > MAX_FORTRAN_DIMS)
2201 error (_("Too many subscripts for F77 (%d Max)"), MAX_FORTRAN_DIMS);
2202
2203 ndimensions = calc_f77_array_dims (type);
2204
2205 if (nargs != ndimensions)
2206 error (_("Wrong number of subscripts"));
2207
2208 gdb_assert (nargs > 0);
2209
2210 /* Now that we know we have a legal array subscript expression
2211 let us actually find out where this element exists in the array. */
2212
2213 /* Take array indices left to right. */
2214 for (i = 0; i < nargs; i++)
2215 {
2216 /* Evaluate each subscript; it must be a legal integer in F77. */
2217 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
2218
2219 /* Fill in the subscript array. */
2220
2221 subscript_array[i] = value_as_long (arg2);
2222 }
2223
2224 /* Internal type of array is arranged right to left. */
2225 for (i = nargs; i > 0; i--)
2226 {
2227 struct type *array_type = check_typedef (value_type (array));
2228 LONGEST index = subscript_array[i - 1];
2229
2230 array = value_subscripted_rvalue (array, index,
2231 f77_get_lowerbound (array_type));
2232 }
2233
2234 return array;
2235 }
2236
2237 case BINOP_LOGICAL_AND:
2238 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2239 if (noside == EVAL_SKIP)
2240 {
2241 evaluate_subexp (NULL_TYPE, exp, pos, noside);
2242 goto nosideret;
2243 }
2244
2245 oldpos = *pos;
2246 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2247 *pos = oldpos;
2248
2249 if (binop_user_defined_p (op, arg1, arg2))
2250 {
2251 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2252 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2253 }
2254 else
2255 {
2256 tem = value_logical_not (arg1);
2257 arg2 = evaluate_subexp (NULL_TYPE, exp, pos,
2258 (tem ? EVAL_SKIP : noside));
2259 type = language_bool_type (exp->language_defn, exp->gdbarch);
2260 return value_from_longest (type,
2261 (LONGEST) (!tem && !value_logical_not (arg2)));
2262 }
2263
2264 case BINOP_LOGICAL_OR:
2265 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2266 if (noside == EVAL_SKIP)
2267 {
2268 evaluate_subexp (NULL_TYPE, exp, pos, noside);
2269 goto nosideret;
2270 }
2271
2272 oldpos = *pos;
2273 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2274 *pos = oldpos;
2275
2276 if (binop_user_defined_p (op, arg1, arg2))
2277 {
2278 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2279 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2280 }
2281 else
2282 {
2283 tem = value_logical_not (arg1);
2284 arg2 = evaluate_subexp (NULL_TYPE, exp, pos,
2285 (!tem ? EVAL_SKIP : noside));
2286 type = language_bool_type (exp->language_defn, exp->gdbarch);
2287 return value_from_longest (type,
2288 (LONGEST) (!tem || !value_logical_not (arg2)));
2289 }
2290
2291 case BINOP_EQUAL:
2292 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2293 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2294 if (noside == EVAL_SKIP)
2295 goto nosideret;
2296 if (binop_user_defined_p (op, arg1, arg2))
2297 {
2298 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2299 }
2300 else
2301 {
2302 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2303 tem = value_equal (arg1, arg2);
2304 type = language_bool_type (exp->language_defn, exp->gdbarch);
2305 return value_from_longest (type, (LONGEST) tem);
2306 }
2307
2308 case BINOP_NOTEQUAL:
2309 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2310 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2311 if (noside == EVAL_SKIP)
2312 goto nosideret;
2313 if (binop_user_defined_p (op, arg1, arg2))
2314 {
2315 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2316 }
2317 else
2318 {
2319 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2320 tem = value_equal (arg1, arg2);
2321 type = language_bool_type (exp->language_defn, exp->gdbarch);
2322 return value_from_longest (type, (LONGEST) ! tem);
2323 }
2324
2325 case BINOP_LESS:
2326 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2327 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2328 if (noside == EVAL_SKIP)
2329 goto nosideret;
2330 if (binop_user_defined_p (op, arg1, arg2))
2331 {
2332 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2333 }
2334 else
2335 {
2336 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2337 tem = value_less (arg1, arg2);
2338 type = language_bool_type (exp->language_defn, exp->gdbarch);
2339 return value_from_longest (type, (LONGEST) tem);
2340 }
2341
2342 case BINOP_GTR:
2343 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2344 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2345 if (noside == EVAL_SKIP)
2346 goto nosideret;
2347 if (binop_user_defined_p (op, arg1, arg2))
2348 {
2349 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2350 }
2351 else
2352 {
2353 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2354 tem = value_less (arg2, arg1);
2355 type = language_bool_type (exp->language_defn, exp->gdbarch);
2356 return value_from_longest (type, (LONGEST) tem);
2357 }
2358
2359 case BINOP_GEQ:
2360 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2361 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2362 if (noside == EVAL_SKIP)
2363 goto nosideret;
2364 if (binop_user_defined_p (op, arg1, arg2))
2365 {
2366 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2367 }
2368 else
2369 {
2370 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2371 tem = value_less (arg2, arg1) || value_equal (arg1, arg2);
2372 type = language_bool_type (exp->language_defn, exp->gdbarch);
2373 return value_from_longest (type, (LONGEST) tem);
2374 }
2375
2376 case BINOP_LEQ:
2377 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2378 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
2379 if (noside == EVAL_SKIP)
2380 goto nosideret;
2381 if (binop_user_defined_p (op, arg1, arg2))
2382 {
2383 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
2384 }
2385 else
2386 {
2387 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
2388 tem = value_less (arg1, arg2) || value_equal (arg1, arg2);
2389 type = language_bool_type (exp->language_defn, exp->gdbarch);
2390 return value_from_longest (type, (LONGEST) tem);
2391 }
2392
2393 case BINOP_REPEAT:
2394 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2395 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2396 if (noside == EVAL_SKIP)
2397 goto nosideret;
2398 type = check_typedef (value_type (arg2));
2399 if (TYPE_CODE (type) != TYPE_CODE_INT)
2400 error (_("Non-integral right operand for \"@\" operator."));
2401 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2402 {
2403 return allocate_repeat_value (value_type (arg1),
2404 longest_to_int (value_as_long (arg2)));
2405 }
2406 else
2407 return value_repeat (arg1, longest_to_int (value_as_long (arg2)));
2408
2409 case BINOP_COMMA:
2410 evaluate_subexp (NULL_TYPE, exp, pos, noside);
2411 return evaluate_subexp (NULL_TYPE, exp, pos, noside);
2412
2413 case UNOP_PLUS:
2414 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2415 if (noside == EVAL_SKIP)
2416 goto nosideret;
2417 if (unop_user_defined_p (op, arg1))
2418 return value_x_unop (arg1, op, noside);
2419 else
2420 {
2421 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
2422 return value_pos (arg1);
2423 }
2424
2425 case UNOP_NEG:
2426 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2427 if (noside == EVAL_SKIP)
2428 goto nosideret;
2429 if (unop_user_defined_p (op, arg1))
2430 return value_x_unop (arg1, op, noside);
2431 else
2432 {
2433 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
2434 return value_neg (arg1);
2435 }
2436
2437 case UNOP_COMPLEMENT:
2438 /* C++: check for and handle destructor names. */
2439 op = exp->elts[*pos].opcode;
2440
2441 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2442 if (noside == EVAL_SKIP)
2443 goto nosideret;
2444 if (unop_user_defined_p (UNOP_COMPLEMENT, arg1))
2445 return value_x_unop (arg1, UNOP_COMPLEMENT, noside);
2446 else
2447 {
2448 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
2449 return value_complement (arg1);
2450 }
2451
2452 case UNOP_LOGICAL_NOT:
2453 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2454 if (noside == EVAL_SKIP)
2455 goto nosideret;
2456 if (unop_user_defined_p (op, arg1))
2457 return value_x_unop (arg1, op, noside);
2458 else
2459 {
2460 type = language_bool_type (exp->language_defn, exp->gdbarch);
2461 return value_from_longest (type, (LONGEST) value_logical_not (arg1));
2462 }
2463
2464 case UNOP_IND:
2465 if (expect_type && TYPE_CODE (expect_type) == TYPE_CODE_PTR)
2466 expect_type = TYPE_TARGET_TYPE (check_typedef (expect_type));
2467 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2468 type = check_typedef (value_type (arg1));
2469 if (TYPE_CODE (type) == TYPE_CODE_METHODPTR
2470 || TYPE_CODE (type) == TYPE_CODE_MEMBERPTR)
2471 error (_("Attempt to dereference pointer "
2472 "to member without an object"));
2473 if (noside == EVAL_SKIP)
2474 goto nosideret;
2475 if (unop_user_defined_p (op, arg1))
2476 return value_x_unop (arg1, op, noside);
2477 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2478 {
2479 type = check_typedef (value_type (arg1));
2480 if (TYPE_CODE (type) == TYPE_CODE_PTR
2481 || TYPE_CODE (type) == TYPE_CODE_REF
2482 /* In C you can dereference an array to get the 1st elt. */
2483 || TYPE_CODE (type) == TYPE_CODE_ARRAY
2484 )
2485 return value_zero (TYPE_TARGET_TYPE (type),
2486 lval_memory);
2487 else if (TYPE_CODE (type) == TYPE_CODE_INT)
2488 /* GDB allows dereferencing an int. */
2489 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
2490 lval_memory);
2491 else
2492 error (_("Attempt to take contents of a non-pointer value."));
2493 }
2494
2495 /* Allow * on an integer so we can cast it to whatever we want.
2496 This returns an int, which seems like the most C-like thing to
2497 do. "long long" variables are rare enough that
2498 BUILTIN_TYPE_LONGEST would seem to be a mistake. */
2499 if (TYPE_CODE (type) == TYPE_CODE_INT)
2500 return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
2501 (CORE_ADDR) value_as_address (arg1));
2502 return value_ind (arg1);
2503
2504 case UNOP_ADDR:
2505 /* C++: check for and handle pointer to members. */
2506
2507 op = exp->elts[*pos].opcode;
2508
2509 if (noside == EVAL_SKIP)
2510 {
2511 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
2512 goto nosideret;
2513 }
2514 else
2515 {
2516 struct value *retvalp = evaluate_subexp_for_address (exp, pos,
2517 noside);
2518
2519 return retvalp;
2520 }
2521
2522 case UNOP_SIZEOF:
2523 if (noside == EVAL_SKIP)
2524 {
2525 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
2526 goto nosideret;
2527 }
2528 return evaluate_subexp_for_sizeof (exp, pos, noside);
2529
2530 case UNOP_CAST:
2531 (*pos) += 2;
2532 type = exp->elts[pc + 1].type;
2533 arg1 = evaluate_subexp (type, exp, pos, noside);
2534 if (noside == EVAL_SKIP)
2535 goto nosideret;
2536 if (type != value_type (arg1))
2537 arg1 = value_cast (type, arg1);
2538 return arg1;
2539
2540 case UNOP_CAST_TYPE:
2541 arg1 = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2542 type = value_type (arg1);
2543 arg1 = evaluate_subexp (type, exp, pos, noside);
2544 if (noside == EVAL_SKIP)
2545 goto nosideret;
2546 if (type != value_type (arg1))
2547 arg1 = value_cast (type, arg1);
2548 return arg1;
2549
2550 case UNOP_DYNAMIC_CAST:
2551 arg1 = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2552 type = value_type (arg1);
2553 arg1 = evaluate_subexp (type, exp, pos, noside);
2554 if (noside == EVAL_SKIP)
2555 goto nosideret;
2556 return value_dynamic_cast (type, arg1);
2557
2558 case UNOP_REINTERPRET_CAST:
2559 arg1 = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2560 type = value_type (arg1);
2561 arg1 = evaluate_subexp (type, exp, pos, noside);
2562 if (noside == EVAL_SKIP)
2563 goto nosideret;
2564 return value_reinterpret_cast (type, arg1);
2565
2566 case UNOP_MEMVAL:
2567 (*pos) += 2;
2568 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2569 if (noside == EVAL_SKIP)
2570 goto nosideret;
2571 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2572 return value_zero (exp->elts[pc + 1].type, lval_memory);
2573 else
2574 return value_at_lazy (exp->elts[pc + 1].type,
2575 value_as_address (arg1));
2576
2577 case UNOP_MEMVAL_TYPE:
2578 arg1 = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2579 type = value_type (arg1);
2580 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2581 if (noside == EVAL_SKIP)
2582 goto nosideret;
2583 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2584 return value_zero (type, lval_memory);
2585 else
2586 return value_at_lazy (type, value_as_address (arg1));
2587
2588 case UNOP_MEMVAL_TLS:
2589 (*pos) += 3;
2590 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2591 if (noside == EVAL_SKIP)
2592 goto nosideret;
2593 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2594 return value_zero (exp->elts[pc + 2].type, lval_memory);
2595 else
2596 {
2597 CORE_ADDR tls_addr;
2598
2599 tls_addr = target_translate_tls_address (exp->elts[pc + 1].objfile,
2600 value_as_address (arg1));
2601 return value_at_lazy (exp->elts[pc + 2].type, tls_addr);
2602 }
2603
2604 case UNOP_PREINCREMENT:
2605 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2606 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2607 return arg1;
2608 else if (unop_user_defined_p (op, arg1))
2609 {
2610 return value_x_unop (arg1, op, noside);
2611 }
2612 else
2613 {
2614 if (ptrmath_type_p (exp->language_defn, value_type (arg1)))
2615 arg2 = value_ptradd (arg1, 1);
2616 else
2617 {
2618 struct value *tmp = arg1;
2619
2620 arg2 = value_one (value_type (arg1));
2621 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2622 arg2 = value_binop (tmp, arg2, BINOP_ADD);
2623 }
2624
2625 return value_assign (arg1, arg2);
2626 }
2627
2628 case UNOP_PREDECREMENT:
2629 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2630 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2631 return arg1;
2632 else if (unop_user_defined_p (op, arg1))
2633 {
2634 return value_x_unop (arg1, op, noside);
2635 }
2636 else
2637 {
2638 if (ptrmath_type_p (exp->language_defn, value_type (arg1)))
2639 arg2 = value_ptradd (arg1, -1);
2640 else
2641 {
2642 struct value *tmp = arg1;
2643
2644 arg2 = value_one (value_type (arg1));
2645 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2646 arg2 = value_binop (tmp, arg2, BINOP_SUB);
2647 }
2648
2649 return value_assign (arg1, arg2);
2650 }
2651
2652 case UNOP_POSTINCREMENT:
2653 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2654 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2655 return arg1;
2656 else if (unop_user_defined_p (op, arg1))
2657 {
2658 return value_x_unop (arg1, op, noside);
2659 }
2660 else
2661 {
2662 arg3 = value_non_lval (arg1);
2663
2664 if (ptrmath_type_p (exp->language_defn, value_type (arg1)))
2665 arg2 = value_ptradd (arg1, 1);
2666 else
2667 {
2668 struct value *tmp = arg1;
2669
2670 arg2 = value_one (value_type (arg1));
2671 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2672 arg2 = value_binop (tmp, arg2, BINOP_ADD);
2673 }
2674
2675 value_assign (arg1, arg2);
2676 return arg3;
2677 }
2678
2679 case UNOP_POSTDECREMENT:
2680 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2681 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2682 return arg1;
2683 else if (unop_user_defined_p (op, arg1))
2684 {
2685 return value_x_unop (arg1, op, noside);
2686 }
2687 else
2688 {
2689 arg3 = value_non_lval (arg1);
2690
2691 if (ptrmath_type_p (exp->language_defn, value_type (arg1)))
2692 arg2 = value_ptradd (arg1, -1);
2693 else
2694 {
2695 struct value *tmp = arg1;
2696
2697 arg2 = value_one (value_type (arg1));
2698 binop_promote (exp->language_defn, exp->gdbarch, &tmp, &arg2);
2699 arg2 = value_binop (tmp, arg2, BINOP_SUB);
2700 }
2701
2702 value_assign (arg1, arg2);
2703 return arg3;
2704 }
2705
2706 case OP_THIS:
2707 (*pos) += 1;
2708 return value_of_this (exp->language_defn);
2709
2710 case OP_TYPE:
2711 /* The value is not supposed to be used. This is here to make it
2712 easier to accommodate expressions that contain types. */
2713 (*pos) += 2;
2714 if (noside == EVAL_SKIP)
2715 goto nosideret;
2716 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2717 {
2718 struct type *type = exp->elts[pc + 1].type;
2719
2720 /* If this is a typedef, then find its immediate target. We
2721 use check_typedef to resolve stubs, but we ignore its
2722 result because we do not want to dig past all
2723 typedefs. */
2724 check_typedef (type);
2725 if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2726 type = TYPE_TARGET_TYPE (type);
2727 return allocate_value (type);
2728 }
2729 else
2730 error (_("Attempt to use a type name as an expression"));
2731
2732 case OP_TYPEOF:
2733 case OP_DECLTYPE:
2734 if (noside == EVAL_SKIP)
2735 {
2736 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
2737 goto nosideret;
2738 }
2739 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2740 {
2741 enum exp_opcode sub_op = exp->elts[*pos].opcode;
2742 struct value *result;
2743
2744 result = evaluate_subexp (NULL_TYPE, exp, pos,
2745 EVAL_AVOID_SIDE_EFFECTS);
2746
2747 /* 'decltype' has special semantics for lvalues. */
2748 if (op == OP_DECLTYPE
2749 && (sub_op == BINOP_SUBSCRIPT
2750 || sub_op == STRUCTOP_MEMBER
2751 || sub_op == STRUCTOP_MPTR
2752 || sub_op == UNOP_IND
2753 || sub_op == STRUCTOP_STRUCT
2754 || sub_op == STRUCTOP_PTR
2755 || sub_op == OP_SCOPE))
2756 {
2757 struct type *type = value_type (result);
2758
2759 if (TYPE_CODE (check_typedef (type)) != TYPE_CODE_REF)
2760 {
2761 type = lookup_reference_type (type);
2762 result = allocate_value (type);
2763 }
2764 }
2765
2766 return result;
2767 }
2768 else
2769 error (_("Attempt to use a type as an expression"));
2770
2771 case OP_TYPEID:
2772 {
2773 struct value *result;
2774 enum exp_opcode sub_op = exp->elts[*pos].opcode;
2775
2776 if (sub_op == OP_TYPE || sub_op == OP_DECLTYPE || sub_op == OP_TYPEOF)
2777 result = evaluate_subexp (NULL_TYPE, exp, pos,
2778 EVAL_AVOID_SIDE_EFFECTS);
2779 else
2780 result = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2781
2782 if (noside != EVAL_NORMAL)
2783 return allocate_value (cplus_typeid_type (exp->gdbarch));
2784
2785 return cplus_typeid (result);
2786 }
2787
2788 default:
2789 /* Removing this case and compiling with gcc -Wall reveals that
2790 a lot of cases are hitting this case. Some of these should
2791 probably be removed from expression.h; others are legitimate
2792 expressions which are (apparently) not fully implemented.
2793
2794 If there are any cases landing here which mean a user error,
2795 then they should be separate cases, with more descriptive
2796 error messages. */
2797
2798 error (_("GDB does not (yet) know how to "
2799 "evaluate that kind of expression"));
2800 }
2801
2802 nosideret:
2803 return value_from_longest (builtin_type (exp->gdbarch)->builtin_int, 1);
2804 }
2805 \f
2806 /* Evaluate a subexpression of EXP, at index *POS,
2807 and return the address of that subexpression.
2808 Advance *POS over the subexpression.
2809 If the subexpression isn't an lvalue, get an error.
2810 NOSIDE may be EVAL_AVOID_SIDE_EFFECTS;
2811 then only the type of the result need be correct. */
2812
2813 static struct value *
2814 evaluate_subexp_for_address (struct expression *exp, int *pos,
2815 enum noside noside)
2816 {
2817 enum exp_opcode op;
2818 int pc;
2819 struct symbol *var;
2820 struct value *x;
2821 int tem;
2822
2823 pc = (*pos);
2824 op = exp->elts[pc].opcode;
2825
2826 switch (op)
2827 {
2828 case UNOP_IND:
2829 (*pos)++;
2830 x = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2831
2832 /* We can't optimize out "&*" if there's a user-defined operator*. */
2833 if (unop_user_defined_p (op, x))
2834 {
2835 x = value_x_unop (x, op, noside);
2836 goto default_case_after_eval;
2837 }
2838
2839 return coerce_array (x);
2840
2841 case UNOP_MEMVAL:
2842 (*pos) += 3;
2843 return value_cast (lookup_pointer_type (exp->elts[pc + 1].type),
2844 evaluate_subexp (NULL_TYPE, exp, pos, noside));
2845
2846 case UNOP_MEMVAL_TYPE:
2847 {
2848 struct type *type;
2849
2850 (*pos) += 1;
2851 x = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2852 type = value_type (x);
2853 return value_cast (lookup_pointer_type (type),
2854 evaluate_subexp (NULL_TYPE, exp, pos, noside));
2855 }
2856
2857 case OP_VAR_VALUE:
2858 var = exp->elts[pc + 2].symbol;
2859
2860 /* C++: The "address" of a reference should yield the address
2861 * of the object pointed to. Let value_addr() deal with it. */
2862 if (TYPE_CODE (SYMBOL_TYPE (var)) == TYPE_CODE_REF)
2863 goto default_case;
2864
2865 (*pos) += 4;
2866 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2867 {
2868 struct type *type =
2869 lookup_pointer_type (SYMBOL_TYPE (var));
2870 enum address_class sym_class = SYMBOL_CLASS (var);
2871
2872 if (sym_class == LOC_CONST
2873 || sym_class == LOC_CONST_BYTES
2874 || sym_class == LOC_REGISTER)
2875 error (_("Attempt to take address of register or constant."));
2876
2877 return
2878 value_zero (type, not_lval);
2879 }
2880 else
2881 return address_of_variable (var, exp->elts[pc + 1].block);
2882
2883 case OP_SCOPE:
2884 tem = longest_to_int (exp->elts[pc + 2].longconst);
2885 (*pos) += 5 + BYTES_TO_EXP_ELEM (tem + 1);
2886 x = value_aggregate_elt (exp->elts[pc + 1].type,
2887 &exp->elts[pc + 3].string,
2888 NULL, 1, noside);
2889 if (x == NULL)
2890 error (_("There is no field named %s"), &exp->elts[pc + 3].string);
2891 return x;
2892
2893 default:
2894 default_case:
2895 x = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2896 default_case_after_eval:
2897 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2898 {
2899 struct type *type = check_typedef (value_type (x));
2900
2901 if (TYPE_CODE (type) == TYPE_CODE_REF)
2902 return value_zero (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2903 not_lval);
2904 else if (VALUE_LVAL (x) == lval_memory || value_must_coerce_to_target (x))
2905 return value_zero (lookup_pointer_type (value_type (x)),
2906 not_lval);
2907 else
2908 error (_("Attempt to take address of "
2909 "value not located in memory."));
2910 }
2911 return value_addr (x);
2912 }
2913 }
2914
2915 /* Evaluate like `evaluate_subexp' except coercing arrays to pointers.
2916 When used in contexts where arrays will be coerced anyway, this is
2917 equivalent to `evaluate_subexp' but much faster because it avoids
2918 actually fetching array contents (perhaps obsolete now that we have
2919 value_lazy()).
2920
2921 Note that we currently only do the coercion for C expressions, where
2922 arrays are zero based and the coercion is correct. For other languages,
2923 with nonzero based arrays, coercion loses. Use CAST_IS_CONVERSION
2924 to decide if coercion is appropriate. */
2925
2926 struct value *
2927 evaluate_subexp_with_coercion (struct expression *exp,
2928 int *pos, enum noside noside)
2929 {
2930 enum exp_opcode op;
2931 int pc;
2932 struct value *val;
2933 struct symbol *var;
2934 struct type *type;
2935
2936 pc = (*pos);
2937 op = exp->elts[pc].opcode;
2938
2939 switch (op)
2940 {
2941 case OP_VAR_VALUE:
2942 var = exp->elts[pc + 2].symbol;
2943 type = check_typedef (SYMBOL_TYPE (var));
2944 if (TYPE_CODE (type) == TYPE_CODE_ARRAY
2945 && !TYPE_VECTOR (type)
2946 && CAST_IS_CONVERSION (exp->language_defn))
2947 {
2948 (*pos) += 4;
2949 val = address_of_variable (var, exp->elts[pc + 1].block);
2950 return value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2951 val);
2952 }
2953 /* FALLTHROUGH */
2954
2955 default:
2956 return evaluate_subexp (NULL_TYPE, exp, pos, noside);
2957 }
2958 }
2959
2960 /* Evaluate a subexpression of EXP, at index *POS,
2961 and return a value for the size of that subexpression.
2962 Advance *POS over the subexpression. If NOSIDE is EVAL_NORMAL
2963 we allow side-effects on the operand if its type is a variable
2964 length array. */
2965
2966 static struct value *
2967 evaluate_subexp_for_sizeof (struct expression *exp, int *pos,
2968 enum noside noside)
2969 {
2970 /* FIXME: This should be size_t. */
2971 struct type *size_type = builtin_type (exp->gdbarch)->builtin_int;
2972 enum exp_opcode op;
2973 int pc;
2974 struct type *type;
2975 struct value *val;
2976
2977 pc = (*pos);
2978 op = exp->elts[pc].opcode;
2979
2980 switch (op)
2981 {
2982 /* This case is handled specially
2983 so that we avoid creating a value for the result type.
2984 If the result type is very big, it's desirable not to
2985 create a value unnecessarily. */
2986 case UNOP_IND:
2987 (*pos)++;
2988 val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2989 type = check_typedef (value_type (val));
2990 if (TYPE_CODE (type) != TYPE_CODE_PTR
2991 && TYPE_CODE (type) != TYPE_CODE_REF
2992 && TYPE_CODE (type) != TYPE_CODE_ARRAY)
2993 error (_("Attempt to take contents of a non-pointer value."));
2994 type = TYPE_TARGET_TYPE (type);
2995 if (is_dynamic_type (type))
2996 type = value_type (value_ind (val));
2997 return value_from_longest (size_type, (LONGEST) TYPE_LENGTH (type));
2998
2999 case UNOP_MEMVAL:
3000 (*pos) += 3;
3001 type = exp->elts[pc + 1].type;
3002 break;
3003
3004 case UNOP_MEMVAL_TYPE:
3005 (*pos) += 1;
3006 val = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3007 type = value_type (val);
3008 break;
3009
3010 case OP_VAR_VALUE:
3011 type = SYMBOL_TYPE (exp->elts[pc + 2].symbol);
3012 if (is_dynamic_type (type))
3013 {
3014 val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
3015 type = value_type (val);
3016 }
3017 else
3018 (*pos) += 4;
3019 break;
3020
3021 /* Deal with the special case if NOSIDE is EVAL_NORMAL and the resulting
3022 type of the subscript is a variable length array type. In this case we
3023 must re-evaluate the right hand side of the subcription to allow
3024 side-effects. */
3025 case BINOP_SUBSCRIPT:
3026 if (noside == EVAL_NORMAL)
3027 {
3028 int pc = (*pos) + 1;
3029
3030 val = evaluate_subexp (NULL_TYPE, exp, &pc, EVAL_AVOID_SIDE_EFFECTS);
3031 type = check_typedef (value_type (val));
3032 if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
3033 {
3034 type = check_typedef (TYPE_TARGET_TYPE (type));
3035 if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
3036 {
3037 type = TYPE_INDEX_TYPE (type);
3038 /* Only re-evaluate the right hand side if the resulting type
3039 is a variable length type. */
3040 if (TYPE_RANGE_DATA (type)->flag_bound_evaluated)
3041 {
3042 val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
3043 return value_from_longest
3044 (size_type, (LONGEST) TYPE_LENGTH (value_type (val)));
3045 }
3046 }
3047 }
3048 }
3049
3050 /* Fall through. */
3051
3052 default:
3053 val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
3054 type = value_type (val);
3055 break;
3056 }
3057
3058 /* $5.3.3/2 of the C++ Standard (n3290 draft) says of sizeof:
3059 "When applied to a reference or a reference type, the result is
3060 the size of the referenced type." */
3061 CHECK_TYPEDEF (type);
3062 if (exp->language_defn->la_language == language_cplus
3063 && TYPE_CODE (type) == TYPE_CODE_REF)
3064 type = check_typedef (TYPE_TARGET_TYPE (type));
3065 return value_from_longest (size_type, (LONGEST) TYPE_LENGTH (type));
3066 }
3067
3068 /* Parse a type expression in the string [P..P+LENGTH). */
3069
3070 struct type *
3071 parse_and_eval_type (char *p, int length)
3072 {
3073 char *tmp = (char *) alloca (length + 4);
3074 struct expression *expr;
3075
3076 tmp[0] = '(';
3077 memcpy (tmp + 1, p, length);
3078 tmp[length + 1] = ')';
3079 tmp[length + 2] = '0';
3080 tmp[length + 3] = '\0';
3081 expr = parse_expression (tmp);
3082 if (expr->elts[0].opcode != UNOP_CAST)
3083 error (_("Internal error in eval_type."));
3084 return expr->elts[1].type;
3085 }
3086
3087 int
3088 calc_f77_array_dims (struct type *array_type)
3089 {
3090 int ndimen = 1;
3091 struct type *tmp_type;
3092
3093 if ((TYPE_CODE (array_type) != TYPE_CODE_ARRAY))
3094 error (_("Can't get dimensions for a non-array type"));
3095
3096 tmp_type = array_type;
3097
3098 while ((tmp_type = TYPE_TARGET_TYPE (tmp_type)))
3099 {
3100 if (TYPE_CODE (tmp_type) == TYPE_CODE_ARRAY)
3101 ++ndimen;
3102 }
3103 return ndimen;
3104 }
This page took 0.088942 seconds and 5 git commands to generate.