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