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