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