Update copyright year range in all GDB files
[external/binutils.git] / gdb / parse.c
1 /* Parse expressions for GDB.
2
3    Copyright (C) 1986-2018 Free Software Foundation, Inc.
4
5    Modified from expread.y by the Department of Computer Science at the
6    State University of New York at Buffalo, 1991.
7
8    This file is part of GDB.
9
10    This program is free software; you can redistribute it and/or modify
11    it under the terms of the GNU General Public License as published by
12    the Free Software Foundation; either version 3 of the License, or
13    (at your option) any later version.
14
15    This program is distributed in the hope that it will be useful,
16    but WITHOUT ANY WARRANTY; without even the implied warranty of
17    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18    GNU General Public License for more details.
19
20    You should have received a copy of the GNU General Public License
21    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
22
23 /* Parse an expression from text in a string,
24    and return the result as a struct expression pointer.
25    That structure contains arithmetic operations in reverse polish,
26    with constants represented by operations that are followed by special data.
27    See expression.h for the details of the format.
28    What is important here is that it can be built up sequentially
29    during the process of parsing; the lower levels of the tree always
30    come first in the result.  */
31
32 #include "defs.h"
33 #include <ctype.h>
34 #include "arch-utils.h"
35 #include "symtab.h"
36 #include "gdbtypes.h"
37 #include "frame.h"
38 #include "expression.h"
39 #include "value.h"
40 #include "command.h"
41 #include "language.h"
42 #include "f-lang.h"
43 #include "parser-defs.h"
44 #include "gdbcmd.h"
45 #include "symfile.h"            /* for overlay functions */
46 #include "inferior.h"
47 #include "target-float.h"
48 #include "block.h"
49 #include "source.h"
50 #include "objfiles.h"
51 #include "user-regs.h"
52 #include <algorithm>
53 #include "common/gdb_optional.h"
54
55 /* Standard set of definitions for printing, dumping, prefixifying,
56  * and evaluating expressions.  */
57
58 const struct exp_descriptor exp_descriptor_standard = 
59   {
60     print_subexp_standard,
61     operator_length_standard,
62     operator_check_standard,
63     op_name_standard,
64     dump_subexp_body_standard,
65     evaluate_subexp_standard
66   };
67 \f
68 /* Global variables declared in parser-defs.h (and commented there).  */
69 const struct block *expression_context_block;
70 CORE_ADDR expression_context_pc;
71 const struct block *innermost_block;
72 int arglist_len;
73 static struct type_stack type_stack;
74 const char *lexptr;
75 const char *prev_lexptr;
76 int paren_depth;
77 int comma_terminates;
78
79 /* True if parsing an expression to attempt completion.  */
80 int parse_completion;
81
82 /* The index of the last struct expression directly before a '.' or
83    '->'.  This is set when parsing and is only used when completing a
84    field name.  It is -1 if no dereference operation was found.  */
85 static int expout_last_struct = -1;
86
87 /* If we are completing a tagged type name, this will be nonzero.  */
88 static enum type_code expout_tag_completion_type = TYPE_CODE_UNDEF;
89
90 /* The token for tagged type name completion.  */
91 static char *expout_completion_name;
92
93 \f
94 static unsigned int expressiondebug = 0;
95 static void
96 show_expressiondebug (struct ui_file *file, int from_tty,
97                       struct cmd_list_element *c, const char *value)
98 {
99   fprintf_filtered (file, _("Expression debugging is %s.\n"), value);
100 }
101
102
103 /* Non-zero if an expression parser should set yydebug.  */
104 int parser_debug;
105
106 static void
107 show_parserdebug (struct ui_file *file, int from_tty,
108                   struct cmd_list_element *c, const char *value)
109 {
110   fprintf_filtered (file, _("Parser debugging is %s.\n"), value);
111 }
112
113
114 static int prefixify_subexp (struct expression *, struct expression *, int,
115                              int);
116
117 static expression_up parse_exp_in_context (const char **, CORE_ADDR,
118                                            const struct block *, int,
119                                            int, int *);
120 static expression_up parse_exp_in_context_1 (const char **, CORE_ADDR,
121                                              const struct block *, int,
122                                              int, int *);
123
124 /* Data structure for saving values of arglist_len for function calls whose
125    arguments contain other function calls.  */
126
127 static std::vector<int> *funcall_chain;
128
129 /* Begin counting arguments for a function call,
130    saving the data about any containing call.  */
131
132 void
133 start_arglist (void)
134 {
135   funcall_chain->push_back (arglist_len);
136   arglist_len = 0;
137 }
138
139 /* Return the number of arguments in a function call just terminated,
140    and restore the data for the containing function call.  */
141
142 int
143 end_arglist (void)
144 {
145   int val = arglist_len;
146   arglist_len = funcall_chain->back ();
147   funcall_chain->pop_back ();
148   return val;
149 }
150
151 \f
152
153 /* See definition in parser-defs.h.  */
154
155 parser_state::parser_state (size_t initial_size,
156                             const struct language_defn *lang,
157                             struct gdbarch *gdbarch)
158   : expout_size (initial_size),
159     expout (XNEWVAR (expression,
160                      (sizeof (expression)
161                       + EXP_ELEM_TO_BYTES (expout_size)))),
162     expout_ptr (0)
163 {
164   expout->language_defn = lang;
165   expout->gdbarch = gdbarch;
166 }
167
168 expression_up
169 parser_state::release ()
170 {
171   /* Record the actual number of expression elements, and then
172      reallocate the expression memory so that we free up any
173      excess elements.  */
174
175   expout->nelts = expout_ptr;
176   expout.reset (XRESIZEVAR (expression, expout.release (),
177                             (sizeof (expression)
178                              + EXP_ELEM_TO_BYTES (expout_ptr))));
179
180   return std::move (expout);
181 }
182
183 /* This page contains the functions for adding data to the struct expression
184    being constructed.  */
185
186 /* Add one element to the end of the expression.  */
187
188 /* To avoid a bug in the Sun 4 compiler, we pass things that can fit into
189    a register through here.  */
190
191 static void
192 write_exp_elt (struct parser_state *ps, const union exp_element *expelt)
193 {
194   if (ps->expout_ptr >= ps->expout_size)
195     {
196       ps->expout_size *= 2;
197       ps->expout.reset (XRESIZEVAR (expression, ps->expout.release (),
198                                     (sizeof (expression)
199                                      + EXP_ELEM_TO_BYTES (ps->expout_size))));
200     }
201   ps->expout->elts[ps->expout_ptr++] = *expelt;
202 }
203
204 void
205 write_exp_elt_opcode (struct parser_state *ps, enum exp_opcode expelt)
206 {
207   union exp_element tmp;
208
209   memset (&tmp, 0, sizeof (union exp_element));
210   tmp.opcode = expelt;
211   write_exp_elt (ps, &tmp);
212 }
213
214 void
215 write_exp_elt_sym (struct parser_state *ps, struct symbol *expelt)
216 {
217   union exp_element tmp;
218
219   memset (&tmp, 0, sizeof (union exp_element));
220   tmp.symbol = expelt;
221   write_exp_elt (ps, &tmp);
222 }
223
224 void
225 write_exp_elt_msym (struct parser_state *ps, minimal_symbol *expelt)
226 {
227   union exp_element tmp;
228
229   memset (&tmp, 0, sizeof (union exp_element));
230   tmp.msymbol = expelt;
231   write_exp_elt (ps, &tmp);
232 }
233
234 void
235 write_exp_elt_block (struct parser_state *ps, const struct block *b)
236 {
237   union exp_element tmp;
238
239   memset (&tmp, 0, sizeof (union exp_element));
240   tmp.block = b;
241   write_exp_elt (ps, &tmp);
242 }
243
244 void
245 write_exp_elt_objfile (struct parser_state *ps, struct objfile *objfile)
246 {
247   union exp_element tmp;
248
249   memset (&tmp, 0, sizeof (union exp_element));
250   tmp.objfile = objfile;
251   write_exp_elt (ps, &tmp);
252 }
253
254 void
255 write_exp_elt_longcst (struct parser_state *ps, LONGEST expelt)
256 {
257   union exp_element tmp;
258
259   memset (&tmp, 0, sizeof (union exp_element));
260   tmp.longconst = expelt;
261   write_exp_elt (ps, &tmp);
262 }
263
264 void
265 write_exp_elt_floatcst (struct parser_state *ps, const gdb_byte expelt[16])
266 {
267   union exp_element tmp;
268   int index;
269
270   for (index = 0; index < 16; index++)
271     tmp.floatconst[index] = expelt[index];
272
273   write_exp_elt (ps, &tmp);
274 }
275
276 void
277 write_exp_elt_type (struct parser_state *ps, struct type *expelt)
278 {
279   union exp_element tmp;
280
281   memset (&tmp, 0, sizeof (union exp_element));
282   tmp.type = expelt;
283   write_exp_elt (ps, &tmp);
284 }
285
286 void
287 write_exp_elt_intern (struct parser_state *ps, struct internalvar *expelt)
288 {
289   union exp_element tmp;
290
291   memset (&tmp, 0, sizeof (union exp_element));
292   tmp.internalvar = expelt;
293   write_exp_elt (ps, &tmp);
294 }
295
296 /* Add a string constant to the end of the expression.
297
298    String constants are stored by first writing an expression element
299    that contains the length of the string, then stuffing the string
300    constant itself into however many expression elements are needed
301    to hold it, and then writing another expression element that contains
302    the length of the string.  I.e. an expression element at each end of
303    the string records the string length, so you can skip over the 
304    expression elements containing the actual string bytes from either
305    end of the string.  Note that this also allows gdb to handle
306    strings with embedded null bytes, as is required for some languages.
307
308    Don't be fooled by the fact that the string is null byte terminated,
309    this is strictly for the convenience of debugging gdb itself.
310    Gdb does not depend up the string being null terminated, since the
311    actual length is recorded in expression elements at each end of the
312    string.  The null byte is taken into consideration when computing how
313    many expression elements are required to hold the string constant, of
314    course.  */
315
316
317 void
318 write_exp_string (struct parser_state *ps, struct stoken str)
319 {
320   int len = str.length;
321   size_t lenelt;
322   char *strdata;
323
324   /* Compute the number of expression elements required to hold the string
325      (including a null byte terminator), along with one expression element
326      at each end to record the actual string length (not including the
327      null byte terminator).  */
328
329   lenelt = 2 + BYTES_TO_EXP_ELEM (len + 1);
330
331   increase_expout_size (ps, lenelt);
332
333   /* Write the leading length expression element (which advances the current
334      expression element index), then write the string constant followed by a
335      terminating null byte, and then write the trailing length expression
336      element.  */
337
338   write_exp_elt_longcst (ps, (LONGEST) len);
339   strdata = (char *) &ps->expout->elts[ps->expout_ptr];
340   memcpy (strdata, str.ptr, len);
341   *(strdata + len) = '\0';
342   ps->expout_ptr += lenelt - 2;
343   write_exp_elt_longcst (ps, (LONGEST) len);
344 }
345
346 /* Add a vector of string constants to the end of the expression.
347
348    This adds an OP_STRING operation, but encodes the contents
349    differently from write_exp_string.  The language is expected to
350    handle evaluation of this expression itself.
351    
352    After the usual OP_STRING header, TYPE is written into the
353    expression as a long constant.  The interpretation of this field is
354    up to the language evaluator.
355    
356    Next, each string in VEC is written.  The length is written as a
357    long constant, followed by the contents of the string.  */
358
359 void
360 write_exp_string_vector (struct parser_state *ps, int type,
361                          struct stoken_vector *vec)
362 {
363   int i, len;
364   size_t n_slots;
365
366   /* Compute the size.  We compute the size in number of slots to
367      avoid issues with string padding.  */
368   n_slots = 0;
369   for (i = 0; i < vec->len; ++i)
370     {
371       /* One slot for the length of this element, plus the number of
372          slots needed for this string.  */
373       n_slots += 1 + BYTES_TO_EXP_ELEM (vec->tokens[i].length);
374     }
375
376   /* One more slot for the type of the string.  */
377   ++n_slots;
378
379   /* Now compute a phony string length.  */
380   len = EXP_ELEM_TO_BYTES (n_slots) - 1;
381
382   n_slots += 4;
383   increase_expout_size (ps, n_slots);
384
385   write_exp_elt_opcode (ps, OP_STRING);
386   write_exp_elt_longcst (ps, len);
387   write_exp_elt_longcst (ps, type);
388
389   for (i = 0; i < vec->len; ++i)
390     {
391       write_exp_elt_longcst (ps, vec->tokens[i].length);
392       memcpy (&ps->expout->elts[ps->expout_ptr], vec->tokens[i].ptr,
393               vec->tokens[i].length);
394       ps->expout_ptr += BYTES_TO_EXP_ELEM (vec->tokens[i].length);
395     }
396
397   write_exp_elt_longcst (ps, len);
398   write_exp_elt_opcode (ps, OP_STRING);
399 }
400
401 /* Add a bitstring constant to the end of the expression.
402
403    Bitstring constants are stored by first writing an expression element
404    that contains the length of the bitstring (in bits), then stuffing the
405    bitstring constant itself into however many expression elements are
406    needed to hold it, and then writing another expression element that
407    contains the length of the bitstring.  I.e. an expression element at
408    each end of the bitstring records the bitstring length, so you can skip
409    over the expression elements containing the actual bitstring bytes from
410    either end of the bitstring.  */
411
412 void
413 write_exp_bitstring (struct parser_state *ps, struct stoken str)
414 {
415   int bits = str.length;        /* length in bits */
416   int len = (bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
417   size_t lenelt;
418   char *strdata;
419
420   /* Compute the number of expression elements required to hold the bitstring,
421      along with one expression element at each end to record the actual
422      bitstring length in bits.  */
423
424   lenelt = 2 + BYTES_TO_EXP_ELEM (len);
425
426   increase_expout_size (ps, lenelt);
427
428   /* Write the leading length expression element (which advances the current
429      expression element index), then write the bitstring constant, and then
430      write the trailing length expression element.  */
431
432   write_exp_elt_longcst (ps, (LONGEST) bits);
433   strdata = (char *) &ps->expout->elts[ps->expout_ptr];
434   memcpy (strdata, str.ptr, len);
435   ps->expout_ptr += lenelt - 2;
436   write_exp_elt_longcst (ps, (LONGEST) bits);
437 }
438
439 /* Return the type of MSYMBOL, a minimal symbol of OBJFILE.  If
440    ADDRESS_P is not NULL, set it to the MSYMBOL's resolved
441    address.  */
442
443 type *
444 find_minsym_type_and_address (minimal_symbol *msymbol,
445                               struct objfile *objfile,
446                               CORE_ADDR *address_p)
447 {
448   bound_minimal_symbol bound_msym = {msymbol, objfile};
449   struct gdbarch *gdbarch = get_objfile_arch (objfile);
450   struct obj_section *section = MSYMBOL_OBJ_SECTION (objfile, msymbol);
451   enum minimal_symbol_type type = MSYMBOL_TYPE (msymbol);
452   CORE_ADDR pc;
453
454   bool is_tls = (section != NULL
455                  && section->the_bfd_section->flags & SEC_THREAD_LOCAL);
456
457   /* Addresses of TLS symbols are really offsets into a
458      per-objfile/per-thread storage block.  */
459   CORE_ADDR addr = (is_tls
460                     ? MSYMBOL_VALUE_RAW_ADDRESS (bound_msym.minsym)
461                     : BMSYMBOL_VALUE_ADDRESS (bound_msym));
462
463   /* The minimal symbol might point to a function descriptor;
464      resolve it to the actual code address instead.  */
465   pc = gdbarch_convert_from_func_ptr_addr (gdbarch, addr, &current_target);
466   if (pc != addr)
467     {
468       struct bound_minimal_symbol ifunc_msym = lookup_minimal_symbol_by_pc (pc);
469
470       /* In this case, assume we have a code symbol instead of
471          a data symbol.  */
472
473       if (ifunc_msym.minsym != NULL
474           && MSYMBOL_TYPE (ifunc_msym.minsym) == mst_text_gnu_ifunc
475           && BMSYMBOL_VALUE_ADDRESS (ifunc_msym) == pc)
476         {
477           /* A function descriptor has been resolved but PC is still in the
478              STT_GNU_IFUNC resolver body (such as because inferior does not
479              run to be able to call it).  */
480
481           type = mst_text_gnu_ifunc;
482         }
483       else
484         type = mst_text;
485       section = NULL;
486       addr = pc;
487     }
488
489   if (overlay_debugging)
490     addr = symbol_overlayed_address (addr, section);
491
492   if (is_tls)
493     {
494       /* Skip translation if caller does not need the address.  */
495       if (address_p != NULL)
496         *address_p = target_translate_tls_address (objfile, addr);
497       return objfile_type (objfile)->nodebug_tls_symbol;
498     }
499
500   if (address_p != NULL)
501     *address_p = addr;
502
503   switch (type)
504     {
505     case mst_text:
506     case mst_file_text:
507     case mst_solib_trampoline:
508       return objfile_type (objfile)->nodebug_text_symbol;
509
510     case mst_text_gnu_ifunc:
511       return objfile_type (objfile)->nodebug_text_gnu_ifunc_symbol;
512
513     case mst_data:
514     case mst_file_data:
515     case mst_bss:
516     case mst_file_bss:
517       return objfile_type (objfile)->nodebug_data_symbol;
518
519     case mst_slot_got_plt:
520       return objfile_type (objfile)->nodebug_got_plt_symbol;
521
522     default:
523       return objfile_type (objfile)->nodebug_unknown_symbol;
524     }
525 }
526
527 /* Add the appropriate elements for a minimal symbol to the end of
528    the expression.  */
529
530 void
531 write_exp_msymbol (struct parser_state *ps,
532                    struct bound_minimal_symbol bound_msym)
533 {
534   write_exp_elt_opcode (ps, OP_VAR_MSYM_VALUE);
535   write_exp_elt_objfile (ps, bound_msym.objfile);
536   write_exp_elt_msym (ps, bound_msym.minsym);
537   write_exp_elt_opcode (ps, OP_VAR_MSYM_VALUE);
538 }
539
540 /* Mark the current index as the starting location of a structure
541    expression.  This is used when completing on field names.  */
542
543 void
544 mark_struct_expression (struct parser_state *ps)
545 {
546   gdb_assert (parse_completion
547               && expout_tag_completion_type == TYPE_CODE_UNDEF);
548   expout_last_struct = ps->expout_ptr;
549 }
550
551 /* Indicate that the current parser invocation is completing a tag.
552    TAG is the type code of the tag, and PTR and LENGTH represent the
553    start of the tag name.  */
554
555 void
556 mark_completion_tag (enum type_code tag, const char *ptr, int length)
557 {
558   gdb_assert (parse_completion
559               && expout_tag_completion_type == TYPE_CODE_UNDEF
560               && expout_completion_name == NULL
561               && expout_last_struct == -1);
562   gdb_assert (tag == TYPE_CODE_UNION
563               || tag == TYPE_CODE_STRUCT
564               || tag == TYPE_CODE_ENUM);
565   expout_tag_completion_type = tag;
566   expout_completion_name = (char *) xmalloc (length + 1);
567   memcpy (expout_completion_name, ptr, length);
568   expout_completion_name[length] = '\0';
569 }
570
571 \f
572 /* Recognize tokens that start with '$'.  These include:
573
574    $regname     A native register name or a "standard
575    register name".
576
577    $variable    A convenience variable with a name chosen
578    by the user.
579
580    $digits              Value history with index <digits>, starting
581    from the first value which has index 1.
582
583    $$digits     Value history with index <digits> relative
584    to the last value.  I.e. $$0 is the last
585    value, $$1 is the one previous to that, $$2
586    is the one previous to $$1, etc.
587
588    $ | $0 | $$0 The last value in the value history.
589
590    $$           An abbreviation for the second to the last
591    value in the value history, I.e. $$1  */
592
593 void
594 write_dollar_variable (struct parser_state *ps, struct stoken str)
595 {
596   struct block_symbol sym;
597   struct bound_minimal_symbol msym;
598   struct internalvar *isym = NULL;
599
600   /* Handle the tokens $digits; also $ (short for $0) and $$ (short for $$1)
601      and $$digits (equivalent to $<-digits> if you could type that).  */
602
603   int negate = 0;
604   int i = 1;
605   /* Double dollar means negate the number and add -1 as well.
606      Thus $$ alone means -1.  */
607   if (str.length >= 2 && str.ptr[1] == '$')
608     {
609       negate = 1;
610       i = 2;
611     }
612   if (i == str.length)
613     {
614       /* Just dollars (one or two).  */
615       i = -negate;
616       goto handle_last;
617     }
618   /* Is the rest of the token digits?  */
619   for (; i < str.length; i++)
620     if (!(str.ptr[i] >= '0' && str.ptr[i] <= '9'))
621       break;
622   if (i == str.length)
623     {
624       i = atoi (str.ptr + 1 + negate);
625       if (negate)
626         i = -i;
627       goto handle_last;
628     }
629
630   /* Handle tokens that refer to machine registers:
631      $ followed by a register name.  */
632   i = user_reg_map_name_to_regnum (parse_gdbarch (ps),
633                                    str.ptr + 1, str.length - 1);
634   if (i >= 0)
635     goto handle_register;
636
637   /* Any names starting with $ are probably debugger internal variables.  */
638
639   isym = lookup_only_internalvar (copy_name (str) + 1);
640   if (isym)
641     {
642       write_exp_elt_opcode (ps, OP_INTERNALVAR);
643       write_exp_elt_intern (ps, isym);
644       write_exp_elt_opcode (ps, OP_INTERNALVAR);
645       return;
646     }
647
648   /* On some systems, such as HP-UX and hppa-linux, certain system routines 
649      have names beginning with $ or $$.  Check for those, first.  */
650
651   sym = lookup_symbol (copy_name (str), (struct block *) NULL,
652                        VAR_DOMAIN, NULL);
653   if (sym.symbol)
654     {
655       write_exp_elt_opcode (ps, OP_VAR_VALUE);
656       write_exp_elt_block (ps, sym.block);
657       write_exp_elt_sym (ps, sym.symbol);
658       write_exp_elt_opcode (ps, OP_VAR_VALUE);
659       return;
660     }
661   msym = lookup_bound_minimal_symbol (copy_name (str));
662   if (msym.minsym)
663     {
664       write_exp_msymbol (ps, msym);
665       return;
666     }
667
668   /* Any other names are assumed to be debugger internal variables.  */
669
670   write_exp_elt_opcode (ps, OP_INTERNALVAR);
671   write_exp_elt_intern (ps, create_internalvar (copy_name (str) + 1));
672   write_exp_elt_opcode (ps, OP_INTERNALVAR);
673   return;
674 handle_last:
675   write_exp_elt_opcode (ps, OP_LAST);
676   write_exp_elt_longcst (ps, (LONGEST) i);
677   write_exp_elt_opcode (ps, OP_LAST);
678   return;
679 handle_register:
680   write_exp_elt_opcode (ps, OP_REGISTER);
681   str.length--;
682   str.ptr++;
683   write_exp_string (ps, str);
684   write_exp_elt_opcode (ps, OP_REGISTER);
685   return;
686 }
687
688
689 const char *
690 find_template_name_end (const char *p)
691 {
692   int depth = 1;
693   int just_seen_right = 0;
694   int just_seen_colon = 0;
695   int just_seen_space = 0;
696
697   if (!p || (*p != '<'))
698     return 0;
699
700   while (*++p)
701     {
702       switch (*p)
703         {
704         case '\'':
705         case '\"':
706         case '{':
707         case '}':
708           /* In future, may want to allow these??  */
709           return 0;
710         case '<':
711           depth++;              /* start nested template */
712           if (just_seen_colon || just_seen_right || just_seen_space)
713             return 0;           /* but not after : or :: or > or space */
714           break;
715         case '>':
716           if (just_seen_colon || just_seen_right)
717             return 0;           /* end a (nested?) template */
718           just_seen_right = 1;  /* but not after : or :: */
719           if (--depth == 0)     /* also disallow >>, insist on > > */
720             return ++p;         /* if outermost ended, return */
721           break;
722         case ':':
723           if (just_seen_space || (just_seen_colon > 1))
724             return 0;           /* nested class spec coming up */
725           just_seen_colon++;    /* we allow :: but not :::: */
726           break;
727         case ' ':
728           break;
729         default:
730           if (!((*p >= 'a' && *p <= 'z') ||     /* allow token chars */
731                 (*p >= 'A' && *p <= 'Z') ||
732                 (*p >= '0' && *p <= '9') ||
733                 (*p == '_') || (*p == ',') ||   /* commas for template args */
734                 (*p == '&') || (*p == '*') ||   /* pointer and ref types */
735                 (*p == '(') || (*p == ')') ||   /* function types */
736                 (*p == '[') || (*p == ']')))    /* array types */
737             return 0;
738         }
739       if (*p != ' ')
740         just_seen_space = 0;
741       if (*p != ':')
742         just_seen_colon = 0;
743       if (*p != '>')
744         just_seen_right = 0;
745     }
746   return 0;
747 }
748 \f
749
750 /* Return a null-terminated temporary copy of the name of a string token.
751
752    Tokens that refer to names do so with explicit pointer and length,
753    so they can share the storage that lexptr is parsing.
754    When it is necessary to pass a name to a function that expects
755    a null-terminated string, the substring is copied out
756    into a separate block of storage.
757
758    N.B. A single buffer is reused on each call.  */
759
760 char *
761 copy_name (struct stoken token)
762 {
763   /* A temporary buffer for identifiers, so we can null-terminate them.
764      We allocate this with xrealloc.  parse_exp_1 used to allocate with
765      alloca, using the size of the whole expression as a conservative
766      estimate of the space needed.  However, macro expansion can
767      introduce names longer than the original expression; there's no
768      practical way to know beforehand how large that might be.  */
769   static char *namecopy;
770   static size_t namecopy_size;
771
772   /* Make sure there's enough space for the token.  */
773   if (namecopy_size < token.length + 1)
774     {
775       namecopy_size = token.length + 1;
776       namecopy = (char *) xrealloc (namecopy, token.length + 1);
777     }
778       
779   memcpy (namecopy, token.ptr, token.length);
780   namecopy[token.length] = 0;
781
782   return namecopy;
783 }
784 \f
785
786 /* See comments on parser-defs.h.  */
787
788 int
789 prefixify_expression (struct expression *expr)
790 {
791   int len = sizeof (struct expression) + EXP_ELEM_TO_BYTES (expr->nelts);
792   struct expression *temp;
793   int inpos = expr->nelts, outpos = 0;
794
795   temp = (struct expression *) alloca (len);
796
797   /* Copy the original expression into temp.  */
798   memcpy (temp, expr, len);
799
800   return prefixify_subexp (temp, expr, inpos, outpos);
801 }
802
803 /* Return the number of exp_elements in the postfix subexpression 
804    of EXPR whose operator is at index ENDPOS - 1 in EXPR.  */
805
806 static int
807 length_of_subexp (struct expression *expr, int endpos)
808 {
809   int oplen, args;
810
811   operator_length (expr, endpos, &oplen, &args);
812
813   while (args > 0)
814     {
815       oplen += length_of_subexp (expr, endpos - oplen);
816       args--;
817     }
818
819   return oplen;
820 }
821
822 /* Sets *OPLENP to the length of the operator whose (last) index is 
823    ENDPOS - 1 in EXPR, and sets *ARGSP to the number of arguments that
824    operator takes.  */
825
826 void
827 operator_length (const struct expression *expr, int endpos, int *oplenp,
828                  int *argsp)
829 {
830   expr->language_defn->la_exp_desc->operator_length (expr, endpos,
831                                                      oplenp, argsp);
832 }
833
834 /* Default value for operator_length in exp_descriptor vectors.  */
835
836 void
837 operator_length_standard (const struct expression *expr, int endpos,
838                           int *oplenp, int *argsp)
839 {
840   int oplen = 1;
841   int args = 0;
842   enum range_type range_type;
843   int i;
844
845   if (endpos < 1)
846     error (_("?error in operator_length_standard"));
847
848   i = (int) expr->elts[endpos - 1].opcode;
849
850   switch (i)
851     {
852       /* C++  */
853     case OP_SCOPE:
854       oplen = longest_to_int (expr->elts[endpos - 2].longconst);
855       oplen = 5 + BYTES_TO_EXP_ELEM (oplen + 1);
856       break;
857
858     case OP_LONG:
859     case OP_FLOAT:
860     case OP_VAR_VALUE:
861     case OP_VAR_MSYM_VALUE:
862       oplen = 4;
863       break;
864
865     case OP_FUNC_STATIC_VAR:
866       oplen = longest_to_int (expr->elts[endpos - 2].longconst);
867       oplen = 4 + BYTES_TO_EXP_ELEM (oplen + 1);
868       args = 1;
869       break;
870
871     case OP_TYPE:
872     case OP_BOOL:
873     case OP_LAST:
874     case OP_INTERNALVAR:
875     case OP_VAR_ENTRY_VALUE:
876       oplen = 3;
877       break;
878
879     case OP_COMPLEX:
880       oplen = 3;
881       args = 2;
882       break;
883
884     case OP_FUNCALL:
885     case OP_F77_UNDETERMINED_ARGLIST:
886       oplen = 3;
887       args = 1 + longest_to_int (expr->elts[endpos - 2].longconst);
888       break;
889
890     case TYPE_INSTANCE:
891       oplen = 5 + longest_to_int (expr->elts[endpos - 2].longconst);
892       args = 1;
893       break;
894
895     case OP_OBJC_MSGCALL:       /* Objective C message (method) call.  */
896       oplen = 4;
897       args = 1 + longest_to_int (expr->elts[endpos - 2].longconst);
898       break;
899
900     case UNOP_MAX:
901     case UNOP_MIN:
902       oplen = 3;
903       break;
904
905     case UNOP_CAST_TYPE:
906     case UNOP_DYNAMIC_CAST:
907     case UNOP_REINTERPRET_CAST:
908     case UNOP_MEMVAL_TYPE:
909       oplen = 1;
910       args = 2;
911       break;
912
913     case BINOP_VAL:
914     case UNOP_CAST:
915     case UNOP_MEMVAL:
916       oplen = 3;
917       args = 1;
918       break;
919
920     case UNOP_ABS:
921     case UNOP_CAP:
922     case UNOP_CHR:
923     case UNOP_FLOAT:
924     case UNOP_HIGH:
925     case UNOP_ODD:
926     case UNOP_ORD:
927     case UNOP_TRUNC:
928     case OP_TYPEOF:
929     case OP_DECLTYPE:
930     case OP_TYPEID:
931       oplen = 1;
932       args = 1;
933       break;
934
935     case OP_ADL_FUNC:
936       oplen = longest_to_int (expr->elts[endpos - 2].longconst);
937       oplen = 4 + BYTES_TO_EXP_ELEM (oplen + 1);
938       oplen++;
939       oplen++;
940       break;
941
942     case STRUCTOP_STRUCT:
943     case STRUCTOP_PTR:
944       args = 1;
945       /* fall through */
946     case OP_REGISTER:
947     case OP_M2_STRING:
948     case OP_STRING:
949     case OP_OBJC_NSSTRING:      /* Objective C Foundation Class
950                                    NSString constant.  */
951     case OP_OBJC_SELECTOR:      /* Objective C "@selector" pseudo-op.  */
952     case OP_NAME:
953       oplen = longest_to_int (expr->elts[endpos - 2].longconst);
954       oplen = 4 + BYTES_TO_EXP_ELEM (oplen + 1);
955       break;
956
957     case OP_ARRAY:
958       oplen = 4;
959       args = longest_to_int (expr->elts[endpos - 2].longconst);
960       args -= longest_to_int (expr->elts[endpos - 3].longconst);
961       args += 1;
962       break;
963
964     case TERNOP_COND:
965     case TERNOP_SLICE:
966       args = 3;
967       break;
968
969       /* Modula-2 */
970     case MULTI_SUBSCRIPT:
971       oplen = 3;
972       args = 1 + longest_to_int (expr->elts[endpos - 2].longconst);
973       break;
974
975     case BINOP_ASSIGN_MODIFY:
976       oplen = 3;
977       args = 2;
978       break;
979
980       /* C++ */
981     case OP_THIS:
982       oplen = 2;
983       break;
984
985     case OP_RANGE:
986       oplen = 3;
987       range_type = (enum range_type)
988         longest_to_int (expr->elts[endpos - 2].longconst);
989
990       switch (range_type)
991         {
992         case LOW_BOUND_DEFAULT:
993         case HIGH_BOUND_DEFAULT:
994           args = 1;
995           break;
996         case BOTH_BOUND_DEFAULT:
997           args = 0;
998           break;
999         case NONE_BOUND_DEFAULT:
1000           args = 2;
1001           break;
1002         }
1003
1004       break;
1005
1006     default:
1007       args = 1 + (i < (int) BINOP_END);
1008     }
1009
1010   *oplenp = oplen;
1011   *argsp = args;
1012 }
1013
1014 /* Copy the subexpression ending just before index INEND in INEXPR
1015    into OUTEXPR, starting at index OUTBEG.
1016    In the process, convert it from suffix to prefix form.
1017    If EXPOUT_LAST_STRUCT is -1, then this function always returns -1.
1018    Otherwise, it returns the index of the subexpression which is the
1019    left-hand-side of the expression at EXPOUT_LAST_STRUCT.  */
1020
1021 static int
1022 prefixify_subexp (struct expression *inexpr,
1023                   struct expression *outexpr, int inend, int outbeg)
1024 {
1025   int oplen;
1026   int args;
1027   int i;
1028   int *arglens;
1029   int result = -1;
1030
1031   operator_length (inexpr, inend, &oplen, &args);
1032
1033   /* Copy the final operator itself, from the end of the input
1034      to the beginning of the output.  */
1035   inend -= oplen;
1036   memcpy (&outexpr->elts[outbeg], &inexpr->elts[inend],
1037           EXP_ELEM_TO_BYTES (oplen));
1038   outbeg += oplen;
1039
1040   if (expout_last_struct == inend)
1041     result = outbeg - oplen;
1042
1043   /* Find the lengths of the arg subexpressions.  */
1044   arglens = (int *) alloca (args * sizeof (int));
1045   for (i = args - 1; i >= 0; i--)
1046     {
1047       oplen = length_of_subexp (inexpr, inend);
1048       arglens[i] = oplen;
1049       inend -= oplen;
1050     }
1051
1052   /* Now copy each subexpression, preserving the order of
1053      the subexpressions, but prefixifying each one.
1054      In this loop, inend starts at the beginning of
1055      the expression this level is working on
1056      and marches forward over the arguments.
1057      outbeg does similarly in the output.  */
1058   for (i = 0; i < args; i++)
1059     {
1060       int r;
1061
1062       oplen = arglens[i];
1063       inend += oplen;
1064       r = prefixify_subexp (inexpr, outexpr, inend, outbeg);
1065       if (r != -1)
1066         {
1067           /* Return immediately.  We probably have only parsed a
1068              partial expression, so we don't want to try to reverse
1069              the other operands.  */
1070           return r;
1071         }
1072       outbeg += oplen;
1073     }
1074
1075   return result;
1076 }
1077 \f
1078 /* Read an expression from the string *STRINGPTR points to,
1079    parse it, and return a pointer to a struct expression that we malloc.
1080    Use block BLOCK as the lexical context for variable names;
1081    if BLOCK is zero, use the block of the selected stack frame.
1082    Meanwhile, advance *STRINGPTR to point after the expression,
1083    at the first nonwhite character that is not part of the expression
1084    (possibly a null character).
1085
1086    If COMMA is nonzero, stop if a comma is reached.  */
1087
1088 expression_up
1089 parse_exp_1 (const char **stringptr, CORE_ADDR pc, const struct block *block,
1090              int comma)
1091 {
1092   return parse_exp_in_context (stringptr, pc, block, comma, 0, NULL);
1093 }
1094
1095 static expression_up
1096 parse_exp_in_context (const char **stringptr, CORE_ADDR pc,
1097                       const struct block *block,
1098                       int comma, int void_context_p, int *out_subexp)
1099 {
1100   return parse_exp_in_context_1 (stringptr, pc, block, comma,
1101                                  void_context_p, out_subexp);
1102 }
1103
1104 /* As for parse_exp_1, except that if VOID_CONTEXT_P, then
1105    no value is expected from the expression.
1106    OUT_SUBEXP is set when attempting to complete a field name; in this
1107    case it is set to the index of the subexpression on the
1108    left-hand-side of the struct op.  If not doing such completion, it
1109    is left untouched.  */
1110
1111 static expression_up
1112 parse_exp_in_context_1 (const char **stringptr, CORE_ADDR pc,
1113                         const struct block *block,
1114                         int comma, int void_context_p, int *out_subexp)
1115 {
1116   const struct language_defn *lang = NULL;
1117   int subexp;
1118
1119   lexptr = *stringptr;
1120   prev_lexptr = NULL;
1121
1122   paren_depth = 0;
1123   type_stack.depth = 0;
1124   expout_last_struct = -1;
1125   expout_tag_completion_type = TYPE_CODE_UNDEF;
1126   xfree (expout_completion_name);
1127   expout_completion_name = NULL;
1128
1129   comma_terminates = comma;
1130
1131   if (lexptr == 0 || *lexptr == 0)
1132     error_no_arg (_("expression to compute"));
1133
1134   std::vector<int> funcalls;
1135   scoped_restore save_funcall_chain = make_scoped_restore (&funcall_chain,
1136                                                            &funcalls);
1137
1138   expression_context_block = block;
1139
1140   /* If no context specified, try using the current frame, if any.  */
1141   if (!expression_context_block)
1142     expression_context_block = get_selected_block (&expression_context_pc);
1143   else if (pc == 0)
1144     expression_context_pc = BLOCK_START (expression_context_block);
1145   else
1146     expression_context_pc = pc;
1147
1148   /* Fall back to using the current source static context, if any.  */
1149
1150   if (!expression_context_block)
1151     {
1152       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
1153       if (cursal.symtab)
1154         expression_context_block
1155           = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (cursal.symtab),
1156                                STATIC_BLOCK);
1157       if (expression_context_block)
1158         expression_context_pc = BLOCK_START (expression_context_block);
1159     }
1160
1161   if (language_mode == language_mode_auto && block != NULL)
1162     {
1163       /* Find the language associated to the given context block.
1164          Default to the current language if it can not be determined.
1165
1166          Note that using the language corresponding to the current frame
1167          can sometimes give unexpected results.  For instance, this
1168          routine is often called several times during the inferior
1169          startup phase to re-parse breakpoint expressions after
1170          a new shared library has been loaded.  The language associated
1171          to the current frame at this moment is not relevant for
1172          the breakpoint.  Using it would therefore be silly, so it seems
1173          better to rely on the current language rather than relying on
1174          the current frame language to parse the expression.  That's why
1175          we do the following language detection only if the context block
1176          has been specifically provided.  */
1177       struct symbol *func = block_linkage_function (block);
1178
1179       if (func != NULL)
1180         lang = language_def (SYMBOL_LANGUAGE (func));
1181       if (lang == NULL || lang->la_language == language_unknown)
1182         lang = current_language;
1183     }
1184   else
1185     lang = current_language;
1186
1187   /* get_current_arch may reset CURRENT_LANGUAGE via select_frame.
1188      While we need CURRENT_LANGUAGE to be set to LANG (for lookup_symbol
1189      and others called from *.y) ensure CURRENT_LANGUAGE gets restored
1190      to the value matching SELECTED_FRAME as set by get_current_arch.  */
1191
1192   parser_state ps (10, lang, get_current_arch ());
1193
1194   scoped_restore_current_language lang_saver;
1195   set_language (lang->la_language);
1196
1197   TRY
1198     {
1199       if (lang->la_parser (&ps))
1200         lang->la_error (NULL);
1201     }
1202   CATCH (except, RETURN_MASK_ALL)
1203     {
1204       if (! parse_completion)
1205         throw_exception (except);
1206     }
1207   END_CATCH
1208
1209   /* We have to operate on an "expression *", due to la_post_parser,
1210      which explains this funny-looking double release.  */
1211   expression_up result = ps.release ();
1212
1213   /* Convert expression from postfix form as generated by yacc
1214      parser, to a prefix form.  */
1215
1216   if (expressiondebug)
1217     dump_raw_expression (result.get (), gdb_stdlog,
1218                          "before conversion to prefix form");
1219
1220   subexp = prefixify_expression (result.get ());
1221   if (out_subexp)
1222     *out_subexp = subexp;
1223
1224   lang->la_post_parser (&result, void_context_p);
1225
1226   if (expressiondebug)
1227     dump_prefix_expression (result.get (), gdb_stdlog);
1228
1229   *stringptr = lexptr;
1230   return result;
1231 }
1232
1233 /* Parse STRING as an expression, and complain if this fails
1234    to use up all of the contents of STRING.  */
1235
1236 expression_up
1237 parse_expression (const char *string)
1238 {
1239   expression_up exp = parse_exp_1 (&string, 0, 0, 0);
1240   if (*string)
1241     error (_("Junk after end of expression."));
1242   return exp;
1243 }
1244
1245 /* Same as parse_expression, but using the given language (LANG)
1246    to parse the expression.  */
1247
1248 expression_up
1249 parse_expression_with_language (const char *string, enum language lang)
1250 {
1251   gdb::optional<scoped_restore_current_language> lang_saver;
1252   if (current_language->la_language != lang)
1253     {
1254       lang_saver.emplace ();
1255       set_language (lang);
1256     }
1257
1258   return parse_expression (string);
1259 }
1260
1261 /* Parse STRING as an expression.  If parsing ends in the middle of a
1262    field reference, return the type of the left-hand-side of the
1263    reference; furthermore, if the parsing ends in the field name,
1264    return the field name in *NAME.  If the parsing ends in the middle
1265    of a field reference, but the reference is somehow invalid, throw
1266    an exception.  In all other cases, return NULL.  Returned non-NULL
1267    *NAME must be freed by the caller.  */
1268
1269 struct type *
1270 parse_expression_for_completion (const char *string, char **name,
1271                                  enum type_code *code)
1272 {
1273   expression_up exp;
1274   struct value *val;
1275   int subexp;
1276
1277   TRY
1278     {
1279       parse_completion = 1;
1280       exp = parse_exp_in_context (&string, 0, 0, 0, 0, &subexp);
1281     }
1282   CATCH (except, RETURN_MASK_ERROR)
1283     {
1284       /* Nothing, EXP remains NULL.  */
1285     }
1286   END_CATCH
1287
1288   parse_completion = 0;
1289   if (exp == NULL)
1290     return NULL;
1291
1292   if (expout_tag_completion_type != TYPE_CODE_UNDEF)
1293     {
1294       *code = expout_tag_completion_type;
1295       *name = expout_completion_name;
1296       expout_completion_name = NULL;
1297       return NULL;
1298     }
1299
1300   if (expout_last_struct == -1)
1301     return NULL;
1302
1303   *name = extract_field_op (exp.get (), &subexp);
1304   if (!*name)
1305     return NULL;
1306
1307   /* This might throw an exception.  If so, we want to let it
1308      propagate.  */
1309   val = evaluate_subexpression_type (exp.get (), subexp);
1310   /* (*NAME) is a part of the EXP memory block freed below.  */
1311   *name = xstrdup (*name);
1312
1313   return value_type (val);
1314 }
1315
1316 /* A post-parser that does nothing.  */
1317
1318 void
1319 null_post_parser (expression_up *exp, int void_context_p)
1320 {
1321 }
1322
1323 /* Parse floating point value P of length LEN.
1324    Return false if invalid, true if valid.
1325    The successfully parsed number is stored in DATA in
1326    target format for floating-point type TYPE.
1327
1328    NOTE: This accepts the floating point syntax that sscanf accepts.  */
1329
1330 bool
1331 parse_float (const char *p, int len,
1332              const struct type *type, gdb_byte *data)
1333 {
1334   return target_float_from_string (data, type, std::string (p, len));
1335 }
1336 \f
1337 /* Stuff for maintaining a stack of types.  Currently just used by C, but
1338    probably useful for any language which declares its types "backwards".  */
1339
1340 /* Ensure that there are HOWMUCH open slots on the type stack STACK.  */
1341
1342 static void
1343 type_stack_reserve (struct type_stack *stack, int howmuch)
1344 {
1345   if (stack->depth + howmuch >= stack->size)
1346     {
1347       stack->size *= 2;
1348       if (stack->size < howmuch)
1349         stack->size = howmuch;
1350       stack->elements = XRESIZEVEC (union type_stack_elt, stack->elements,
1351                                     stack->size);
1352     }
1353 }
1354
1355 /* Ensure that there is a single open slot in the global type stack.  */
1356
1357 static void
1358 check_type_stack_depth (void)
1359 {
1360   type_stack_reserve (&type_stack, 1);
1361 }
1362
1363 /* A helper function for insert_type and insert_type_address_space.
1364    This does work of expanding the type stack and inserting the new
1365    element, ELEMENT, into the stack at location SLOT.  */
1366
1367 static void
1368 insert_into_type_stack (int slot, union type_stack_elt element)
1369 {
1370   check_type_stack_depth ();
1371
1372   if (slot < type_stack.depth)
1373     memmove (&type_stack.elements[slot + 1], &type_stack.elements[slot],
1374              (type_stack.depth - slot) * sizeof (union type_stack_elt));
1375   type_stack.elements[slot] = element;
1376   ++type_stack.depth;
1377 }
1378
1379 /* Insert a new type, TP, at the bottom of the type stack.  If TP is
1380    tp_pointer, tp_reference or tp_rvalue_reference, it is inserted at the
1381    bottom.  If TP is a qualifier, it is inserted at slot 1 (just above a
1382    previous tp_pointer) if there is anything on the stack, or simply pushed
1383    if the stack is empty.  Other values for TP are invalid.  */
1384
1385 void
1386 insert_type (enum type_pieces tp)
1387 {
1388   union type_stack_elt element;
1389   int slot;
1390
1391   gdb_assert (tp == tp_pointer || tp == tp_reference
1392               || tp == tp_rvalue_reference || tp == tp_const
1393               || tp == tp_volatile);
1394
1395   /* If there is anything on the stack (we know it will be a
1396      tp_pointer), insert the qualifier above it.  Otherwise, simply
1397      push this on the top of the stack.  */
1398   if (type_stack.depth && (tp == tp_const || tp == tp_volatile))
1399     slot = 1;
1400   else
1401     slot = 0;
1402
1403   element.piece = tp;
1404   insert_into_type_stack (slot, element);
1405 }
1406
1407 void
1408 push_type (enum type_pieces tp)
1409 {
1410   check_type_stack_depth ();
1411   type_stack.elements[type_stack.depth++].piece = tp;
1412 }
1413
1414 void
1415 push_type_int (int n)
1416 {
1417   check_type_stack_depth ();
1418   type_stack.elements[type_stack.depth++].int_val = n;
1419 }
1420
1421 /* Insert a tp_space_identifier and the corresponding address space
1422    value into the stack.  STRING is the name of an address space, as
1423    recognized by address_space_name_to_int.  If the stack is empty,
1424    the new elements are simply pushed.  If the stack is not empty,
1425    this function assumes that the first item on the stack is a
1426    tp_pointer, and the new values are inserted above the first
1427    item.  */
1428
1429 void
1430 insert_type_address_space (struct parser_state *pstate, char *string)
1431 {
1432   union type_stack_elt element;
1433   int slot;
1434
1435   /* If there is anything on the stack (we know it will be a
1436      tp_pointer), insert the address space qualifier above it.
1437      Otherwise, simply push this on the top of the stack.  */
1438   if (type_stack.depth)
1439     slot = 1;
1440   else
1441     slot = 0;
1442
1443   element.piece = tp_space_identifier;
1444   insert_into_type_stack (slot, element);
1445   element.int_val = address_space_name_to_int (parse_gdbarch (pstate),
1446                                                string);
1447   insert_into_type_stack (slot, element);
1448 }
1449
1450 enum type_pieces
1451 pop_type (void)
1452 {
1453   if (type_stack.depth)
1454     return type_stack.elements[--type_stack.depth].piece;
1455   return tp_end;
1456 }
1457
1458 int
1459 pop_type_int (void)
1460 {
1461   if (type_stack.depth)
1462     return type_stack.elements[--type_stack.depth].int_val;
1463   /* "Can't happen".  */
1464   return 0;
1465 }
1466
1467 /* Pop a type list element from the global type stack.  */
1468
1469 static VEC (type_ptr) *
1470 pop_typelist (void)
1471 {
1472   gdb_assert (type_stack.depth);
1473   return type_stack.elements[--type_stack.depth].typelist_val;
1474 }
1475
1476 /* Pop a type_stack element from the global type stack.  */
1477
1478 static struct type_stack *
1479 pop_type_stack (void)
1480 {
1481   gdb_assert (type_stack.depth);
1482   return type_stack.elements[--type_stack.depth].stack_val;
1483 }
1484
1485 /* Append the elements of the type stack FROM to the type stack TO.
1486    Always returns TO.  */
1487
1488 struct type_stack *
1489 append_type_stack (struct type_stack *to, struct type_stack *from)
1490 {
1491   type_stack_reserve (to, from->depth);
1492
1493   memcpy (&to->elements[to->depth], &from->elements[0],
1494           from->depth * sizeof (union type_stack_elt));
1495   to->depth += from->depth;
1496
1497   return to;
1498 }
1499
1500 /* Push the type stack STACK as an element on the global type stack.  */
1501
1502 void
1503 push_type_stack (struct type_stack *stack)
1504 {
1505   check_type_stack_depth ();
1506   type_stack.elements[type_stack.depth++].stack_val = stack;
1507   push_type (tp_type_stack);
1508 }
1509
1510 /* Copy the global type stack into a newly allocated type stack and
1511    return it.  The global stack is cleared.  The returned type stack
1512    must be freed with type_stack_cleanup.  */
1513
1514 struct type_stack *
1515 get_type_stack (void)
1516 {
1517   struct type_stack *result = XNEW (struct type_stack);
1518
1519   *result = type_stack;
1520   type_stack.depth = 0;
1521   type_stack.size = 0;
1522   type_stack.elements = NULL;
1523
1524   return result;
1525 }
1526
1527 /* A cleanup function that destroys a single type stack.  */
1528
1529 void
1530 type_stack_cleanup (void *arg)
1531 {
1532   struct type_stack *stack = (struct type_stack *) arg;
1533
1534   xfree (stack->elements);
1535   xfree (stack);
1536 }
1537
1538 /* Push a function type with arguments onto the global type stack.
1539    LIST holds the argument types.  If the final item in LIST is NULL,
1540    then the function will be varargs.  */
1541
1542 void
1543 push_typelist (VEC (type_ptr) *list)
1544 {
1545   check_type_stack_depth ();
1546   type_stack.elements[type_stack.depth++].typelist_val = list;
1547   push_type (tp_function_with_arguments);
1548 }
1549
1550 /* Pop the type stack and return a type_instance_flags that
1551    corresponds the const/volatile qualifiers on the stack.  This is
1552    called by the C++ parser when parsing methods types, and as such no
1553    other kind of type in the type stack is expected.  */
1554
1555 type_instance_flags
1556 follow_type_instance_flags ()
1557 {
1558   type_instance_flags flags = 0;
1559
1560   for (;;)
1561     switch (pop_type ())
1562       {
1563       case tp_end:
1564         return flags;
1565       case tp_const:
1566         flags |= TYPE_INSTANCE_FLAG_CONST;
1567         break;
1568       case tp_volatile:
1569         flags |= TYPE_INSTANCE_FLAG_VOLATILE;
1570         break;
1571       default:
1572         gdb_assert_not_reached ("unrecognized tp_ value in follow_types");
1573       }
1574 }
1575
1576
1577 /* Pop the type stack and return the type which corresponds to FOLLOW_TYPE
1578    as modified by all the stuff on the stack.  */
1579 struct type *
1580 follow_types (struct type *follow_type)
1581 {
1582   int done = 0;
1583   int make_const = 0;
1584   int make_volatile = 0;
1585   int make_addr_space = 0;
1586   int array_size;
1587
1588   while (!done)
1589     switch (pop_type ())
1590       {
1591       case tp_end:
1592         done = 1;
1593         if (make_const)
1594           follow_type = make_cv_type (make_const, 
1595                                       TYPE_VOLATILE (follow_type), 
1596                                       follow_type, 0);
1597         if (make_volatile)
1598           follow_type = make_cv_type (TYPE_CONST (follow_type), 
1599                                       make_volatile, 
1600                                       follow_type, 0);
1601         if (make_addr_space)
1602           follow_type = make_type_with_address_space (follow_type, 
1603                                                       make_addr_space);
1604         make_const = make_volatile = 0;
1605         make_addr_space = 0;
1606         break;
1607       case tp_const:
1608         make_const = 1;
1609         break;
1610       case tp_volatile:
1611         make_volatile = 1;
1612         break;
1613       case tp_space_identifier:
1614         make_addr_space = pop_type_int ();
1615         break;
1616       case tp_pointer:
1617         follow_type = lookup_pointer_type (follow_type);
1618         if (make_const)
1619           follow_type = make_cv_type (make_const, 
1620                                       TYPE_VOLATILE (follow_type), 
1621                                       follow_type, 0);
1622         if (make_volatile)
1623           follow_type = make_cv_type (TYPE_CONST (follow_type), 
1624                                       make_volatile, 
1625                                       follow_type, 0);
1626         if (make_addr_space)
1627           follow_type = make_type_with_address_space (follow_type, 
1628                                                       make_addr_space);
1629         make_const = make_volatile = 0;
1630         make_addr_space = 0;
1631         break;
1632       case tp_reference:
1633          follow_type = lookup_lvalue_reference_type (follow_type);
1634          goto process_reference;
1635         case tp_rvalue_reference:
1636          follow_type = lookup_rvalue_reference_type (follow_type);
1637         process_reference:
1638          if (make_const)
1639            follow_type = make_cv_type (make_const,
1640                                        TYPE_VOLATILE (follow_type),
1641                                        follow_type, 0);
1642          if (make_volatile)
1643            follow_type = make_cv_type (TYPE_CONST (follow_type),
1644                                        make_volatile,
1645                                        follow_type, 0);
1646          if (make_addr_space)
1647            follow_type = make_type_with_address_space (follow_type,
1648                                                        make_addr_space);
1649         make_const = make_volatile = 0;
1650         make_addr_space = 0;
1651         break;
1652       case tp_array:
1653         array_size = pop_type_int ();
1654         /* FIXME-type-allocation: need a way to free this type when we are
1655            done with it.  */
1656         follow_type =
1657           lookup_array_range_type (follow_type,
1658                                    0, array_size >= 0 ? array_size - 1 : 0);
1659         if (array_size < 0)
1660           TYPE_HIGH_BOUND_KIND (TYPE_INDEX_TYPE (follow_type))
1661             = PROP_UNDEFINED;
1662         break;
1663       case tp_function:
1664         /* FIXME-type-allocation: need a way to free this type when we are
1665            done with it.  */
1666         follow_type = lookup_function_type (follow_type);
1667         break;
1668
1669       case tp_function_with_arguments:
1670         {
1671           VEC (type_ptr) *args = pop_typelist ();
1672
1673           follow_type
1674             = lookup_function_type_with_arguments (follow_type,
1675                                                    VEC_length (type_ptr, args),
1676                                                    VEC_address (type_ptr,
1677                                                                 args));
1678           VEC_free (type_ptr, args);
1679         }
1680         break;
1681
1682       case tp_type_stack:
1683         {
1684           struct type_stack *stack = pop_type_stack ();
1685           /* Sort of ugly, but not really much worse than the
1686              alternatives.  */
1687           struct type_stack save = type_stack;
1688
1689           type_stack = *stack;
1690           follow_type = follow_types (follow_type);
1691           gdb_assert (type_stack.depth == 0);
1692
1693           type_stack = save;
1694         }
1695         break;
1696       default:
1697         gdb_assert_not_reached ("unrecognized tp_ value in follow_types");
1698       }
1699   return follow_type;
1700 }
1701 \f
1702 /* This function avoids direct calls to fprintf 
1703    in the parser generated debug code.  */
1704 void
1705 parser_fprintf (FILE *x, const char *y, ...)
1706
1707   va_list args;
1708
1709   va_start (args, y);
1710   if (x == stderr)
1711     vfprintf_unfiltered (gdb_stderr, y, args); 
1712   else
1713     {
1714       fprintf_unfiltered (gdb_stderr, " Unknown FILE used.\n");
1715       vfprintf_unfiltered (gdb_stderr, y, args);
1716     }
1717   va_end (args);
1718 }
1719
1720 /* Implementation of the exp_descriptor method operator_check.  */
1721
1722 int
1723 operator_check_standard (struct expression *exp, int pos,
1724                          int (*objfile_func) (struct objfile *objfile,
1725                                               void *data),
1726                          void *data)
1727 {
1728   const union exp_element *const elts = exp->elts;
1729   struct type *type = NULL;
1730   struct objfile *objfile = NULL;
1731
1732   /* Extended operators should have been already handled by exp_descriptor
1733      iterate method of its specific language.  */
1734   gdb_assert (elts[pos].opcode < OP_EXTENDED0);
1735
1736   /* Track the callers of write_exp_elt_type for this table.  */
1737
1738   switch (elts[pos].opcode)
1739     {
1740     case BINOP_VAL:
1741     case OP_COMPLEX:
1742     case OP_FLOAT:
1743     case OP_LONG:
1744     case OP_SCOPE:
1745     case OP_TYPE:
1746     case UNOP_CAST:
1747     case UNOP_MAX:
1748     case UNOP_MEMVAL:
1749     case UNOP_MIN:
1750       type = elts[pos + 1].type;
1751       break;
1752
1753     case TYPE_INSTANCE:
1754       {
1755         LONGEST arg, nargs = elts[pos + 2].longconst;
1756
1757         for (arg = 0; arg < nargs; arg++)
1758           {
1759             struct type *type = elts[pos + 3 + arg].type;
1760             struct objfile *objfile = TYPE_OBJFILE (type);
1761
1762             if (objfile && (*objfile_func) (objfile, data))
1763               return 1;
1764           }
1765       }
1766       break;
1767
1768     case OP_VAR_VALUE:
1769       {
1770         const struct block *const block = elts[pos + 1].block;
1771         const struct symbol *const symbol = elts[pos + 2].symbol;
1772
1773         /* Check objfile where the variable itself is placed.
1774            SYMBOL_OBJ_SECTION (symbol) may be NULL.  */
1775         if ((*objfile_func) (symbol_objfile (symbol), data))
1776           return 1;
1777
1778         /* Check objfile where is placed the code touching the variable.  */
1779         objfile = lookup_objfile_from_block (block);
1780
1781         type = SYMBOL_TYPE (symbol);
1782       }
1783       break;
1784     case OP_VAR_MSYM_VALUE:
1785       objfile = elts[pos + 1].objfile;
1786       break;
1787     }
1788
1789   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
1790
1791   if (type && TYPE_OBJFILE (type)
1792       && (*objfile_func) (TYPE_OBJFILE (type), data))
1793     return 1;
1794   if (objfile && (*objfile_func) (objfile, data))
1795     return 1;
1796
1797   return 0;
1798 }
1799
1800 /* Call OBJFILE_FUNC for any objfile found being referenced by EXP.
1801    OBJFILE_FUNC is never called with NULL OBJFILE.  OBJFILE_FUNC get
1802    passed an arbitrary caller supplied DATA pointer.  If OBJFILE_FUNC
1803    returns non-zero value then (any other) non-zero value is immediately
1804    returned to the caller.  Otherwise zero is returned after iterating
1805    through whole EXP.  */
1806
1807 static int
1808 exp_iterate (struct expression *exp,
1809              int (*objfile_func) (struct objfile *objfile, void *data),
1810              void *data)
1811 {
1812   int endpos;
1813
1814   for (endpos = exp->nelts; endpos > 0; )
1815     {
1816       int pos, args, oplen = 0;
1817
1818       operator_length (exp, endpos, &oplen, &args);
1819       gdb_assert (oplen > 0);
1820
1821       pos = endpos - oplen;
1822       if (exp->language_defn->la_exp_desc->operator_check (exp, pos,
1823                                                            objfile_func, data))
1824         return 1;
1825
1826       endpos = pos;
1827     }
1828
1829   return 0;
1830 }
1831
1832 /* Helper for exp_uses_objfile.  */
1833
1834 static int
1835 exp_uses_objfile_iter (struct objfile *exp_objfile, void *objfile_voidp)
1836 {
1837   struct objfile *objfile = (struct objfile *) objfile_voidp;
1838
1839   if (exp_objfile->separate_debug_objfile_backlink)
1840     exp_objfile = exp_objfile->separate_debug_objfile_backlink;
1841
1842   return exp_objfile == objfile;
1843 }
1844
1845 /* Return 1 if EXP uses OBJFILE (and will become dangling when OBJFILE
1846    is unloaded), otherwise return 0.  OBJFILE must not be a separate debug info
1847    file.  */
1848
1849 int
1850 exp_uses_objfile (struct expression *exp, struct objfile *objfile)
1851 {
1852   gdb_assert (objfile->separate_debug_objfile_backlink == NULL);
1853
1854   return exp_iterate (exp, exp_uses_objfile_iter, objfile);
1855 }
1856
1857 /* See definition in parser-defs.h.  */
1858
1859 void
1860 increase_expout_size (struct parser_state *ps, size_t lenelt)
1861 {
1862   if ((ps->expout_ptr + lenelt) >= ps->expout_size)
1863     {
1864       ps->expout_size = std::max (ps->expout_size * 2,
1865                                   ps->expout_ptr + lenelt + 10);
1866       ps->expout.reset (XRESIZEVAR (expression,
1867                                     ps->expout.release (),
1868                                     (sizeof (struct expression)
1869                                      + EXP_ELEM_TO_BYTES (ps->expout_size))));
1870     }
1871 }
1872
1873 void
1874 _initialize_parse (void)
1875 {
1876   type_stack.size = 0;
1877   type_stack.depth = 0;
1878   type_stack.elements = NULL;
1879
1880   add_setshow_zuinteger_cmd ("expression", class_maintenance,
1881                              &expressiondebug,
1882                              _("Set expression debugging."),
1883                              _("Show expression debugging."),
1884                              _("When non-zero, the internal representation "
1885                                "of expressions will be printed."),
1886                              NULL,
1887                              show_expressiondebug,
1888                              &setdebuglist, &showdebuglist);
1889   add_setshow_boolean_cmd ("parser", class_maintenance,
1890                             &parser_debug,
1891                            _("Set parser debugging."),
1892                            _("Show parser debugging."),
1893                            _("When non-zero, expression parser "
1894                              "tracing will be enabled."),
1895                             NULL,
1896                             show_parserdebug,
1897                             &setdebuglist, &showdebuglist);
1898 }