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