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