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