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