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