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