Update
[gdb.git] / gdb / eval.c
blob6e5be65921cbbd2aad8f459282e5dff0d5213e91
1 /* Evaluate expressions for GDB.
3 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2008
5 Free Software Foundation, Inc.
7 This file is part of GDB.
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
22 #include "defs.h"
23 #include "gdb_string.h"
24 #include "symtab.h"
25 #include "gdbtypes.h"
26 #include "value.h"
27 #include "expression.h"
28 #include "target.h"
29 #include "frame.h"
30 #include "language.h" /* For CAST_IS_CONVERSION */
31 #include "f-lang.h" /* for array bound stuff */
32 #include "cp-abi.h"
33 #include "infcall.h"
34 #include "objc-lang.h"
35 #include "block.h"
36 #include "parser-defs.h"
37 #include "cp-support.h"
38 #include "ui-out.h"
39 #include "exceptions.h"
40 #include "regcache.h"
42 #include "gdb_assert.h"
44 /* This is defined in valops.c */
45 extern int overload_resolution;
47 /* JYG: lookup rtti type of STRUCTOP_PTR when this is set to continue
48 on with successful lookup for member/method of the rtti type. */
49 extern int objectprint;
51 /* Prototypes for local functions. */
53 static struct value *evaluate_subexp_for_sizeof (struct expression *, int *);
55 static struct value *evaluate_subexp_for_address (struct expression *,
56 int *, enum noside);
58 static struct value *evaluate_subexp (struct type *, struct expression *,
59 int *, enum noside);
61 static char *get_label (struct expression *, int *);
63 static struct value *evaluate_struct_tuple (struct value *,
64 struct expression *, int *,
65 enum noside, int);
67 static LONGEST init_array_element (struct value *, struct value *,
68 struct expression *, int *, enum noside,
69 LONGEST, LONGEST);
71 static struct value *
72 evaluate_subexp (struct type *expect_type, struct expression *exp,
73 int *pos, enum noside noside)
75 return (*exp->language_defn->la_exp_desc->evaluate_exp)
76 (expect_type, exp, pos, noside);
79 /* Parse the string EXP as a C expression, evaluate it,
80 and return the result as a number. */
82 CORE_ADDR
83 parse_and_eval_address (char *exp)
85 struct expression *expr = parse_expression (exp);
86 CORE_ADDR addr;
87 struct cleanup *old_chain =
88 make_cleanup (free_current_contents, &expr);
90 addr = value_as_address (evaluate_expression (expr));
91 do_cleanups (old_chain);
92 return addr;
95 /* Like parse_and_eval_address but takes a pointer to a char * variable
96 and advanced that variable across the characters parsed. */
98 CORE_ADDR
99 parse_and_eval_address_1 (char **expptr)
101 struct expression *expr = parse_exp_1 (expptr, (struct block *) 0, 0);
102 CORE_ADDR addr;
103 struct cleanup *old_chain =
104 make_cleanup (free_current_contents, &expr);
106 addr = value_as_address (evaluate_expression (expr));
107 do_cleanups (old_chain);
108 return addr;
111 /* Like parse_and_eval_address, but treats the value of the expression
112 as an integer, not an address, returns a LONGEST, not a CORE_ADDR */
113 LONGEST
114 parse_and_eval_long (char *exp)
116 struct expression *expr = parse_expression (exp);
117 LONGEST retval;
118 struct cleanup *old_chain =
119 make_cleanup (free_current_contents, &expr);
121 retval = value_as_long (evaluate_expression (expr));
122 do_cleanups (old_chain);
123 return (retval);
126 struct value *
127 parse_and_eval (char *exp)
129 struct expression *expr = parse_expression (exp);
130 struct value *val;
131 struct cleanup *old_chain =
132 make_cleanup (free_current_contents, &expr);
134 val = evaluate_expression (expr);
135 do_cleanups (old_chain);
136 return val;
139 /* Parse up to a comma (or to a closeparen)
140 in the string EXPP as an expression, evaluate it, and return the value.
141 EXPP is advanced to point to the comma. */
143 struct value *
144 parse_to_comma_and_eval (char **expp)
146 struct expression *expr = parse_exp_1 (expp, (struct block *) 0, 1);
147 struct value *val;
148 struct cleanup *old_chain =
149 make_cleanup (free_current_contents, &expr);
151 val = evaluate_expression (expr);
152 do_cleanups (old_chain);
153 return val;
156 /* Evaluate an expression in internal prefix form
157 such as is constructed by parse.y.
159 See expression.h for info on the format of an expression. */
161 struct value *
162 evaluate_expression (struct expression *exp)
164 int pc = 0;
165 return evaluate_subexp (NULL_TYPE, exp, &pc, EVAL_NORMAL);
168 /* Evaluate an expression, avoiding all memory references
169 and getting a value whose type alone is correct. */
171 struct value *
172 evaluate_type (struct expression *exp)
174 int pc = 0;
175 return evaluate_subexp (NULL_TYPE, exp, &pc, EVAL_AVOID_SIDE_EFFECTS);
178 /* If the next expression is an OP_LABELED, skips past it,
179 returning the label. Otherwise, does nothing and returns NULL. */
181 static char *
182 get_label (struct expression *exp, int *pos)
184 if (exp->elts[*pos].opcode == OP_LABELED)
186 int pc = (*pos)++;
187 char *name = &exp->elts[pc + 2].string;
188 int tem = longest_to_int (exp->elts[pc + 1].longconst);
189 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
190 return name;
192 else
193 return NULL;
196 /* This function evaluates tuples (in (the deleted) Chill) or
197 brace-initializers (in C/C++) for structure types. */
199 static struct value *
200 evaluate_struct_tuple (struct value *struct_val,
201 struct expression *exp,
202 int *pos, enum noside noside, int nargs)
204 struct type *struct_type = check_typedef (value_type (struct_val));
205 struct type *substruct_type = struct_type;
206 struct type *field_type;
207 int fieldno = -1;
208 int variantno = -1;
209 int subfieldno = -1;
210 while (--nargs >= 0)
212 int pc = *pos;
213 struct value *val = NULL;
214 int nlabels = 0;
215 int bitpos, bitsize;
216 bfd_byte *addr;
218 /* Skip past the labels, and count them. */
219 while (get_label (exp, pos) != NULL)
220 nlabels++;
224 char *label = get_label (exp, &pc);
225 if (label)
227 for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type);
228 fieldno++)
230 char *field_name = TYPE_FIELD_NAME (struct_type, fieldno);
231 if (field_name != NULL && strcmp (field_name, label) == 0)
233 variantno = -1;
234 subfieldno = fieldno;
235 substruct_type = struct_type;
236 goto found;
239 for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type);
240 fieldno++)
242 char *field_name = TYPE_FIELD_NAME (struct_type, fieldno);
243 field_type = TYPE_FIELD_TYPE (struct_type, fieldno);
244 if ((field_name == 0 || *field_name == '\0')
245 && TYPE_CODE (field_type) == TYPE_CODE_UNION)
247 variantno = 0;
248 for (; variantno < TYPE_NFIELDS (field_type);
249 variantno++)
251 substruct_type
252 = TYPE_FIELD_TYPE (field_type, variantno);
253 if (TYPE_CODE (substruct_type) == TYPE_CODE_STRUCT)
255 for (subfieldno = 0;
256 subfieldno < TYPE_NFIELDS (substruct_type);
257 subfieldno++)
259 if (strcmp(TYPE_FIELD_NAME (substruct_type,
260 subfieldno),
261 label) == 0)
263 goto found;
270 error (_("there is no field named %s"), label);
271 found:
274 else
276 /* Unlabelled tuple element - go to next field. */
277 if (variantno >= 0)
279 subfieldno++;
280 if (subfieldno >= TYPE_NFIELDS (substruct_type))
282 variantno = -1;
283 substruct_type = struct_type;
286 if (variantno < 0)
288 fieldno++;
289 /* Skip static fields. */
290 while (fieldno < TYPE_NFIELDS (struct_type)
291 && TYPE_FIELD_STATIC_KIND (struct_type, fieldno))
292 fieldno++;
293 subfieldno = fieldno;
294 if (fieldno >= TYPE_NFIELDS (struct_type))
295 error (_("too many initializers"));
296 field_type = TYPE_FIELD_TYPE (struct_type, fieldno);
297 if (TYPE_CODE (field_type) == TYPE_CODE_UNION
298 && TYPE_FIELD_NAME (struct_type, fieldno)[0] == '0')
299 error (_("don't know which variant you want to set"));
303 /* Here, struct_type is the type of the inner struct,
304 while substruct_type is the type of the inner struct.
305 These are the same for normal structures, but a variant struct
306 contains anonymous union fields that contain substruct fields.
307 The value fieldno is the index of the top-level (normal or
308 anonymous union) field in struct_field, while the value
309 subfieldno is the index of the actual real (named inner) field
310 in substruct_type. */
312 field_type = TYPE_FIELD_TYPE (substruct_type, subfieldno);
313 if (val == 0)
314 val = evaluate_subexp (field_type, exp, pos, noside);
316 /* Now actually set the field in struct_val. */
318 /* Assign val to field fieldno. */
319 if (value_type (val) != field_type)
320 val = value_cast (field_type, val);
322 bitsize = TYPE_FIELD_BITSIZE (substruct_type, subfieldno);
323 bitpos = TYPE_FIELD_BITPOS (struct_type, fieldno);
324 if (variantno >= 0)
325 bitpos += TYPE_FIELD_BITPOS (substruct_type, subfieldno);
326 addr = value_contents_writeable (struct_val) + bitpos / 8;
327 if (bitsize)
328 modify_field (addr, value_as_long (val),
329 bitpos % 8, bitsize);
330 else
331 memcpy (addr, value_contents (val),
332 TYPE_LENGTH (value_type (val)));
334 while (--nlabels > 0);
336 return struct_val;
339 /* Recursive helper function for setting elements of array tuples for
340 (the deleted) Chill. The target is ARRAY (which has bounds
341 LOW_BOUND to HIGH_BOUND); the element value is ELEMENT; EXP, POS
342 and NOSIDE are as usual. Evaluates index expresions and sets the
343 specified element(s) of ARRAY to ELEMENT. Returns last index
344 value. */
346 static LONGEST
347 init_array_element (struct value *array, struct value *element,
348 struct expression *exp, int *pos,
349 enum noside noside, LONGEST low_bound, LONGEST high_bound)
351 LONGEST index;
352 int element_size = TYPE_LENGTH (value_type (element));
353 if (exp->elts[*pos].opcode == BINOP_COMMA)
355 (*pos)++;
356 init_array_element (array, element, exp, pos, noside,
357 low_bound, high_bound);
358 return init_array_element (array, element,
359 exp, pos, noside, low_bound, high_bound);
361 else if (exp->elts[*pos].opcode == BINOP_RANGE)
363 LONGEST low, high;
364 (*pos)++;
365 low = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
366 high = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
367 if (low < low_bound || high > high_bound)
368 error (_("tuple range index out of range"));
369 for (index = low; index <= high; index++)
371 memcpy (value_contents_raw (array)
372 + (index - low_bound) * element_size,
373 value_contents (element), element_size);
376 else
378 index = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
379 if (index < low_bound || index > high_bound)
380 error (_("tuple index out of range"));
381 memcpy (value_contents_raw (array) + (index - low_bound) * element_size,
382 value_contents (element), element_size);
384 return index;
387 struct value *
388 value_f90_subarray (struct value *array,
389 struct expression *exp, int *pos, enum noside noside)
391 int pc = (*pos) + 1;
392 LONGEST low_bound, high_bound;
393 struct type *range = check_typedef (TYPE_INDEX_TYPE (value_type (array)));
394 enum f90_range_type range_type = longest_to_int (exp->elts[pc].longconst);
396 *pos += 3;
398 if (range_type == LOW_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT)
399 low_bound = TYPE_LOW_BOUND (range);
400 else
401 low_bound = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
403 if (range_type == HIGH_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT)
404 high_bound = TYPE_HIGH_BOUND (range);
405 else
406 high_bound = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
408 return value_slice (array, low_bound, high_bound - low_bound + 1);
411 struct value *
412 evaluate_subexp_standard (struct type *expect_type,
413 struct expression *exp, int *pos,
414 enum noside noside)
416 enum exp_opcode op;
417 int tem, tem2, tem3;
418 int pc, pc2 = 0, oldpos;
419 struct value *arg1 = NULL;
420 struct value *arg2 = NULL;
421 struct value *arg3;
422 struct type *type;
423 int nargs;
424 struct value **argvec;
425 int upper, lower, retcode;
426 int code;
427 int ix;
428 long mem_offset;
429 struct type **arg_types;
430 int save_pos1;
432 pc = (*pos)++;
433 op = exp->elts[pc].opcode;
435 switch (op)
437 case OP_SCOPE:
438 tem = longest_to_int (exp->elts[pc + 2].longconst);
439 (*pos) += 4 + BYTES_TO_EXP_ELEM (tem + 1);
440 if (noside == EVAL_SKIP)
441 goto nosideret;
442 arg1 = value_aggregate_elt (exp->elts[pc + 1].type,
443 &exp->elts[pc + 3].string,
444 0, noside);
445 if (arg1 == NULL)
446 error (_("There is no field named %s"), &exp->elts[pc + 3].string);
447 return arg1;
449 case OP_LONG:
450 (*pos) += 3;
451 return value_from_longest (exp->elts[pc + 1].type,
452 exp->elts[pc + 2].longconst);
454 case OP_DOUBLE:
455 (*pos) += 3;
456 return value_from_double (exp->elts[pc + 1].type,
457 exp->elts[pc + 2].doubleconst);
459 case OP_DECFLOAT:
460 (*pos) += 3;
461 return value_from_decfloat (exp->elts[pc + 1].type,
462 exp->elts[pc + 2].decfloatconst);
464 case OP_VAR_VALUE:
465 (*pos) += 3;
466 if (noside == EVAL_SKIP)
467 goto nosideret;
469 /* JYG: We used to just return value_zero of the symbol type
470 if we're asked to avoid side effects. Otherwise we return
471 value_of_variable (...). However I'm not sure if
472 value_of_variable () has any side effect.
473 We need a full value object returned here for whatis_exp ()
474 to call evaluate_type () and then pass the full value to
475 value_rtti_target_type () if we are dealing with a pointer
476 or reference to a base class and print object is on. */
479 volatile struct gdb_exception except;
480 struct value *ret = NULL;
482 TRY_CATCH (except, RETURN_MASK_ERROR)
484 ret = value_of_variable (exp->elts[pc + 2].symbol,
485 exp->elts[pc + 1].block);
488 if (except.reason < 0)
490 if (noside == EVAL_AVOID_SIDE_EFFECTS)
491 ret = value_zero (SYMBOL_TYPE (exp->elts[pc + 2].symbol), not_lval);
492 else
493 throw_exception (except);
496 return ret;
499 case OP_LAST:
500 (*pos) += 2;
501 return
502 access_value_history (longest_to_int (exp->elts[pc + 1].longconst));
504 case OP_REGISTER:
506 const char *name = &exp->elts[pc + 2].string;
507 int regno;
508 struct value *val;
510 (*pos) += 3 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
511 regno = frame_map_name_to_regnum (deprecated_safe_get_selected_frame (),
512 name, strlen (name));
513 if (regno == -1)
514 error (_("Register $%s not available."), name);
516 /* In EVAL_AVOID_SIDE_EFFECTS mode, we only need to return
517 a value with the appropriate register type. Unfortunately,
518 we don't have easy access to the type of user registers.
519 So for these registers, we fetch the register value regardless
520 of the evaluation mode. */
521 if (noside == EVAL_AVOID_SIDE_EFFECTS
522 && regno < gdbarch_num_regs (current_gdbarch)
523 + gdbarch_num_pseudo_regs (current_gdbarch))
524 val = value_zero (register_type (current_gdbarch, regno), not_lval);
525 else
526 val = value_of_register (regno, get_selected_frame (NULL));
527 if (val == NULL)
528 error (_("Value of register %s not available."), name);
529 else
530 return val;
532 case OP_BOOL:
533 (*pos) += 2;
534 return value_from_longest (LA_BOOL_TYPE,
535 exp->elts[pc + 1].longconst);
537 case OP_INTERNALVAR:
538 (*pos) += 2;
539 return value_of_internalvar (exp->elts[pc + 1].internalvar);
541 case OP_STRING:
542 tem = longest_to_int (exp->elts[pc + 1].longconst);
543 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
544 if (noside == EVAL_SKIP)
545 goto nosideret;
546 return value_string (&exp->elts[pc + 2].string, tem);
548 case OP_OBJC_NSSTRING: /* Objective C Foundation Class NSString constant. */
549 tem = longest_to_int (exp->elts[pc + 1].longconst);
550 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
551 if (noside == EVAL_SKIP)
553 goto nosideret;
555 return (struct value *) value_nsstring (&exp->elts[pc + 2].string, tem + 1);
557 case OP_BITSTRING:
558 tem = longest_to_int (exp->elts[pc + 1].longconst);
559 (*pos)
560 += 3 + BYTES_TO_EXP_ELEM ((tem + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT);
561 if (noside == EVAL_SKIP)
562 goto nosideret;
563 return value_bitstring (&exp->elts[pc + 2].string, tem);
564 break;
566 case OP_ARRAY:
567 (*pos) += 3;
568 tem2 = longest_to_int (exp->elts[pc + 1].longconst);
569 tem3 = longest_to_int (exp->elts[pc + 2].longconst);
570 nargs = tem3 - tem2 + 1;
571 type = expect_type ? check_typedef (expect_type) : NULL_TYPE;
573 if (expect_type != NULL_TYPE && noside != EVAL_SKIP
574 && TYPE_CODE (type) == TYPE_CODE_STRUCT)
576 struct value *rec = allocate_value (expect_type);
577 memset (value_contents_raw (rec), '\0', TYPE_LENGTH (type));
578 return evaluate_struct_tuple (rec, exp, pos, noside, nargs);
581 if (expect_type != NULL_TYPE && noside != EVAL_SKIP
582 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
584 struct type *range_type = TYPE_FIELD_TYPE (type, 0);
585 struct type *element_type = TYPE_TARGET_TYPE (type);
586 struct value *array = allocate_value (expect_type);
587 int element_size = TYPE_LENGTH (check_typedef (element_type));
588 LONGEST low_bound, high_bound, index;
589 if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
591 low_bound = 0;
592 high_bound = (TYPE_LENGTH (type) / element_size) - 1;
594 index = low_bound;
595 memset (value_contents_raw (array), 0, TYPE_LENGTH (expect_type));
596 for (tem = nargs; --nargs >= 0;)
598 struct value *element;
599 int index_pc = 0;
600 if (exp->elts[*pos].opcode == BINOP_RANGE)
602 index_pc = ++(*pos);
603 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
605 element = evaluate_subexp (element_type, exp, pos, noside);
606 if (value_type (element) != element_type)
607 element = value_cast (element_type, element);
608 if (index_pc)
610 int continue_pc = *pos;
611 *pos = index_pc;
612 index = init_array_element (array, element, exp, pos, noside,
613 low_bound, high_bound);
614 *pos = continue_pc;
616 else
618 if (index > high_bound)
619 /* to avoid memory corruption */
620 error (_("Too many array elements"));
621 memcpy (value_contents_raw (array)
622 + (index - low_bound) * element_size,
623 value_contents (element),
624 element_size);
626 index++;
628 return array;
631 if (expect_type != NULL_TYPE && noside != EVAL_SKIP
632 && TYPE_CODE (type) == TYPE_CODE_SET)
634 struct value *set = allocate_value (expect_type);
635 gdb_byte *valaddr = value_contents_raw (set);
636 struct type *element_type = TYPE_INDEX_TYPE (type);
637 struct type *check_type = element_type;
638 LONGEST low_bound, high_bound;
640 /* get targettype of elementtype */
641 while (TYPE_CODE (check_type) == TYPE_CODE_RANGE ||
642 TYPE_CODE (check_type) == TYPE_CODE_TYPEDEF)
643 check_type = TYPE_TARGET_TYPE (check_type);
645 if (get_discrete_bounds (element_type, &low_bound, &high_bound) < 0)
646 error (_("(power)set type with unknown size"));
647 memset (valaddr, '\0', TYPE_LENGTH (type));
648 for (tem = 0; tem < nargs; tem++)
650 LONGEST range_low, range_high;
651 struct type *range_low_type, *range_high_type;
652 struct value *elem_val;
653 if (exp->elts[*pos].opcode == BINOP_RANGE)
655 (*pos)++;
656 elem_val = evaluate_subexp (element_type, exp, pos, noside);
657 range_low_type = value_type (elem_val);
658 range_low = value_as_long (elem_val);
659 elem_val = evaluate_subexp (element_type, exp, pos, noside);
660 range_high_type = value_type (elem_val);
661 range_high = value_as_long (elem_val);
663 else
665 elem_val = evaluate_subexp (element_type, exp, pos, noside);
666 range_low_type = range_high_type = value_type (elem_val);
667 range_low = range_high = value_as_long (elem_val);
669 /* check types of elements to avoid mixture of elements from
670 different types. Also check if type of element is "compatible"
671 with element type of powerset */
672 if (TYPE_CODE (range_low_type) == TYPE_CODE_RANGE)
673 range_low_type = TYPE_TARGET_TYPE (range_low_type);
674 if (TYPE_CODE (range_high_type) == TYPE_CODE_RANGE)
675 range_high_type = TYPE_TARGET_TYPE (range_high_type);
676 if ((TYPE_CODE (range_low_type) != TYPE_CODE (range_high_type)) ||
677 (TYPE_CODE (range_low_type) == TYPE_CODE_ENUM &&
678 (range_low_type != range_high_type)))
679 /* different element modes */
680 error (_("POWERSET tuple elements of different mode"));
681 if ((TYPE_CODE (check_type) != TYPE_CODE (range_low_type)) ||
682 (TYPE_CODE (check_type) == TYPE_CODE_ENUM &&
683 range_low_type != check_type))
684 error (_("incompatible POWERSET tuple elements"));
685 if (range_low > range_high)
687 warning (_("empty POWERSET tuple range"));
688 continue;
690 if (range_low < low_bound || range_high > high_bound)
691 error (_("POWERSET tuple element out of range"));
692 range_low -= low_bound;
693 range_high -= low_bound;
694 for (; range_low <= range_high; range_low++)
696 int bit_index = (unsigned) range_low % TARGET_CHAR_BIT;
697 if (gdbarch_bits_big_endian (current_gdbarch))
698 bit_index = TARGET_CHAR_BIT - 1 - bit_index;
699 valaddr[(unsigned) range_low / TARGET_CHAR_BIT]
700 |= 1 << bit_index;
703 return set;
706 argvec = (struct value **) alloca (sizeof (struct value *) * nargs);
707 for (tem = 0; tem < nargs; tem++)
709 /* Ensure that array expressions are coerced into pointer objects. */
710 argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
712 if (noside == EVAL_SKIP)
713 goto nosideret;
714 return value_array (tem2, tem3, argvec);
716 case TERNOP_SLICE:
718 struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
719 int lowbound
720 = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
721 int upper
722 = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
723 if (noside == EVAL_SKIP)
724 goto nosideret;
725 return value_slice (array, lowbound, upper - lowbound + 1);
728 case TERNOP_SLICE_COUNT:
730 struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
731 int lowbound
732 = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
733 int length
734 = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
735 return value_slice (array, lowbound, length);
738 case TERNOP_COND:
739 /* Skip third and second args to evaluate the first one. */
740 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
741 if (value_logical_not (arg1))
743 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
744 return evaluate_subexp (NULL_TYPE, exp, pos, noside);
746 else
748 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
749 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
750 return arg2;
753 case OP_OBJC_SELECTOR:
754 { /* Objective C @selector operator. */
755 char *sel = &exp->elts[pc + 2].string;
756 int len = longest_to_int (exp->elts[pc + 1].longconst);
758 (*pos) += 3 + BYTES_TO_EXP_ELEM (len + 1);
759 if (noside == EVAL_SKIP)
760 goto nosideret;
762 if (sel[len] != 0)
763 sel[len] = 0; /* Make sure it's terminated. */
764 return value_from_longest (lookup_pointer_type (builtin_type_void),
765 lookup_child_selector (sel));
768 case OP_OBJC_MSGCALL:
769 { /* Objective C message (method) call. */
771 static CORE_ADDR responds_selector = 0;
772 static CORE_ADDR method_selector = 0;
774 CORE_ADDR selector = 0;
776 int struct_return = 0;
777 int sub_no_side = 0;
779 static struct value *msg_send = NULL;
780 static struct value *msg_send_stret = NULL;
781 static int gnu_runtime = 0;
783 struct value *target = NULL;
784 struct value *method = NULL;
785 struct value *called_method = NULL;
787 struct type *selector_type = NULL;
789 struct value *ret = NULL;
790 CORE_ADDR addr = 0;
792 selector = exp->elts[pc + 1].longconst;
793 nargs = exp->elts[pc + 2].longconst;
794 argvec = (struct value **) alloca (sizeof (struct value *)
795 * (nargs + 5));
797 (*pos) += 3;
799 selector_type = lookup_pointer_type (builtin_type_void);
800 if (noside == EVAL_AVOID_SIDE_EFFECTS)
801 sub_no_side = EVAL_NORMAL;
802 else
803 sub_no_side = noside;
805 target = evaluate_subexp (selector_type, exp, pos, sub_no_side);
807 if (value_as_long (target) == 0)
808 return value_from_longest (builtin_type_long, 0);
810 if (lookup_minimal_symbol ("objc_msg_lookup", 0, 0))
811 gnu_runtime = 1;
813 /* Find the method dispatch (Apple runtime) or method lookup
814 (GNU runtime) function for Objective-C. These will be used
815 to lookup the symbol information for the method. If we
816 can't find any symbol information, then we'll use these to
817 call the method, otherwise we can call the method
818 directly. The msg_send_stret function is used in the special
819 case of a method that returns a structure (Apple runtime
820 only). */
821 if (gnu_runtime)
823 struct type *type;
824 type = lookup_pointer_type (builtin_type_void);
825 type = lookup_function_type (type);
826 type = lookup_pointer_type (type);
827 type = lookup_function_type (type);
828 type = lookup_pointer_type (type);
830 msg_send = find_function_in_inferior ("objc_msg_lookup");
831 msg_send_stret = find_function_in_inferior ("objc_msg_lookup");
833 msg_send = value_from_pointer (type, value_as_address (msg_send));
834 msg_send_stret = value_from_pointer (type,
835 value_as_address (msg_send_stret));
837 else
839 msg_send = find_function_in_inferior ("objc_msgSend");
840 /* Special dispatcher for methods returning structs */
841 msg_send_stret = find_function_in_inferior ("objc_msgSend_stret");
844 /* Verify the target object responds to this method. The
845 standard top-level 'Object' class uses a different name for
846 the verification method than the non-standard, but more
847 often used, 'NSObject' class. Make sure we check for both. */
849 responds_selector = lookup_child_selector ("respondsToSelector:");
850 if (responds_selector == 0)
851 responds_selector = lookup_child_selector ("respondsTo:");
853 if (responds_selector == 0)
854 error (_("no 'respondsTo:' or 'respondsToSelector:' method"));
856 method_selector = lookup_child_selector ("methodForSelector:");
857 if (method_selector == 0)
858 method_selector = lookup_child_selector ("methodFor:");
860 if (method_selector == 0)
861 error (_("no 'methodFor:' or 'methodForSelector:' method"));
863 /* Call the verification method, to make sure that the target
864 class implements the desired method. */
866 argvec[0] = msg_send;
867 argvec[1] = target;
868 argvec[2] = value_from_longest (builtin_type_long, responds_selector);
869 argvec[3] = value_from_longest (builtin_type_long, selector);
870 argvec[4] = 0;
872 ret = call_function_by_hand (argvec[0], 3, argvec + 1);
873 if (gnu_runtime)
875 /* Function objc_msg_lookup returns a pointer. */
876 argvec[0] = ret;
877 ret = call_function_by_hand (argvec[0], 3, argvec + 1);
879 if (value_as_long (ret) == 0)
880 error (_("Target does not respond to this message selector."));
882 /* Call "methodForSelector:" method, to get the address of a
883 function method that implements this selector for this
884 class. If we can find a symbol at that address, then we
885 know the return type, parameter types etc. (that's a good
886 thing). */
888 argvec[0] = msg_send;
889 argvec[1] = target;
890 argvec[2] = value_from_longest (builtin_type_long, method_selector);
891 argvec[3] = value_from_longest (builtin_type_long, selector);
892 argvec[4] = 0;
894 ret = call_function_by_hand (argvec[0], 3, argvec + 1);
895 if (gnu_runtime)
897 argvec[0] = ret;
898 ret = call_function_by_hand (argvec[0], 3, argvec + 1);
901 /* ret should now be the selector. */
903 addr = value_as_long (ret);
904 if (addr)
906 struct symbol *sym = NULL;
907 /* Is it a high_level symbol? */
909 sym = find_pc_function (addr);
910 if (sym != NULL)
911 method = value_of_variable (sym, 0);
914 /* If we found a method with symbol information, check to see
915 if it returns a struct. Otherwise assume it doesn't. */
917 if (method)
919 struct block *b;
920 CORE_ADDR funaddr;
921 struct type *value_type;
923 funaddr = find_function_addr (method, &value_type);
925 b = block_for_pc (funaddr);
927 CHECK_TYPEDEF (value_type);
929 if ((value_type == NULL)
930 || (TYPE_CODE(value_type) == TYPE_CODE_ERROR))
932 if (expect_type != NULL)
933 value_type = expect_type;
936 struct_return = using_struct_return (value_type);
938 else if (expect_type != NULL)
940 struct_return = using_struct_return (check_typedef (expect_type));
943 /* Found a function symbol. Now we will substitute its
944 value in place of the message dispatcher (obj_msgSend),
945 so that we call the method directly instead of thru
946 the dispatcher. The main reason for doing this is that
947 we can now evaluate the return value and parameter values
948 according to their known data types, in case we need to
949 do things like promotion, dereferencing, special handling
950 of structs and doubles, etc.
952 We want to use the type signature of 'method', but still
953 jump to objc_msgSend() or objc_msgSend_stret() to better
954 mimic the behavior of the runtime. */
956 if (method)
958 if (TYPE_CODE (value_type (method)) != TYPE_CODE_FUNC)
959 error (_("method address has symbol information with non-function type; skipping"));
960 if (struct_return)
961 VALUE_ADDRESS (method) = value_as_address (msg_send_stret);
962 else
963 VALUE_ADDRESS (method) = value_as_address (msg_send);
964 called_method = method;
966 else
968 if (struct_return)
969 called_method = msg_send_stret;
970 else
971 called_method = msg_send;
974 if (noside == EVAL_SKIP)
975 goto nosideret;
977 if (noside == EVAL_AVOID_SIDE_EFFECTS)
979 /* If the return type doesn't look like a function type,
980 call an error. This can happen if somebody tries to
981 turn a variable into a function call. This is here
982 because people often want to call, eg, strcmp, which
983 gdb doesn't know is a function. If gdb isn't asked for
984 it's opinion (ie. through "whatis"), it won't offer
985 it. */
987 struct type *type = value_type (called_method);
988 if (type && TYPE_CODE (type) == TYPE_CODE_PTR)
989 type = TYPE_TARGET_TYPE (type);
990 type = TYPE_TARGET_TYPE (type);
992 if (type)
994 if ((TYPE_CODE (type) == TYPE_CODE_ERROR) && expect_type)
995 return allocate_value (expect_type);
996 else
997 return allocate_value (type);
999 else
1000 error (_("Expression of type other than \"method returning ...\" used as a method"));
1003 /* Now depending on whether we found a symbol for the method,
1004 we will either call the runtime dispatcher or the method
1005 directly. */
1007 argvec[0] = called_method;
1008 argvec[1] = target;
1009 argvec[2] = value_from_longest (builtin_type_long, selector);
1010 /* User-supplied arguments. */
1011 for (tem = 0; tem < nargs; tem++)
1012 argvec[tem + 3] = evaluate_subexp_with_coercion (exp, pos, noside);
1013 argvec[tem + 3] = 0;
1015 if (gnu_runtime && (method != NULL))
1017 /* Function objc_msg_lookup returns a pointer. */
1018 deprecated_set_value_type (argvec[0],
1019 lookup_function_type (lookup_pointer_type (value_type (argvec[0]))));
1020 argvec[0] = call_function_by_hand (argvec[0], nargs + 2, argvec + 1);
1023 ret = call_function_by_hand (argvec[0], nargs + 2, argvec + 1);
1024 return ret;
1026 break;
1028 case OP_FUNCALL:
1029 (*pos) += 2;
1030 op = exp->elts[*pos].opcode;
1031 nargs = longest_to_int (exp->elts[pc + 1].longconst);
1032 /* Allocate arg vector, including space for the function to be
1033 called in argvec[0] and a terminating NULL */
1034 argvec = (struct value **) alloca (sizeof (struct value *) * (nargs + 3));
1035 if (op == STRUCTOP_MEMBER || op == STRUCTOP_MPTR)
1037 nargs++;
1038 /* First, evaluate the structure into arg2 */
1039 pc2 = (*pos)++;
1041 if (noside == EVAL_SKIP)
1042 goto nosideret;
1044 if (op == STRUCTOP_MEMBER)
1046 arg2 = evaluate_subexp_for_address (exp, pos, noside);
1048 else
1050 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1053 /* If the function is a virtual function, then the
1054 aggregate value (providing the structure) plays
1055 its part by providing the vtable. Otherwise,
1056 it is just along for the ride: call the function
1057 directly. */
1059 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1061 if (TYPE_CODE (check_typedef (value_type (arg1)))
1062 != TYPE_CODE_METHODPTR)
1063 error (_("Non-pointer-to-member value used in pointer-to-member "
1064 "construct"));
1066 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1068 struct type *method_type = check_typedef (value_type (arg1));
1069 arg1 = value_zero (method_type, not_lval);
1071 else
1072 arg1 = cplus_method_ptr_to_value (&arg2, arg1);
1074 /* Now, say which argument to start evaluating from */
1075 tem = 2;
1077 else if (op == STRUCTOP_STRUCT || op == STRUCTOP_PTR)
1079 /* Hair for method invocations */
1080 int tem2;
1082 nargs++;
1083 /* First, evaluate the structure into arg2 */
1084 pc2 = (*pos)++;
1085 tem2 = longest_to_int (exp->elts[pc2 + 1].longconst);
1086 *pos += 3 + BYTES_TO_EXP_ELEM (tem2 + 1);
1087 if (noside == EVAL_SKIP)
1088 goto nosideret;
1090 if (op == STRUCTOP_STRUCT)
1092 /* If v is a variable in a register, and the user types
1093 v.method (), this will produce an error, because v has
1094 no address.
1096 A possible way around this would be to allocate a
1097 copy of the variable on the stack, copy in the
1098 contents, call the function, and copy out the
1099 contents. I.e. convert this from call by reference
1100 to call by copy-return (or whatever it's called).
1101 However, this does not work because it is not the
1102 same: the method being called could stash a copy of
1103 the address, and then future uses through that address
1104 (after the method returns) would be expected to
1105 use the variable itself, not some copy of it. */
1106 arg2 = evaluate_subexp_for_address (exp, pos, noside);
1108 else
1110 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1112 /* Now, say which argument to start evaluating from */
1113 tem = 2;
1115 else
1117 /* Non-method function call */
1118 save_pos1 = *pos;
1119 argvec[0] = evaluate_subexp_with_coercion (exp, pos, noside);
1120 tem = 1;
1121 type = value_type (argvec[0]);
1122 if (type && TYPE_CODE (type) == TYPE_CODE_PTR)
1123 type = TYPE_TARGET_TYPE (type);
1124 if (type && TYPE_CODE (type) == TYPE_CODE_FUNC)
1126 for (; tem <= nargs && tem <= TYPE_NFIELDS (type); tem++)
1128 /* pai: FIXME This seems to be coercing arguments before
1129 * overload resolution has been done! */
1130 argvec[tem] = evaluate_subexp (TYPE_FIELD_TYPE (type, tem - 1),
1131 exp, pos, noside);
1136 /* Evaluate arguments */
1137 for (; tem <= nargs; tem++)
1139 /* Ensure that array expressions are coerced into pointer objects. */
1140 argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
1143 /* signal end of arglist */
1144 argvec[tem] = 0;
1146 if (op == STRUCTOP_STRUCT || op == STRUCTOP_PTR)
1148 int static_memfuncp;
1149 char tstr[256];
1151 /* Method invocation : stuff "this" as first parameter */
1152 argvec[1] = arg2;
1153 /* Name of method from expression */
1154 strcpy (tstr, &exp->elts[pc2 + 2].string);
1156 if (overload_resolution && (exp->language_defn->la_language == language_cplus))
1158 /* Language is C++, do some overload resolution before evaluation */
1159 struct value *valp = NULL;
1161 /* Prepare list of argument types for overload resolution */
1162 arg_types = (struct type **) alloca (nargs * (sizeof (struct type *)));
1163 for (ix = 1; ix <= nargs; ix++)
1164 arg_types[ix - 1] = value_type (argvec[ix]);
1166 (void) find_overload_match (arg_types, nargs, tstr,
1167 1 /* method */ , 0 /* strict match */ ,
1168 &arg2 /* the object */ , NULL,
1169 &valp, NULL, &static_memfuncp);
1172 argvec[1] = arg2; /* the ``this'' pointer */
1173 argvec[0] = valp; /* use the method found after overload resolution */
1175 else
1176 /* Non-C++ case -- or no overload resolution */
1178 struct value *temp = arg2;
1179 argvec[0] = value_struct_elt (&temp, argvec + 1, tstr,
1180 &static_memfuncp,
1181 op == STRUCTOP_STRUCT
1182 ? "structure" : "structure pointer");
1183 /* value_struct_elt updates temp with the correct value
1184 of the ``this'' pointer if necessary, so modify argvec[1] to
1185 reflect any ``this'' changes. */
1186 arg2 = value_from_longest (lookup_pointer_type(value_type (temp)),
1187 VALUE_ADDRESS (temp) + value_offset (temp)
1188 + value_embedded_offset (temp));
1189 argvec[1] = arg2; /* the ``this'' pointer */
1192 if (static_memfuncp)
1194 argvec[1] = argvec[0];
1195 nargs--;
1196 argvec++;
1199 else if (op == STRUCTOP_MEMBER || op == STRUCTOP_MPTR)
1201 argvec[1] = arg2;
1202 argvec[0] = arg1;
1204 else if (op == OP_VAR_VALUE)
1206 /* Non-member function being called */
1207 /* fn: This can only be done for C++ functions. A C-style function
1208 in a C++ program, for instance, does not have the fields that
1209 are expected here */
1211 if (overload_resolution && (exp->language_defn->la_language == language_cplus))
1213 /* Language is C++, do some overload resolution before evaluation */
1214 struct symbol *symp;
1216 /* Prepare list of argument types for overload resolution */
1217 arg_types = (struct type **) alloca (nargs * (sizeof (struct type *)));
1218 for (ix = 1; ix <= nargs; ix++)
1219 arg_types[ix - 1] = value_type (argvec[ix]);
1221 (void) find_overload_match (arg_types, nargs, NULL /* no need for name */ ,
1222 0 /* not method */ , 0 /* strict match */ ,
1223 NULL, exp->elts[save_pos1+2].symbol /* the function */ ,
1224 NULL, &symp, NULL);
1226 /* Now fix the expression being evaluated */
1227 exp->elts[save_pos1+2].symbol = symp;
1228 argvec[0] = evaluate_subexp_with_coercion (exp, &save_pos1, noside);
1230 else
1232 /* Not C++, or no overload resolution allowed */
1233 /* nothing to be done; argvec already correctly set up */
1236 else
1238 /* It is probably a C-style function */
1239 /* nothing to be done; argvec already correctly set up */
1242 do_call_it:
1244 if (noside == EVAL_SKIP)
1245 goto nosideret;
1246 if (argvec[0] == NULL)
1247 error (_("Cannot evaluate function -- may be inlined"));
1248 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1250 /* If the return type doesn't look like a function type, call an
1251 error. This can happen if somebody tries to turn a variable into
1252 a function call. This is here because people often want to
1253 call, eg, strcmp, which gdb doesn't know is a function. If
1254 gdb isn't asked for it's opinion (ie. through "whatis"),
1255 it won't offer it. */
1257 struct type *ftype =
1258 TYPE_TARGET_TYPE (value_type (argvec[0]));
1260 if (ftype)
1261 return allocate_value (TYPE_TARGET_TYPE (value_type (argvec[0])));
1262 else
1263 error (_("Expression of type other than \"Function returning ...\" used as function"));
1265 return call_function_by_hand (argvec[0], nargs, argvec + 1);
1266 /* pai: FIXME save value from call_function_by_hand, then adjust pc by adjust_fn_pc if +ve */
1268 case OP_F77_UNDETERMINED_ARGLIST:
1270 /* Remember that in F77, functions, substring ops and
1271 array subscript operations cannot be disambiguated
1272 at parse time. We have made all array subscript operations,
1273 substring operations as well as function calls come here
1274 and we now have to discover what the heck this thing actually was.
1275 If it is a function, we process just as if we got an OP_FUNCALL. */
1277 nargs = longest_to_int (exp->elts[pc + 1].longconst);
1278 (*pos) += 2;
1280 /* First determine the type code we are dealing with. */
1281 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1282 type = check_typedef (value_type (arg1));
1283 code = TYPE_CODE (type);
1285 if (code == TYPE_CODE_PTR)
1287 /* Fortran always passes variable to subroutines as pointer.
1288 So we need to look into its target type to see if it is
1289 array, string or function. If it is, we need to switch
1290 to the target value the original one points to. */
1291 struct type *target_type = check_typedef (TYPE_TARGET_TYPE (type));
1293 if (TYPE_CODE (target_type) == TYPE_CODE_ARRAY
1294 || TYPE_CODE (target_type) == TYPE_CODE_STRING
1295 || TYPE_CODE (target_type) == TYPE_CODE_FUNC)
1297 arg1 = value_ind (arg1);
1298 type = check_typedef (value_type (arg1));
1299 code = TYPE_CODE (type);
1303 switch (code)
1305 case TYPE_CODE_ARRAY:
1306 if (exp->elts[*pos].opcode == OP_F90_RANGE)
1307 return value_f90_subarray (arg1, exp, pos, noside);
1308 else
1309 goto multi_f77_subscript;
1311 case TYPE_CODE_STRING:
1312 if (exp->elts[*pos].opcode == OP_F90_RANGE)
1313 return value_f90_subarray (arg1, exp, pos, noside);
1314 else
1316 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
1317 return value_subscript (arg1, arg2);
1320 case TYPE_CODE_PTR:
1321 case TYPE_CODE_FUNC:
1322 /* It's a function call. */
1323 /* Allocate arg vector, including space for the function to be
1324 called in argvec[0] and a terminating NULL */
1325 argvec = (struct value **) alloca (sizeof (struct value *) * (nargs + 2));
1326 argvec[0] = arg1;
1327 tem = 1;
1328 for (; tem <= nargs; tem++)
1329 argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
1330 argvec[tem] = 0; /* signal end of arglist */
1331 goto do_call_it;
1333 default:
1334 error (_("Cannot perform substring on this type"));
1337 case OP_COMPLEX:
1338 /* We have a complex number, There should be 2 floating
1339 point numbers that compose it */
1340 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1341 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1343 return value_literal_complex (arg1, arg2, builtin_type_f_complex_s16);
1345 case STRUCTOP_STRUCT:
1346 tem = longest_to_int (exp->elts[pc + 1].longconst);
1347 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
1348 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1349 if (noside == EVAL_SKIP)
1350 goto nosideret;
1351 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1352 return value_zero (lookup_struct_elt_type (value_type (arg1),
1353 &exp->elts[pc + 2].string,
1355 lval_memory);
1356 else
1358 struct value *temp = arg1;
1359 return value_struct_elt (&temp, NULL, &exp->elts[pc + 2].string,
1360 NULL, "structure");
1363 case STRUCTOP_PTR:
1364 tem = longest_to_int (exp->elts[pc + 1].longconst);
1365 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
1366 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1367 if (noside == EVAL_SKIP)
1368 goto nosideret;
1370 /* JYG: if print object is on we need to replace the base type
1371 with rtti type in order to continue on with successful
1372 lookup of member / method only available in the rtti type. */
1374 struct type *type = value_type (arg1);
1375 struct type *real_type;
1376 int full, top, using_enc;
1378 if (objectprint && TYPE_TARGET_TYPE(type) &&
1379 (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_CLASS))
1381 real_type = value_rtti_target_type (arg1, &full, &top, &using_enc);
1382 if (real_type)
1384 if (TYPE_CODE (type) == TYPE_CODE_PTR)
1385 real_type = lookup_pointer_type (real_type);
1386 else
1387 real_type = lookup_reference_type (real_type);
1389 arg1 = value_cast (real_type, arg1);
1394 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1395 return value_zero (lookup_struct_elt_type (value_type (arg1),
1396 &exp->elts[pc + 2].string,
1398 lval_memory);
1399 else
1401 struct value *temp = arg1;
1402 return value_struct_elt (&temp, NULL, &exp->elts[pc + 2].string,
1403 NULL, "structure pointer");
1406 case STRUCTOP_MEMBER:
1407 case STRUCTOP_MPTR:
1408 if (op == STRUCTOP_MEMBER)
1409 arg1 = evaluate_subexp_for_address (exp, pos, noside);
1410 else
1411 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1413 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1415 if (noside == EVAL_SKIP)
1416 goto nosideret;
1418 type = check_typedef (value_type (arg2));
1419 switch (TYPE_CODE (type))
1421 case TYPE_CODE_METHODPTR:
1422 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1423 return value_zero (TYPE_TARGET_TYPE (type), not_lval);
1424 else
1426 arg2 = cplus_method_ptr_to_value (&arg1, arg2);
1427 gdb_assert (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR);
1428 return value_ind (arg2);
1431 case TYPE_CODE_MEMBERPTR:
1432 /* Now, convert these values to an address. */
1433 arg1 = value_cast (lookup_pointer_type (TYPE_DOMAIN_TYPE (type)),
1434 arg1);
1436 mem_offset = value_as_long (arg2);
1438 arg3 = value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
1439 value_as_long (arg1) + mem_offset);
1440 return value_ind (arg3);
1442 default:
1443 error (_("non-pointer-to-member value used in pointer-to-member construct"));
1446 case BINOP_CONCAT:
1447 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
1448 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
1449 if (noside == EVAL_SKIP)
1450 goto nosideret;
1451 if (binop_user_defined_p (op, arg1, arg2))
1452 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1453 else
1454 return value_concat (arg1, arg2);
1456 case BINOP_ASSIGN:
1457 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1458 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
1460 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
1461 return arg1;
1462 if (binop_user_defined_p (op, arg1, arg2))
1463 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1464 else
1465 return value_assign (arg1, arg2);
1467 case BINOP_ASSIGN_MODIFY:
1468 (*pos) += 2;
1469 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1470 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
1471 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
1472 return arg1;
1473 op = exp->elts[pc + 1].opcode;
1474 if (binop_user_defined_p (op, arg1, arg2))
1475 return value_x_binop (arg1, arg2, BINOP_ASSIGN_MODIFY, op, noside);
1476 else if (op == BINOP_ADD)
1477 arg2 = value_add (arg1, arg2);
1478 else if (op == BINOP_SUB)
1479 arg2 = value_sub (arg1, arg2);
1480 else
1481 arg2 = value_binop (arg1, arg2, op);
1482 return value_assign (arg1, arg2);
1484 case BINOP_ADD:
1485 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
1486 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
1487 if (noside == EVAL_SKIP)
1488 goto nosideret;
1489 if (binop_user_defined_p (op, arg1, arg2))
1490 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1491 else
1492 return value_add (arg1, arg2);
1494 case BINOP_SUB:
1495 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
1496 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
1497 if (noside == EVAL_SKIP)
1498 goto nosideret;
1499 if (binop_user_defined_p (op, arg1, arg2))
1500 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1501 else
1502 return value_sub (arg1, arg2);
1504 case BINOP_EXP:
1505 case BINOP_MUL:
1506 case BINOP_DIV:
1507 case BINOP_INTDIV:
1508 case BINOP_REM:
1509 case BINOP_MOD:
1510 case BINOP_LSH:
1511 case BINOP_RSH:
1512 case BINOP_BITWISE_AND:
1513 case BINOP_BITWISE_IOR:
1514 case BINOP_BITWISE_XOR:
1515 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1516 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1517 if (noside == EVAL_SKIP)
1518 goto nosideret;
1519 if (binop_user_defined_p (op, arg1, arg2))
1520 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1521 else if (noside == EVAL_AVOID_SIDE_EFFECTS
1522 && (op == BINOP_DIV || op == BINOP_REM || op == BINOP_MOD
1523 || op == BINOP_INTDIV))
1524 return value_zero (value_type (arg1), not_lval);
1525 else
1526 return value_binop (arg1, arg2, op);
1528 case BINOP_RANGE:
1529 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1530 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1531 if (noside == EVAL_SKIP)
1532 goto nosideret;
1533 error (_("':' operator used in invalid context"));
1535 case BINOP_SUBSCRIPT:
1536 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
1537 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
1538 if (noside == EVAL_SKIP)
1539 goto nosideret;
1540 if (binop_user_defined_p (op, arg1, arg2))
1541 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1542 else
1544 /* If the user attempts to subscript something that is not an
1545 array or pointer type (like a plain int variable for example),
1546 then report this as an error. */
1548 arg1 = coerce_ref (arg1);
1549 type = check_typedef (value_type (arg1));
1550 if (TYPE_CODE (type) != TYPE_CODE_ARRAY
1551 && TYPE_CODE (type) != TYPE_CODE_PTR)
1553 if (TYPE_NAME (type))
1554 error (_("cannot subscript something of type `%s'"),
1555 TYPE_NAME (type));
1556 else
1557 error (_("cannot subscript requested type"));
1560 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1561 return value_zero (TYPE_TARGET_TYPE (type), VALUE_LVAL (arg1));
1562 else
1563 return value_subscript (arg1, arg2);
1566 case BINOP_IN:
1567 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
1568 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
1569 if (noside == EVAL_SKIP)
1570 goto nosideret;
1571 return value_in (arg1, arg2);
1573 case MULTI_SUBSCRIPT:
1574 (*pos) += 2;
1575 nargs = longest_to_int (exp->elts[pc + 1].longconst);
1576 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
1577 while (nargs-- > 0)
1579 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
1580 /* FIXME: EVAL_SKIP handling may not be correct. */
1581 if (noside == EVAL_SKIP)
1583 if (nargs > 0)
1585 continue;
1587 else
1589 goto nosideret;
1592 /* FIXME: EVAL_AVOID_SIDE_EFFECTS handling may not be correct. */
1593 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1595 /* If the user attempts to subscript something that has no target
1596 type (like a plain int variable for example), then report this
1597 as an error. */
1599 type = TYPE_TARGET_TYPE (check_typedef (value_type (arg1)));
1600 if (type != NULL)
1602 arg1 = value_zero (type, VALUE_LVAL (arg1));
1603 noside = EVAL_SKIP;
1604 continue;
1606 else
1608 error (_("cannot subscript something of type `%s'"),
1609 TYPE_NAME (value_type (arg1)));
1613 if (binop_user_defined_p (op, arg1, arg2))
1615 arg1 = value_x_binop (arg1, arg2, op, OP_NULL, noside);
1617 else
1619 arg1 = value_subscript (arg1, arg2);
1622 return (arg1);
1624 multi_f77_subscript:
1626 int subscript_array[MAX_FORTRAN_DIMS];
1627 int array_size_array[MAX_FORTRAN_DIMS];
1628 int ndimensions = 1, i;
1629 struct type *tmp_type;
1630 int offset_item; /* The array offset where the item lives */
1632 if (nargs > MAX_FORTRAN_DIMS)
1633 error (_("Too many subscripts for F77 (%d Max)"), MAX_FORTRAN_DIMS);
1635 tmp_type = check_typedef (value_type (arg1));
1636 ndimensions = calc_f77_array_dims (type);
1638 if (nargs != ndimensions)
1639 error (_("Wrong number of subscripts"));
1641 /* Now that we know we have a legal array subscript expression
1642 let us actually find out where this element exists in the array. */
1644 offset_item = 0;
1645 /* Take array indices left to right */
1646 for (i = 0; i < nargs; i++)
1648 /* Evaluate each subscript, It must be a legal integer in F77 */
1649 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
1651 /* Fill in the subscript and array size arrays */
1653 subscript_array[i] = value_as_long (arg2);
1656 /* Internal type of array is arranged right to left */
1657 for (i = 0; i < nargs; i++)
1659 retcode = f77_get_dynamic_upperbound (tmp_type, &upper);
1660 if (retcode == BOUND_FETCH_ERROR)
1661 error (_("Cannot obtain dynamic upper bound"));
1663 retcode = f77_get_dynamic_lowerbound (tmp_type, &lower);
1664 if (retcode == BOUND_FETCH_ERROR)
1665 error (_("Cannot obtain dynamic lower bound"));
1667 array_size_array[nargs - i - 1] = upper - lower + 1;
1669 /* Zero-normalize subscripts so that offsetting will work. */
1671 subscript_array[nargs - i - 1] -= lower;
1673 /* If we are at the bottom of a multidimensional
1674 array type then keep a ptr to the last ARRAY
1675 type around for use when calling value_subscript()
1676 below. This is done because we pretend to value_subscript
1677 that we actually have a one-dimensional array
1678 of base element type that we apply a simple
1679 offset to. */
1681 if (i < nargs - 1)
1682 tmp_type = check_typedef (TYPE_TARGET_TYPE (tmp_type));
1685 /* Now let us calculate the offset for this item */
1687 offset_item = subscript_array[ndimensions - 1];
1689 for (i = ndimensions - 1; i > 0; --i)
1690 offset_item =
1691 array_size_array[i - 1] * offset_item + subscript_array[i - 1];
1693 /* Construct a value node with the value of the offset */
1695 arg2 = value_from_longest (builtin_type_f_integer, offset_item);
1697 /* Let us now play a dirty trick: we will take arg1
1698 which is a value node pointing to the topmost level
1699 of the multidimensional array-set and pretend
1700 that it is actually a array of the final element
1701 type, this will ensure that value_subscript()
1702 returns the correct type value */
1704 deprecated_set_value_type (arg1, tmp_type);
1705 return value_ind (value_add (value_coerce_array (arg1), arg2));
1708 case BINOP_LOGICAL_AND:
1709 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1710 if (noside == EVAL_SKIP)
1712 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1713 goto nosideret;
1716 oldpos = *pos;
1717 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
1718 *pos = oldpos;
1720 if (binop_user_defined_p (op, arg1, arg2))
1722 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1723 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1725 else
1727 tem = value_logical_not (arg1);
1728 arg2 = evaluate_subexp (NULL_TYPE, exp, pos,
1729 (tem ? EVAL_SKIP : noside));
1730 return value_from_longest (LA_BOOL_TYPE,
1731 (LONGEST) (!tem && !value_logical_not (arg2)));
1734 case BINOP_LOGICAL_OR:
1735 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1736 if (noside == EVAL_SKIP)
1738 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1739 goto nosideret;
1742 oldpos = *pos;
1743 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
1744 *pos = oldpos;
1746 if (binop_user_defined_p (op, arg1, arg2))
1748 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1749 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1751 else
1753 tem = value_logical_not (arg1);
1754 arg2 = evaluate_subexp (NULL_TYPE, exp, pos,
1755 (!tem ? EVAL_SKIP : noside));
1756 return value_from_longest (LA_BOOL_TYPE,
1757 (LONGEST) (!tem || !value_logical_not (arg2)));
1760 case BINOP_EQUAL:
1761 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1762 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
1763 if (noside == EVAL_SKIP)
1764 goto nosideret;
1765 if (binop_user_defined_p (op, arg1, arg2))
1767 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1769 else
1771 tem = value_equal (arg1, arg2);
1772 return value_from_longest (LA_BOOL_TYPE, (LONGEST) tem);
1775 case BINOP_NOTEQUAL:
1776 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1777 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
1778 if (noside == EVAL_SKIP)
1779 goto nosideret;
1780 if (binop_user_defined_p (op, arg1, arg2))
1782 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1784 else
1786 tem = value_equal (arg1, arg2);
1787 return value_from_longest (LA_BOOL_TYPE, (LONGEST) ! tem);
1790 case BINOP_LESS:
1791 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1792 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
1793 if (noside == EVAL_SKIP)
1794 goto nosideret;
1795 if (binop_user_defined_p (op, arg1, arg2))
1797 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1799 else
1801 tem = value_less (arg1, arg2);
1802 return value_from_longest (LA_BOOL_TYPE, (LONGEST) tem);
1805 case BINOP_GTR:
1806 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1807 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
1808 if (noside == EVAL_SKIP)
1809 goto nosideret;
1810 if (binop_user_defined_p (op, arg1, arg2))
1812 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1814 else
1816 tem = value_less (arg2, arg1);
1817 return value_from_longest (LA_BOOL_TYPE, (LONGEST) tem);
1820 case BINOP_GEQ:
1821 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1822 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
1823 if (noside == EVAL_SKIP)
1824 goto nosideret;
1825 if (binop_user_defined_p (op, arg1, arg2))
1827 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1829 else
1831 tem = value_less (arg2, arg1) || value_equal (arg1, arg2);
1832 return value_from_longest (LA_BOOL_TYPE, (LONGEST) tem);
1835 case BINOP_LEQ:
1836 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1837 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
1838 if (noside == EVAL_SKIP)
1839 goto nosideret;
1840 if (binop_user_defined_p (op, arg1, arg2))
1842 return value_x_binop (arg1, arg2, op, OP_NULL, noside);
1844 else
1846 tem = value_less (arg1, arg2) || value_equal (arg1, arg2);
1847 return value_from_longest (LA_BOOL_TYPE, (LONGEST) tem);
1850 case BINOP_REPEAT:
1851 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1852 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1853 if (noside == EVAL_SKIP)
1854 goto nosideret;
1855 type = check_typedef (value_type (arg2));
1856 if (TYPE_CODE (type) != TYPE_CODE_INT)
1857 error (_("Non-integral right operand for \"@\" operator."));
1858 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1860 return allocate_repeat_value (value_type (arg1),
1861 longest_to_int (value_as_long (arg2)));
1863 else
1864 return value_repeat (arg1, longest_to_int (value_as_long (arg2)));
1866 case BINOP_COMMA:
1867 evaluate_subexp (NULL_TYPE, exp, pos, noside);
1868 return evaluate_subexp (NULL_TYPE, exp, pos, noside);
1870 case UNOP_PLUS:
1871 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1872 if (noside == EVAL_SKIP)
1873 goto nosideret;
1874 if (unop_user_defined_p (op, arg1))
1875 return value_x_unop (arg1, op, noside);
1876 else
1877 return value_pos (arg1);
1879 case UNOP_NEG:
1880 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1881 if (noside == EVAL_SKIP)
1882 goto nosideret;
1883 if (unop_user_defined_p (op, arg1))
1884 return value_x_unop (arg1, op, noside);
1885 else
1886 return value_neg (arg1);
1888 case UNOP_COMPLEMENT:
1889 /* C++: check for and handle destructor names. */
1890 op = exp->elts[*pos].opcode;
1892 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1893 if (noside == EVAL_SKIP)
1894 goto nosideret;
1895 if (unop_user_defined_p (UNOP_COMPLEMENT, arg1))
1896 return value_x_unop (arg1, UNOP_COMPLEMENT, noside);
1897 else
1898 return value_complement (arg1);
1900 case UNOP_LOGICAL_NOT:
1901 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
1902 if (noside == EVAL_SKIP)
1903 goto nosideret;
1904 if (unop_user_defined_p (op, arg1))
1905 return value_x_unop (arg1, op, noside);
1906 else
1907 return value_from_longest (LA_BOOL_TYPE,
1908 (LONGEST) value_logical_not (arg1));
1910 case UNOP_IND:
1911 if (expect_type && TYPE_CODE (expect_type) == TYPE_CODE_PTR)
1912 expect_type = TYPE_TARGET_TYPE (check_typedef (expect_type));
1913 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
1914 type = check_typedef (value_type (arg1));
1915 if (TYPE_CODE (type) == TYPE_CODE_METHODPTR
1916 || TYPE_CODE (type) == TYPE_CODE_MEMBERPTR)
1917 error (_("Attempt to dereference pointer to member without an object"));
1918 if (noside == EVAL_SKIP)
1919 goto nosideret;
1920 if (unop_user_defined_p (op, arg1))
1921 return value_x_unop (arg1, op, noside);
1922 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
1924 type = check_typedef (value_type (arg1));
1925 if (TYPE_CODE (type) == TYPE_CODE_PTR
1926 || TYPE_CODE (type) == TYPE_CODE_REF
1927 /* In C you can dereference an array to get the 1st elt. */
1928 || TYPE_CODE (type) == TYPE_CODE_ARRAY
1930 return value_zero (TYPE_TARGET_TYPE (type),
1931 lval_memory);
1932 else if (TYPE_CODE (type) == TYPE_CODE_INT)
1933 /* GDB allows dereferencing an int. */
1934 return value_zero (builtin_type_int, lval_memory);
1935 else
1936 error (_("Attempt to take contents of a non-pointer value."));
1938 return value_ind (arg1);
1940 case UNOP_ADDR:
1941 /* C++: check for and handle pointer to members. */
1943 op = exp->elts[*pos].opcode;
1945 if (noside == EVAL_SKIP)
1947 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
1948 goto nosideret;
1950 else
1952 struct value *retvalp = evaluate_subexp_for_address (exp, pos, noside);
1953 return retvalp;
1956 case UNOP_SIZEOF:
1957 if (noside == EVAL_SKIP)
1959 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
1960 goto nosideret;
1962 return evaluate_subexp_for_sizeof (exp, pos);
1964 case UNOP_CAST:
1965 (*pos) += 2;
1966 type = exp->elts[pc + 1].type;
1967 arg1 = evaluate_subexp (type, exp, pos, noside);
1968 if (noside == EVAL_SKIP)
1969 goto nosideret;
1970 if (type != value_type (arg1))
1971 arg1 = value_cast (type, arg1);
1972 return arg1;
1974 case UNOP_MEMVAL:
1975 (*pos) += 2;
1976 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
1977 if (noside == EVAL_SKIP)
1978 goto nosideret;
1979 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1980 return value_zero (exp->elts[pc + 1].type, lval_memory);
1981 else
1982 return value_at_lazy (exp->elts[pc + 1].type,
1983 value_as_address (arg1));
1985 case UNOP_MEMVAL_TLS:
1986 (*pos) += 3;
1987 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
1988 if (noside == EVAL_SKIP)
1989 goto nosideret;
1990 if (noside == EVAL_AVOID_SIDE_EFFECTS)
1991 return value_zero (exp->elts[pc + 2].type, lval_memory);
1992 else
1994 CORE_ADDR tls_addr;
1995 tls_addr = target_translate_tls_address (exp->elts[pc + 1].objfile,
1996 value_as_address (arg1));
1997 return value_at_lazy (exp->elts[pc + 2].type, tls_addr);
2000 case UNOP_PREINCREMENT:
2001 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2002 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2003 return arg1;
2004 else if (unop_user_defined_p (op, arg1))
2006 return value_x_unop (arg1, op, noside);
2008 else
2010 arg2 = value_add (arg1, value_from_longest (builtin_type_char,
2011 (LONGEST) 1));
2012 return value_assign (arg1, arg2);
2015 case UNOP_PREDECREMENT:
2016 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2017 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2018 return arg1;
2019 else if (unop_user_defined_p (op, arg1))
2021 return value_x_unop (arg1, op, noside);
2023 else
2025 arg2 = value_sub (arg1, value_from_longest (builtin_type_char,
2026 (LONGEST) 1));
2027 return value_assign (arg1, arg2);
2030 case UNOP_POSTINCREMENT:
2031 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2032 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2033 return arg1;
2034 else if (unop_user_defined_p (op, arg1))
2036 return value_x_unop (arg1, op, noside);
2038 else
2040 arg2 = value_add (arg1, value_from_longest (builtin_type_char,
2041 (LONGEST) 1));
2042 value_assign (arg1, arg2);
2043 return arg1;
2046 case UNOP_POSTDECREMENT:
2047 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
2048 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
2049 return arg1;
2050 else if (unop_user_defined_p (op, arg1))
2052 return value_x_unop (arg1, op, noside);
2054 else
2056 arg2 = value_sub (arg1, value_from_longest (builtin_type_char,
2057 (LONGEST) 1));
2058 value_assign (arg1, arg2);
2059 return arg1;
2062 case OP_THIS:
2063 (*pos) += 1;
2064 return value_of_this (1);
2066 case OP_OBJC_SELF:
2067 (*pos) += 1;
2068 return value_of_local ("self", 1);
2070 case OP_TYPE:
2071 /* The value is not supposed to be used. This is here to make it
2072 easier to accommodate expressions that contain types. */
2073 (*pos) += 2;
2074 if (noside == EVAL_SKIP)
2075 goto nosideret;
2076 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
2077 return allocate_value (exp->elts[pc + 1].type);
2078 else
2079 error (_("Attempt to use a type name as an expression"));
2081 default:
2082 /* Removing this case and compiling with gcc -Wall reveals that
2083 a lot of cases are hitting this case. Some of these should
2084 probably be removed from expression.h; others are legitimate
2085 expressions which are (apparently) not fully implemented.
2087 If there are any cases landing here which mean a user error,
2088 then they should be separate cases, with more descriptive
2089 error messages. */
2091 error (_("\
2092 GDB does not (yet) know how to evaluate that kind of expression"));
2095 nosideret:
2096 return value_from_longest (builtin_type_long, (LONGEST) 1);
2099 /* Evaluate a subexpression of EXP, at index *POS,
2100 and return the address of that subexpression.
2101 Advance *POS over the subexpression.
2102 If the subexpression isn't an lvalue, get an error.
2103 NOSIDE may be EVAL_AVOID_SIDE_EFFECTS;
2104 then only the type of the result need be correct. */
2106 static struct value *
2107 evaluate_subexp_for_address (struct expression *exp, int *pos,
2108 enum noside noside)
2110 enum exp_opcode op;
2111 int pc;
2112 struct symbol *var;
2113 struct value *x;
2114 int tem;
2116 pc = (*pos);
2117 op = exp->elts[pc].opcode;
2119 switch (op)
2121 case UNOP_IND:
2122 (*pos)++;
2123 x = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2125 /* We can't optimize out "&*" if there's a user-defined operator*. */
2126 if (unop_user_defined_p (op, x))
2128 x = value_x_unop (x, op, noside);
2129 goto default_case_after_eval;
2132 return x;
2134 case UNOP_MEMVAL:
2135 (*pos) += 3;
2136 return value_cast (lookup_pointer_type (exp->elts[pc + 1].type),
2137 evaluate_subexp (NULL_TYPE, exp, pos, noside));
2139 case OP_VAR_VALUE:
2140 var = exp->elts[pc + 2].symbol;
2142 /* C++: The "address" of a reference should yield the address
2143 * of the object pointed to. Let value_addr() deal with it. */
2144 if (TYPE_CODE (SYMBOL_TYPE (var)) == TYPE_CODE_REF)
2145 goto default_case;
2147 (*pos) += 4;
2148 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2150 struct type *type =
2151 lookup_pointer_type (SYMBOL_TYPE (var));
2152 enum address_class sym_class = SYMBOL_CLASS (var);
2154 if (sym_class == LOC_CONST
2155 || sym_class == LOC_CONST_BYTES
2156 || sym_class == LOC_REGISTER
2157 || sym_class == LOC_REGPARM)
2158 error (_("Attempt to take address of register or constant."));
2160 return
2161 value_zero (type, not_lval);
2163 else if (symbol_read_needs_frame (var))
2164 return
2165 locate_var_value
2166 (var,
2167 block_innermost_frame (exp->elts[pc + 1].block));
2168 else
2169 return locate_var_value (var, NULL);
2171 case OP_SCOPE:
2172 tem = longest_to_int (exp->elts[pc + 2].longconst);
2173 (*pos) += 5 + BYTES_TO_EXP_ELEM (tem + 1);
2174 x = value_aggregate_elt (exp->elts[pc + 1].type,
2175 &exp->elts[pc + 3].string,
2176 1, noside);
2177 if (x == NULL)
2178 error (_("There is no field named %s"), &exp->elts[pc + 3].string);
2179 return x;
2181 default:
2182 default_case:
2183 x = evaluate_subexp (NULL_TYPE, exp, pos, noside);
2184 default_case_after_eval:
2185 if (noside == EVAL_AVOID_SIDE_EFFECTS)
2187 struct type *type = check_typedef (value_type (x));
2189 if (VALUE_LVAL (x) == lval_memory)
2190 return value_zero (lookup_pointer_type (value_type (x)),
2191 not_lval);
2192 else if (TYPE_CODE (type) == TYPE_CODE_REF)
2193 return value_zero (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2194 not_lval);
2195 else
2196 error (_("Attempt to take address of non-lval"));
2198 return value_addr (x);
2202 /* Evaluate like `evaluate_subexp' except coercing arrays to pointers.
2203 When used in contexts where arrays will be coerced anyway, this is
2204 equivalent to `evaluate_subexp' but much faster because it avoids
2205 actually fetching array contents (perhaps obsolete now that we have
2206 value_lazy()).
2208 Note that we currently only do the coercion for C expressions, where
2209 arrays are zero based and the coercion is correct. For other languages,
2210 with nonzero based arrays, coercion loses. Use CAST_IS_CONVERSION
2211 to decide if coercion is appropriate.
2215 struct value *
2216 evaluate_subexp_with_coercion (struct expression *exp,
2217 int *pos, enum noside noside)
2219 enum exp_opcode op;
2220 int pc;
2221 struct value *val;
2222 struct symbol *var;
2224 pc = (*pos);
2225 op = exp->elts[pc].opcode;
2227 switch (op)
2229 case OP_VAR_VALUE:
2230 var = exp->elts[pc + 2].symbol;
2231 if (TYPE_CODE (check_typedef (SYMBOL_TYPE (var))) == TYPE_CODE_ARRAY
2232 && CAST_IS_CONVERSION)
2234 (*pos) += 4;
2235 val =
2236 locate_var_value
2237 (var, block_innermost_frame (exp->elts[pc + 1].block));
2238 return value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (check_typedef (SYMBOL_TYPE (var)))),
2239 val);
2241 /* FALLTHROUGH */
2243 default:
2244 return evaluate_subexp (NULL_TYPE, exp, pos, noside);
2248 /* Evaluate a subexpression of EXP, at index *POS,
2249 and return a value for the size of that subexpression.
2250 Advance *POS over the subexpression. */
2252 static struct value *
2253 evaluate_subexp_for_sizeof (struct expression *exp, int *pos)
2255 enum exp_opcode op;
2256 int pc;
2257 struct type *type;
2258 struct value *val;
2260 pc = (*pos);
2261 op = exp->elts[pc].opcode;
2263 switch (op)
2265 /* This case is handled specially
2266 so that we avoid creating a value for the result type.
2267 If the result type is very big, it's desirable not to
2268 create a value unnecessarily. */
2269 case UNOP_IND:
2270 (*pos)++;
2271 val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2272 type = check_typedef (value_type (val));
2273 if (TYPE_CODE (type) != TYPE_CODE_PTR
2274 && TYPE_CODE (type) != TYPE_CODE_REF
2275 && TYPE_CODE (type) != TYPE_CODE_ARRAY)
2276 error (_("Attempt to take contents of a non-pointer value."));
2277 type = check_typedef (TYPE_TARGET_TYPE (type));
2278 return value_from_longest (builtin_type_int, (LONGEST)
2279 TYPE_LENGTH (type));
2281 case UNOP_MEMVAL:
2282 (*pos) += 3;
2283 type = check_typedef (exp->elts[pc + 1].type);
2284 return value_from_longest (builtin_type_int,
2285 (LONGEST) TYPE_LENGTH (type));
2287 case OP_VAR_VALUE:
2288 (*pos) += 4;
2289 type = check_typedef (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
2290 return
2291 value_from_longest (builtin_type_int, (LONGEST) TYPE_LENGTH (type));
2293 default:
2294 val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
2295 return value_from_longest (builtin_type_int,
2296 (LONGEST) TYPE_LENGTH (value_type (val)));
2300 /* Parse a type expression in the string [P..P+LENGTH). */
2302 struct type *
2303 parse_and_eval_type (char *p, int length)
2305 char *tmp = (char *) alloca (length + 4);
2306 struct expression *expr;
2307 tmp[0] = '(';
2308 memcpy (tmp + 1, p, length);
2309 tmp[length + 1] = ')';
2310 tmp[length + 2] = '0';
2311 tmp[length + 3] = '\0';
2312 expr = parse_expression (tmp);
2313 if (expr->elts[0].opcode != UNOP_CAST)
2314 error (_("Internal error in eval_type."));
2315 return expr->elts[1].type;
2319 calc_f77_array_dims (struct type *array_type)
2321 int ndimen = 1;
2322 struct type *tmp_type;
2324 if ((TYPE_CODE (array_type) != TYPE_CODE_ARRAY))
2325 error (_("Can't get dimensions for a non-array type"));
2327 tmp_type = array_type;
2329 while ((tmp_type = TYPE_TARGET_TYPE (tmp_type)))
2331 if (TYPE_CODE (tmp_type) == TYPE_CODE_ARRAY)
2332 ++ndimen;
2334 return ndimen;