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