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