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