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