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