Introduce OP_VAR_MSYM_VALUE
[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_TYPE:
905     case OP_BOOL:
906     case OP_LAST:
907     case OP_INTERNALVAR:
908     case OP_VAR_ENTRY_VALUE:
909       oplen = 3;
910       break;
911
912     case OP_COMPLEX:
913       oplen = 3;
914       args = 2;
915       break;
916
917     case OP_FUNCALL:
918     case OP_F77_UNDETERMINED_ARGLIST:
919       oplen = 3;
920       args = 1 + longest_to_int (expr->elts[endpos - 2].longconst);
921       break;
922
923     case TYPE_INSTANCE:
924       oplen = 4 + longest_to_int (expr->elts[endpos - 2].longconst);
925       args = 1;
926       break;
927
928     case OP_OBJC_MSGCALL:       /* Objective C message (method) call.  */
929       oplen = 4;
930       args = 1 + longest_to_int (expr->elts[endpos - 2].longconst);
931       break;
932
933     case UNOP_MAX:
934     case UNOP_MIN:
935       oplen = 3;
936       break;
937
938     case UNOP_CAST_TYPE:
939     case UNOP_DYNAMIC_CAST:
940     case UNOP_REINTERPRET_CAST:
941     case UNOP_MEMVAL_TYPE:
942       oplen = 1;
943       args = 2;
944       break;
945
946     case BINOP_VAL:
947     case UNOP_CAST:
948     case UNOP_MEMVAL:
949       oplen = 3;
950       args = 1;
951       break;
952
953     case UNOP_MEMVAL_TLS:
954       oplen = 4;
955       args = 1;
956       break;
957
958     case UNOP_ABS:
959     case UNOP_CAP:
960     case UNOP_CHR:
961     case UNOP_FLOAT:
962     case UNOP_HIGH:
963     case UNOP_ODD:
964     case UNOP_ORD:
965     case UNOP_TRUNC:
966     case OP_TYPEOF:
967     case OP_DECLTYPE:
968     case OP_TYPEID:
969       oplen = 1;
970       args = 1;
971       break;
972
973     case OP_ADL_FUNC:
974       oplen = longest_to_int (expr->elts[endpos - 2].longconst);
975       oplen = 4 + BYTES_TO_EXP_ELEM (oplen + 1);
976       oplen++;
977       oplen++;
978       break;
979
980     case STRUCTOP_STRUCT:
981     case STRUCTOP_PTR:
982       args = 1;
983       /* fall through */
984     case OP_REGISTER:
985     case OP_M2_STRING:
986     case OP_STRING:
987     case OP_OBJC_NSSTRING:      /* Objective C Foundation Class
988                                    NSString constant.  */
989     case OP_OBJC_SELECTOR:      /* Objective C "@selector" pseudo-op.  */
990     case OP_NAME:
991       oplen = longest_to_int (expr->elts[endpos - 2].longconst);
992       oplen = 4 + BYTES_TO_EXP_ELEM (oplen + 1);
993       break;
994
995     case OP_ARRAY:
996       oplen = 4;
997       args = longest_to_int (expr->elts[endpos - 2].longconst);
998       args -= longest_to_int (expr->elts[endpos - 3].longconst);
999       args += 1;
1000       break;
1001
1002     case TERNOP_COND:
1003     case TERNOP_SLICE:
1004       args = 3;
1005       break;
1006
1007       /* Modula-2 */
1008     case MULTI_SUBSCRIPT:
1009       oplen = 3;
1010       args = 1 + longest_to_int (expr->elts[endpos - 2].longconst);
1011       break;
1012
1013     case BINOP_ASSIGN_MODIFY:
1014       oplen = 3;
1015       args = 2;
1016       break;
1017
1018       /* C++ */
1019     case OP_THIS:
1020       oplen = 2;
1021       break;
1022
1023     case OP_RANGE:
1024       oplen = 3;
1025       range_type = (enum range_type)
1026         longest_to_int (expr->elts[endpos - 2].longconst);
1027
1028       switch (range_type)
1029         {
1030         case LOW_BOUND_DEFAULT:
1031         case HIGH_BOUND_DEFAULT:
1032           args = 1;
1033           break;
1034         case BOTH_BOUND_DEFAULT:
1035           args = 0;
1036           break;
1037         case NONE_BOUND_DEFAULT:
1038           args = 2;
1039           break;
1040         }
1041
1042       break;
1043
1044     default:
1045       args = 1 + (i < (int) BINOP_END);
1046     }
1047
1048   *oplenp = oplen;
1049   *argsp = args;
1050 }
1051
1052 /* Copy the subexpression ending just before index INEND in INEXPR
1053    into OUTEXPR, starting at index OUTBEG.
1054    In the process, convert it from suffix to prefix form.
1055    If EXPOUT_LAST_STRUCT is -1, then this function always returns -1.
1056    Otherwise, it returns the index of the subexpression which is the
1057    left-hand-side of the expression at EXPOUT_LAST_STRUCT.  */
1058
1059 static int
1060 prefixify_subexp (struct expression *inexpr,
1061                   struct expression *outexpr, int inend, int outbeg)
1062 {
1063   int oplen;
1064   int args;
1065   int i;
1066   int *arglens;
1067   int result = -1;
1068
1069   operator_length (inexpr, inend, &oplen, &args);
1070
1071   /* Copy the final operator itself, from the end of the input
1072      to the beginning of the output.  */
1073   inend -= oplen;
1074   memcpy (&outexpr->elts[outbeg], &inexpr->elts[inend],
1075           EXP_ELEM_TO_BYTES (oplen));
1076   outbeg += oplen;
1077
1078   if (expout_last_struct == inend)
1079     result = outbeg - oplen;
1080
1081   /* Find the lengths of the arg subexpressions.  */
1082   arglens = (int *) alloca (args * sizeof (int));
1083   for (i = args - 1; i >= 0; i--)
1084     {
1085       oplen = length_of_subexp (inexpr, inend);
1086       arglens[i] = oplen;
1087       inend -= oplen;
1088     }
1089
1090   /* Now copy each subexpression, preserving the order of
1091      the subexpressions, but prefixifying each one.
1092      In this loop, inend starts at the beginning of
1093      the expression this level is working on
1094      and marches forward over the arguments.
1095      outbeg does similarly in the output.  */
1096   for (i = 0; i < args; i++)
1097     {
1098       int r;
1099
1100       oplen = arglens[i];
1101       inend += oplen;
1102       r = prefixify_subexp (inexpr, outexpr, inend, outbeg);
1103       if (r != -1)
1104         {
1105           /* Return immediately.  We probably have only parsed a
1106              partial expression, so we don't want to try to reverse
1107              the other operands.  */
1108           return r;
1109         }
1110       outbeg += oplen;
1111     }
1112
1113   return result;
1114 }
1115 \f
1116 /* Read an expression from the string *STRINGPTR points to,
1117    parse it, and return a pointer to a struct expression that we malloc.
1118    Use block BLOCK as the lexical context for variable names;
1119    if BLOCK is zero, use the block of the selected stack frame.
1120    Meanwhile, advance *STRINGPTR to point after the expression,
1121    at the first nonwhite character that is not part of the expression
1122    (possibly a null character).
1123
1124    If COMMA is nonzero, stop if a comma is reached.  */
1125
1126 expression_up
1127 parse_exp_1 (const char **stringptr, CORE_ADDR pc, const struct block *block,
1128              int comma)
1129 {
1130   return parse_exp_in_context (stringptr, pc, block, comma, 0, NULL);
1131 }
1132
1133 static expression_up
1134 parse_exp_in_context (const char **stringptr, CORE_ADDR pc,
1135                       const struct block *block,
1136                       int comma, int void_context_p, int *out_subexp)
1137 {
1138   return parse_exp_in_context_1 (stringptr, pc, block, comma,
1139                                  void_context_p, out_subexp);
1140 }
1141
1142 /* As for parse_exp_1, except that if VOID_CONTEXT_P, then
1143    no value is expected from the expression.
1144    OUT_SUBEXP is set when attempting to complete a field name; in this
1145    case it is set to the index of the subexpression on the
1146    left-hand-side of the struct op.  If not doing such completion, it
1147    is left untouched.  */
1148
1149 static expression_up
1150 parse_exp_in_context_1 (const char **stringptr, CORE_ADDR pc,
1151                         const struct block *block,
1152                         int comma, int void_context_p, int *out_subexp)
1153 {
1154   struct cleanup *old_chain;
1155   const struct language_defn *lang = NULL;
1156   struct parser_state ps;
1157   int subexp;
1158
1159   lexptr = *stringptr;
1160   prev_lexptr = NULL;
1161
1162   paren_depth = 0;
1163   type_stack.depth = 0;
1164   expout_last_struct = -1;
1165   expout_tag_completion_type = TYPE_CODE_UNDEF;
1166   xfree (expout_completion_name);
1167   expout_completion_name = NULL;
1168
1169   comma_terminates = comma;
1170
1171   if (lexptr == 0 || *lexptr == 0)
1172     error_no_arg (_("expression to compute"));
1173
1174   old_chain = make_cleanup (free_funcalls, 0 /*ignore*/);
1175   funcall_chain = 0;
1176
1177   expression_context_block = block;
1178
1179   /* If no context specified, try using the current frame, if any.  */
1180   if (!expression_context_block)
1181     expression_context_block = get_selected_block (&expression_context_pc);
1182   else if (pc == 0)
1183     expression_context_pc = BLOCK_START (expression_context_block);
1184   else
1185     expression_context_pc = pc;
1186
1187   /* Fall back to using the current source static context, if any.  */
1188
1189   if (!expression_context_block)
1190     {
1191       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
1192       if (cursal.symtab)
1193         expression_context_block
1194           = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (cursal.symtab),
1195                                STATIC_BLOCK);
1196       if (expression_context_block)
1197         expression_context_pc = BLOCK_START (expression_context_block);
1198     }
1199
1200   if (language_mode == language_mode_auto && block != NULL)
1201     {
1202       /* Find the language associated to the given context block.
1203          Default to the current language if it can not be determined.
1204
1205          Note that using the language corresponding to the current frame
1206          can sometimes give unexpected results.  For instance, this
1207          routine is often called several times during the inferior
1208          startup phase to re-parse breakpoint expressions after
1209          a new shared library has been loaded.  The language associated
1210          to the current frame at this moment is not relevant for
1211          the breakpoint.  Using it would therefore be silly, so it seems
1212          better to rely on the current language rather than relying on
1213          the current frame language to parse the expression.  That's why
1214          we do the following language detection only if the context block
1215          has been specifically provided.  */
1216       struct symbol *func = block_linkage_function (block);
1217
1218       if (func != NULL)
1219         lang = language_def (SYMBOL_LANGUAGE (func));
1220       if (lang == NULL || lang->la_language == language_unknown)
1221         lang = current_language;
1222     }
1223   else
1224     lang = current_language;
1225
1226   /* get_current_arch may reset CURRENT_LANGUAGE via select_frame.
1227      While we need CURRENT_LANGUAGE to be set to LANG (for lookup_symbol
1228      and others called from *.y) ensure CURRENT_LANGUAGE gets restored
1229      to the value matching SELECTED_FRAME as set by get_current_arch.  */
1230
1231   initialize_expout (&ps, 10, lang, get_current_arch ());
1232
1233   scoped_restore_current_language lang_saver;
1234   set_language (lang->la_language);
1235
1236   TRY
1237     {
1238       if (lang->la_parser (&ps))
1239         lang->la_error (NULL);
1240     }
1241   CATCH (except, RETURN_MASK_ALL)
1242     {
1243       if (! parse_completion)
1244         {
1245           xfree (ps.expout);
1246           throw_exception (except);
1247         }
1248     }
1249   END_CATCH
1250
1251   reallocate_expout (&ps);
1252
1253   /* Convert expression from postfix form as generated by yacc
1254      parser, to a prefix form.  */
1255
1256   if (expressiondebug)
1257     dump_raw_expression (ps.expout, gdb_stdlog,
1258                          "before conversion to prefix form");
1259
1260   subexp = prefixify_expression (ps.expout);
1261   if (out_subexp)
1262     *out_subexp = subexp;
1263
1264   lang->la_post_parser (&ps.expout, void_context_p);
1265
1266   if (expressiondebug)
1267     dump_prefix_expression (ps.expout, gdb_stdlog);
1268
1269   discard_cleanups (old_chain);
1270
1271   *stringptr = lexptr;
1272   return expression_up (ps.expout);
1273 }
1274
1275 /* Parse STRING as an expression, and complain if this fails
1276    to use up all of the contents of STRING.  */
1277
1278 expression_up
1279 parse_expression (const char *string)
1280 {
1281   expression_up exp = parse_exp_1 (&string, 0, 0, 0);
1282   if (*string)
1283     error (_("Junk after end of expression."));
1284   return exp;
1285 }
1286
1287 /* Same as parse_expression, but using the given language (LANG)
1288    to parse the expression.  */
1289
1290 expression_up
1291 parse_expression_with_language (const char *string, enum language lang)
1292 {
1293   gdb::optional<scoped_restore_current_language> lang_saver;
1294   if (current_language->la_language != lang)
1295     {
1296       lang_saver.emplace ();
1297       set_language (lang);
1298     }
1299
1300   return parse_expression (string);
1301 }
1302
1303 /* Parse STRING as an expression.  If parsing ends in the middle of a
1304    field reference, return the type of the left-hand-side of the
1305    reference; furthermore, if the parsing ends in the field name,
1306    return the field name in *NAME.  If the parsing ends in the middle
1307    of a field reference, but the reference is somehow invalid, throw
1308    an exception.  In all other cases, return NULL.  Returned non-NULL
1309    *NAME must be freed by the caller.  */
1310
1311 struct type *
1312 parse_expression_for_completion (const char *string, char **name,
1313                                  enum type_code *code)
1314 {
1315   expression_up exp;
1316   struct value *val;
1317   int subexp;
1318
1319   TRY
1320     {
1321       parse_completion = 1;
1322       exp = parse_exp_in_context (&string, 0, 0, 0, 0, &subexp);
1323     }
1324   CATCH (except, RETURN_MASK_ERROR)
1325     {
1326       /* Nothing, EXP remains NULL.  */
1327     }
1328   END_CATCH
1329
1330   parse_completion = 0;
1331   if (exp == NULL)
1332     return NULL;
1333
1334   if (expout_tag_completion_type != TYPE_CODE_UNDEF)
1335     {
1336       *code = expout_tag_completion_type;
1337       *name = expout_completion_name;
1338       expout_completion_name = NULL;
1339       return NULL;
1340     }
1341
1342   if (expout_last_struct == -1)
1343     return NULL;
1344
1345   *name = extract_field_op (exp.get (), &subexp);
1346   if (!*name)
1347     return NULL;
1348
1349   /* This might throw an exception.  If so, we want to let it
1350      propagate.  */
1351   val = evaluate_subexpression_type (exp.get (), subexp);
1352   /* (*NAME) is a part of the EXP memory block freed below.  */
1353   *name = xstrdup (*name);
1354
1355   return value_type (val);
1356 }
1357
1358 /* A post-parser that does nothing.  */
1359
1360 void
1361 null_post_parser (struct expression **exp, int void_context_p)
1362 {
1363 }
1364
1365 /* Parse floating point value P of length LEN.
1366    Return 0 (false) if invalid, 1 (true) if valid.
1367    The successfully parsed number is stored in D.
1368    *SUFFIX points to the suffix of the number in P.
1369
1370    NOTE: This accepts the floating point syntax that sscanf accepts.  */
1371
1372 int
1373 parse_float (const char *p, int len, DOUBLEST *d, const char **suffix)
1374 {
1375   char *copy;
1376   int n, num;
1377
1378   copy = (char *) xmalloc (len + 1);
1379   memcpy (copy, p, len);
1380   copy[len] = 0;
1381
1382   num = sscanf (copy, "%" DOUBLEST_SCAN_FORMAT "%n", d, &n);
1383   xfree (copy);
1384
1385   /* The sscanf man page suggests not making any assumptions on the effect
1386      of %n on the result, so we don't.
1387      That is why we simply test num == 0.  */
1388   if (num == 0)
1389     return 0;
1390
1391   *suffix = p + n;
1392   return 1;
1393 }
1394
1395 /* Parse floating point value P of length LEN, using the C syntax for floats.
1396    Return 0 (false) if invalid, 1 (true) if valid.
1397    The successfully parsed number is stored in *D.
1398    Its type is taken from builtin_type (gdbarch) and is stored in *T.  */
1399
1400 int
1401 parse_c_float (struct gdbarch *gdbarch, const char *p, int len,
1402                DOUBLEST *d, struct type **t)
1403 {
1404   const char *suffix;
1405   int suffix_len;
1406   const struct builtin_type *builtin_types = builtin_type (gdbarch);
1407
1408   if (! parse_float (p, len, d, &suffix))
1409     return 0;
1410
1411   suffix_len = p + len - suffix;
1412
1413   if (suffix_len == 0)
1414     *t = builtin_types->builtin_double;
1415   else if (suffix_len == 1)
1416     {
1417       /* Handle suffixes: 'f' for float, 'l' for long double.  */
1418       if (tolower (*suffix) == 'f')
1419         *t = builtin_types->builtin_float;
1420       else if (tolower (*suffix) == 'l')
1421         *t = builtin_types->builtin_long_double;
1422       else
1423         return 0;
1424     }
1425   else
1426     return 0;
1427
1428   return 1;
1429 }
1430 \f
1431 /* Stuff for maintaining a stack of types.  Currently just used by C, but
1432    probably useful for any language which declares its types "backwards".  */
1433
1434 /* Ensure that there are HOWMUCH open slots on the type stack STACK.  */
1435
1436 static void
1437 type_stack_reserve (struct type_stack *stack, int howmuch)
1438 {
1439   if (stack->depth + howmuch >= stack->size)
1440     {
1441       stack->size *= 2;
1442       if (stack->size < howmuch)
1443         stack->size = howmuch;
1444       stack->elements = XRESIZEVEC (union type_stack_elt, stack->elements,
1445                                     stack->size);
1446     }
1447 }
1448
1449 /* Ensure that there is a single open slot in the global type stack.  */
1450
1451 static void
1452 check_type_stack_depth (void)
1453 {
1454   type_stack_reserve (&type_stack, 1);
1455 }
1456
1457 /* A helper function for insert_type and insert_type_address_space.
1458    This does work of expanding the type stack and inserting the new
1459    element, ELEMENT, into the stack at location SLOT.  */
1460
1461 static void
1462 insert_into_type_stack (int slot, union type_stack_elt element)
1463 {
1464   check_type_stack_depth ();
1465
1466   if (slot < type_stack.depth)
1467     memmove (&type_stack.elements[slot + 1], &type_stack.elements[slot],
1468              (type_stack.depth - slot) * sizeof (union type_stack_elt));
1469   type_stack.elements[slot] = element;
1470   ++type_stack.depth;
1471 }
1472
1473 /* Insert a new type, TP, at the bottom of the type stack.  If TP is
1474    tp_pointer, tp_reference or tp_rvalue_reference, it is inserted at the
1475    bottom.  If TP is a qualifier, it is inserted at slot 1 (just above a
1476    previous tp_pointer) if there is anything on the stack, or simply pushed
1477    if the stack is empty.  Other values for TP are invalid.  */
1478
1479 void
1480 insert_type (enum type_pieces tp)
1481 {
1482   union type_stack_elt element;
1483   int slot;
1484
1485   gdb_assert (tp == tp_pointer || tp == tp_reference
1486               || tp == tp_rvalue_reference || tp == tp_const
1487               || tp == tp_volatile);
1488
1489   /* If there is anything on the stack (we know it will be a
1490      tp_pointer), insert the qualifier above it.  Otherwise, simply
1491      push this on the top of the stack.  */
1492   if (type_stack.depth && (tp == tp_const || tp == tp_volatile))
1493     slot = 1;
1494   else
1495     slot = 0;
1496
1497   element.piece = tp;
1498   insert_into_type_stack (slot, element);
1499 }
1500
1501 void
1502 push_type (enum type_pieces tp)
1503 {
1504   check_type_stack_depth ();
1505   type_stack.elements[type_stack.depth++].piece = tp;
1506 }
1507
1508 void
1509 push_type_int (int n)
1510 {
1511   check_type_stack_depth ();
1512   type_stack.elements[type_stack.depth++].int_val = n;
1513 }
1514
1515 /* Insert a tp_space_identifier and the corresponding address space
1516    value into the stack.  STRING is the name of an address space, as
1517    recognized by address_space_name_to_int.  If the stack is empty,
1518    the new elements are simply pushed.  If the stack is not empty,
1519    this function assumes that the first item on the stack is a
1520    tp_pointer, and the new values are inserted above the first
1521    item.  */
1522
1523 void
1524 insert_type_address_space (struct parser_state *pstate, char *string)
1525 {
1526   union type_stack_elt element;
1527   int slot;
1528
1529   /* If there is anything on the stack (we know it will be a
1530      tp_pointer), insert the address space qualifier above it.
1531      Otherwise, simply push this on the top of the stack.  */
1532   if (type_stack.depth)
1533     slot = 1;
1534   else
1535     slot = 0;
1536
1537   element.piece = tp_space_identifier;
1538   insert_into_type_stack (slot, element);
1539   element.int_val = address_space_name_to_int (parse_gdbarch (pstate),
1540                                                string);
1541   insert_into_type_stack (slot, element);
1542 }
1543
1544 enum type_pieces
1545 pop_type (void)
1546 {
1547   if (type_stack.depth)
1548     return type_stack.elements[--type_stack.depth].piece;
1549   return tp_end;
1550 }
1551
1552 int
1553 pop_type_int (void)
1554 {
1555   if (type_stack.depth)
1556     return type_stack.elements[--type_stack.depth].int_val;
1557   /* "Can't happen".  */
1558   return 0;
1559 }
1560
1561 /* Pop a type list element from the global type stack.  */
1562
1563 static VEC (type_ptr) *
1564 pop_typelist (void)
1565 {
1566   gdb_assert (type_stack.depth);
1567   return type_stack.elements[--type_stack.depth].typelist_val;
1568 }
1569
1570 /* Pop a type_stack element from the global type stack.  */
1571
1572 static struct type_stack *
1573 pop_type_stack (void)
1574 {
1575   gdb_assert (type_stack.depth);
1576   return type_stack.elements[--type_stack.depth].stack_val;
1577 }
1578
1579 /* Append the elements of the type stack FROM to the type stack TO.
1580    Always returns TO.  */
1581
1582 struct type_stack *
1583 append_type_stack (struct type_stack *to, struct type_stack *from)
1584 {
1585   type_stack_reserve (to, from->depth);
1586
1587   memcpy (&to->elements[to->depth], &from->elements[0],
1588           from->depth * sizeof (union type_stack_elt));
1589   to->depth += from->depth;
1590
1591   return to;
1592 }
1593
1594 /* Push the type stack STACK as an element on the global type stack.  */
1595
1596 void
1597 push_type_stack (struct type_stack *stack)
1598 {
1599   check_type_stack_depth ();
1600   type_stack.elements[type_stack.depth++].stack_val = stack;
1601   push_type (tp_type_stack);
1602 }
1603
1604 /* Copy the global type stack into a newly allocated type stack and
1605    return it.  The global stack is cleared.  The returned type stack
1606    must be freed with type_stack_cleanup.  */
1607
1608 struct type_stack *
1609 get_type_stack (void)
1610 {
1611   struct type_stack *result = XNEW (struct type_stack);
1612
1613   *result = type_stack;
1614   type_stack.depth = 0;
1615   type_stack.size = 0;
1616   type_stack.elements = NULL;
1617
1618   return result;
1619 }
1620
1621 /* A cleanup function that destroys a single type stack.  */
1622
1623 void
1624 type_stack_cleanup (void *arg)
1625 {
1626   struct type_stack *stack = (struct type_stack *) arg;
1627
1628   xfree (stack->elements);
1629   xfree (stack);
1630 }
1631
1632 /* Push a function type with arguments onto the global type stack.
1633    LIST holds the argument types.  If the final item in LIST is NULL,
1634    then the function will be varargs.  */
1635
1636 void
1637 push_typelist (VEC (type_ptr) *list)
1638 {
1639   check_type_stack_depth ();
1640   type_stack.elements[type_stack.depth++].typelist_val = list;
1641   push_type (tp_function_with_arguments);
1642 }
1643
1644 /* Pop the type stack and return the type which corresponds to FOLLOW_TYPE
1645    as modified by all the stuff on the stack.  */
1646 struct type *
1647 follow_types (struct type *follow_type)
1648 {
1649   int done = 0;
1650   int make_const = 0;
1651   int make_volatile = 0;
1652   int make_addr_space = 0;
1653   int array_size;
1654
1655   while (!done)
1656     switch (pop_type ())
1657       {
1658       case tp_end:
1659         done = 1;
1660         if (make_const)
1661           follow_type = make_cv_type (make_const, 
1662                                       TYPE_VOLATILE (follow_type), 
1663                                       follow_type, 0);
1664         if (make_volatile)
1665           follow_type = make_cv_type (TYPE_CONST (follow_type), 
1666                                       make_volatile, 
1667                                       follow_type, 0);
1668         if (make_addr_space)
1669           follow_type = make_type_with_address_space (follow_type, 
1670                                                       make_addr_space);
1671         make_const = make_volatile = 0;
1672         make_addr_space = 0;
1673         break;
1674       case tp_const:
1675         make_const = 1;
1676         break;
1677       case tp_volatile:
1678         make_volatile = 1;
1679         break;
1680       case tp_space_identifier:
1681         make_addr_space = pop_type_int ();
1682         break;
1683       case tp_pointer:
1684         follow_type = lookup_pointer_type (follow_type);
1685         if (make_const)
1686           follow_type = make_cv_type (make_const, 
1687                                       TYPE_VOLATILE (follow_type), 
1688                                       follow_type, 0);
1689         if (make_volatile)
1690           follow_type = make_cv_type (TYPE_CONST (follow_type), 
1691                                       make_volatile, 
1692                                       follow_type, 0);
1693         if (make_addr_space)
1694           follow_type = make_type_with_address_space (follow_type, 
1695                                                       make_addr_space);
1696         make_const = make_volatile = 0;
1697         make_addr_space = 0;
1698         break;
1699       case tp_reference:
1700          follow_type = lookup_lvalue_reference_type (follow_type);
1701          goto process_reference;
1702         case tp_rvalue_reference:
1703          follow_type = lookup_rvalue_reference_type (follow_type);
1704         process_reference:
1705          if (make_const)
1706            follow_type = make_cv_type (make_const,
1707                                        TYPE_VOLATILE (follow_type),
1708                                        follow_type, 0);
1709          if (make_volatile)
1710            follow_type = make_cv_type (TYPE_CONST (follow_type),
1711                                        make_volatile,
1712                                        follow_type, 0);
1713          if (make_addr_space)
1714            follow_type = make_type_with_address_space (follow_type,
1715                                                        make_addr_space);
1716         make_const = make_volatile = 0;
1717         make_addr_space = 0;
1718         break;
1719       case tp_array:
1720         array_size = pop_type_int ();
1721         /* FIXME-type-allocation: need a way to free this type when we are
1722            done with it.  */
1723         follow_type =
1724           lookup_array_range_type (follow_type,
1725                                    0, array_size >= 0 ? array_size - 1 : 0);
1726         if (array_size < 0)
1727           TYPE_HIGH_BOUND_KIND (TYPE_INDEX_TYPE (follow_type))
1728             = PROP_UNDEFINED;
1729         break;
1730       case tp_function:
1731         /* FIXME-type-allocation: need a way to free this type when we are
1732            done with it.  */
1733         follow_type = lookup_function_type (follow_type);
1734         break;
1735
1736       case tp_function_with_arguments:
1737         {
1738           VEC (type_ptr) *args = pop_typelist ();
1739
1740           follow_type
1741             = lookup_function_type_with_arguments (follow_type,
1742                                                    VEC_length (type_ptr, args),
1743                                                    VEC_address (type_ptr,
1744                                                                 args));
1745           VEC_free (type_ptr, args);
1746         }
1747         break;
1748
1749       case tp_type_stack:
1750         {
1751           struct type_stack *stack = pop_type_stack ();
1752           /* Sort of ugly, but not really much worse than the
1753              alternatives.  */
1754           struct type_stack save = type_stack;
1755
1756           type_stack = *stack;
1757           follow_type = follow_types (follow_type);
1758           gdb_assert (type_stack.depth == 0);
1759
1760           type_stack = save;
1761         }
1762         break;
1763       default:
1764         gdb_assert_not_reached ("unrecognized tp_ value in follow_types");
1765       }
1766   return follow_type;
1767 }
1768 \f
1769 /* This function avoids direct calls to fprintf 
1770    in the parser generated debug code.  */
1771 void
1772 parser_fprintf (FILE *x, const char *y, ...)
1773
1774   va_list args;
1775
1776   va_start (args, y);
1777   if (x == stderr)
1778     vfprintf_unfiltered (gdb_stderr, y, args); 
1779   else
1780     {
1781       fprintf_unfiltered (gdb_stderr, " Unknown FILE used.\n");
1782       vfprintf_unfiltered (gdb_stderr, y, args);
1783     }
1784   va_end (args);
1785 }
1786
1787 /* Implementation of the exp_descriptor method operator_check.  */
1788
1789 int
1790 operator_check_standard (struct expression *exp, int pos,
1791                          int (*objfile_func) (struct objfile *objfile,
1792                                               void *data),
1793                          void *data)
1794 {
1795   const union exp_element *const elts = exp->elts;
1796   struct type *type = NULL;
1797   struct objfile *objfile = NULL;
1798
1799   /* Extended operators should have been already handled by exp_descriptor
1800      iterate method of its specific language.  */
1801   gdb_assert (elts[pos].opcode < OP_EXTENDED0);
1802
1803   /* Track the callers of write_exp_elt_type for this table.  */
1804
1805   switch (elts[pos].opcode)
1806     {
1807     case BINOP_VAL:
1808     case OP_COMPLEX:
1809     case OP_DECFLOAT:
1810     case OP_DOUBLE:
1811     case OP_LONG:
1812     case OP_SCOPE:
1813     case OP_TYPE:
1814     case UNOP_CAST:
1815     case UNOP_MAX:
1816     case UNOP_MEMVAL:
1817     case UNOP_MIN:
1818       type = elts[pos + 1].type;
1819       break;
1820
1821     case TYPE_INSTANCE:
1822       {
1823         LONGEST arg, nargs = elts[pos + 1].longconst;
1824
1825         for (arg = 0; arg < nargs; arg++)
1826           {
1827             struct type *type = elts[pos + 2 + arg].type;
1828             struct objfile *objfile = TYPE_OBJFILE (type);
1829
1830             if (objfile && (*objfile_func) (objfile, data))
1831               return 1;
1832           }
1833       }
1834       break;
1835
1836     case UNOP_MEMVAL_TLS:
1837       objfile = elts[pos + 1].objfile;
1838       type = elts[pos + 2].type;
1839       break;
1840
1841     case OP_VAR_VALUE:
1842       {
1843         const struct block *const block = elts[pos + 1].block;
1844         const struct symbol *const symbol = elts[pos + 2].symbol;
1845
1846         /* Check objfile where the variable itself is placed.
1847            SYMBOL_OBJ_SECTION (symbol) may be NULL.  */
1848         if ((*objfile_func) (symbol_objfile (symbol), data))
1849           return 1;
1850
1851         /* Check objfile where is placed the code touching the variable.  */
1852         objfile = lookup_objfile_from_block (block);
1853
1854         type = SYMBOL_TYPE (symbol);
1855       }
1856       break;
1857     case OP_VAR_MSYM_VALUE:
1858       objfile = elts[pos + 1].objfile;
1859       break;
1860     }
1861
1862   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
1863
1864   if (type && TYPE_OBJFILE (type)
1865       && (*objfile_func) (TYPE_OBJFILE (type), data))
1866     return 1;
1867   if (objfile && (*objfile_func) (objfile, data))
1868     return 1;
1869
1870   return 0;
1871 }
1872
1873 /* Call OBJFILE_FUNC for any objfile found being referenced by EXP.
1874    OBJFILE_FUNC is never called with NULL OBJFILE.  OBJFILE_FUNC get
1875    passed an arbitrary caller supplied DATA pointer.  If OBJFILE_FUNC
1876    returns non-zero value then (any other) non-zero value is immediately
1877    returned to the caller.  Otherwise zero is returned after iterating
1878    through whole EXP.  */
1879
1880 static int
1881 exp_iterate (struct expression *exp,
1882              int (*objfile_func) (struct objfile *objfile, void *data),
1883              void *data)
1884 {
1885   int endpos;
1886
1887   for (endpos = exp->nelts; endpos > 0; )
1888     {
1889       int pos, args, oplen = 0;
1890
1891       operator_length (exp, endpos, &oplen, &args);
1892       gdb_assert (oplen > 0);
1893
1894       pos = endpos - oplen;
1895       if (exp->language_defn->la_exp_desc->operator_check (exp, pos,
1896                                                            objfile_func, data))
1897         return 1;
1898
1899       endpos = pos;
1900     }
1901
1902   return 0;
1903 }
1904
1905 /* Helper for exp_uses_objfile.  */
1906
1907 static int
1908 exp_uses_objfile_iter (struct objfile *exp_objfile, void *objfile_voidp)
1909 {
1910   struct objfile *objfile = (struct objfile *) objfile_voidp;
1911
1912   if (exp_objfile->separate_debug_objfile_backlink)
1913     exp_objfile = exp_objfile->separate_debug_objfile_backlink;
1914
1915   return exp_objfile == objfile;
1916 }
1917
1918 /* Return 1 if EXP uses OBJFILE (and will become dangling when OBJFILE
1919    is unloaded), otherwise return 0.  OBJFILE must not be a separate debug info
1920    file.  */
1921
1922 int
1923 exp_uses_objfile (struct expression *exp, struct objfile *objfile)
1924 {
1925   gdb_assert (objfile->separate_debug_objfile_backlink == NULL);
1926
1927   return exp_iterate (exp, exp_uses_objfile_iter, objfile);
1928 }
1929
1930 /* See definition in parser-defs.h.  */
1931
1932 void
1933 increase_expout_size (struct parser_state *ps, size_t lenelt)
1934 {
1935   if ((ps->expout_ptr + lenelt) >= ps->expout_size)
1936     {
1937       ps->expout_size = std::max (ps->expout_size * 2,
1938                              ps->expout_ptr + lenelt + 10);
1939       ps->expout = (struct expression *)
1940         xrealloc (ps->expout, (sizeof (struct expression)
1941                                + EXP_ELEM_TO_BYTES (ps->expout_size)));
1942     }
1943 }
1944
1945 void
1946 _initialize_parse (void)
1947 {
1948   type_stack.size = 0;
1949   type_stack.depth = 0;
1950   type_stack.elements = NULL;
1951
1952   add_setshow_zuinteger_cmd ("expression", class_maintenance,
1953                              &expressiondebug,
1954                              _("Set expression debugging."),
1955                              _("Show expression debugging."),
1956                              _("When non-zero, the internal representation "
1957                                "of expressions will be printed."),
1958                              NULL,
1959                              show_expressiondebug,
1960                              &setdebuglist, &showdebuglist);
1961   add_setshow_boolean_cmd ("parser", class_maintenance,
1962                             &parser_debug,
1963                            _("Set parser debugging."),
1964                            _("Show parser debugging."),
1965                            _("When non-zero, expression parser "
1966                              "tracing will be enabled."),
1967                             NULL,
1968                             show_parserdebug,
1969                             &setdebuglist, &showdebuglist);
1970 }