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