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