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