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