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