print_insn_sh cleanup:
[deliverable/binutils-gdb.git] / gdb / parse.c
CommitLineData
c906108c 1/* Parse expressions for GDB.
b6ba6518
KB
2 Copyright 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
3 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
c906108c
SS
4 Modified from expread.y by the Department of Computer Science at the
5 State University of New York at Buffalo, 1991.
6
c5aa993b 7 This file is part of GDB.
c906108c 8
c5aa993b
JM
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
c906108c 13
c5aa993b
JM
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
c906108c 18
c5aa993b
JM
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA. */
c906108c
SS
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. */
c5aa993b 32
cce74817
JM
33#include <ctype.h>
34
c906108c
SS
35#include "defs.h"
36#include "gdb_string.h"
c906108c
SS
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 "parser-defs.h"
45#include "gdbcmd.h"
c5aa993b 46#include "symfile.h" /* for overlay functions */
e2305d34
MS
47#include "inferior.h" /* for NUM_PSEUDO_REGS. NOTE: replace
48 with "gdbarch.h" when appropriate. */
d16aafd8 49#include "doublest.h"
0406ec40
AC
50#include "builtin-regs.h"
51#include "gdb_assert.h"
e2305d34 52
2df3850c
JM
53\f
54/* Symbols which architectures can redefine. */
55
56/* Some systems have routines whose names start with `$'. Giving this
57 macro a non-zero value tells GDB's expression parser to check for
58 such routines when parsing tokens that begin with `$'.
59
60 On HP-UX, certain system routines (millicode) have names beginning
61 with `$' or `$$'. For example, `$$dyncall' is a millicode routine
62 that handles inter-space procedure calls on PA-RISC. */
63#ifndef SYMBOLS_CAN_START_WITH_DOLLAR
64#define SYMBOLS_CAN_START_WITH_DOLLAR (0)
65#endif
66
67
c906108c
SS
68\f
69/* Global variables declared in parser-defs.h (and commented there). */
70struct expression *expout;
71int expout_size;
72int expout_ptr;
73struct block *expression_context_block;
74struct block *innermost_block;
75int arglist_len;
76union type_stack_elt *type_stack;
77int type_stack_depth, type_stack_size;
78char *lexptr;
665132f9 79char *prev_lexptr;
c906108c
SS
80char *namecopy;
81int paren_depth;
82int comma_terminates;
83\f
c906108c 84static int expressiondebug = 0;
c906108c
SS
85
86extern int hp_som_som_object_present;
87
74b7792f 88static void free_funcalls (void *ignore);
c906108c 89
a14ed312 90static void prefixify_expression (struct expression *);
c906108c
SS
91
92static void
a14ed312 93prefixify_subexp (struct expression *, struct expression *, int, int);
c906108c 94
a14ed312 95void _initialize_parse (void);
392a587b 96
c906108c
SS
97/* Data structure for saving values of arglist_len for function calls whose
98 arguments contain other function calls. */
99
100struct funcall
101 {
102 struct funcall *next;
103 int arglist_len;
104 };
105
106static struct funcall *funcall_chain;
107
c906108c 108/* The generic method for targets to specify how their registers are
96cb11df
AC
109 named. The mapping can be derived from two sources: REGISTER_NAME;
110 or builtin regs. */
c906108c
SS
111
112int
fba45db2 113target_map_name_to_register (char *str, int len)
c906108c
SS
114{
115 int i;
116
d1c7e53b
AC
117 /* Search register name space. */
118 for (i = 0; i < NUM_REGS + NUM_PSEUDO_REGS; i++)
1a1404f1
MS
119 if (REGISTER_NAME (i) && len == strlen (REGISTER_NAME (i))
120 && STREQN (str, REGISTER_NAME (i), len))
121 {
122 return i;
123 }
124
96cb11df
AC
125 /* Try builtin registers. */
126 i = builtin_reg_map_name_to_regnum (str, len);
127 if (i >= 0)
128 {
129 gdb_assert (i >= NUM_REGS + NUM_PSEUDO_REGS);
130 return i;
131 }
c906108c 132
0406ec40
AC
133 /* Try builtin registers. */
134 i = builtin_reg_map_name_to_regnum (str, len);
135 if (i >= 0)
136 {
137 gdb_assert (i >= NUM_REGS + NUM_PSEUDO_REGS);
138 return i;
139 }
140
c906108c
SS
141 return -1;
142}
143
144/* Begin counting arguments for a function call,
145 saving the data about any containing call. */
146
147void
fba45db2 148start_arglist (void)
c906108c
SS
149{
150 register struct funcall *new;
151
152 new = (struct funcall *) xmalloc (sizeof (struct funcall));
153 new->next = funcall_chain;
154 new->arglist_len = arglist_len;
155 arglist_len = 0;
156 funcall_chain = new;
157}
158
159/* Return the number of arguments in a function call just terminated,
160 and restore the data for the containing function call. */
161
162int
fba45db2 163end_arglist (void)
c906108c
SS
164{
165 register int val = arglist_len;
166 register struct funcall *call = funcall_chain;
167 funcall_chain = call->next;
168 arglist_len = call->arglist_len;
b8c9b27d 169 xfree (call);
c906108c
SS
170 return val;
171}
172
173/* Free everything in the funcall chain.
174 Used when there is an error inside parsing. */
175
176static void
74b7792f 177free_funcalls (void *ignore)
c906108c
SS
178{
179 register struct funcall *call, *next;
180
181 for (call = funcall_chain; call; call = next)
182 {
183 next = call->next;
b8c9b27d 184 xfree (call);
c906108c
SS
185 }
186}
187\f
188/* This page contains the functions for adding data to the struct expression
189 being constructed. */
190
191/* Add one element to the end of the expression. */
192
193/* To avoid a bug in the Sun 4 compiler, we pass things that can fit into
194 a register through here */
195
196void
fba45db2 197write_exp_elt (union exp_element expelt)
c906108c
SS
198{
199 if (expout_ptr >= expout_size)
200 {
201 expout_size *= 2;
202 expout = (struct expression *)
203 xrealloc ((char *) expout, sizeof (struct expression)
204 + EXP_ELEM_TO_BYTES (expout_size));
205 }
206 expout->elts[expout_ptr++] = expelt;
207}
208
209void
fba45db2 210write_exp_elt_opcode (enum exp_opcode expelt)
c906108c
SS
211{
212 union exp_element tmp;
213
214 tmp.opcode = expelt;
215
216 write_exp_elt (tmp);
217}
218
219void
fba45db2 220write_exp_elt_sym (struct symbol *expelt)
c906108c
SS
221{
222 union exp_element tmp;
223
224 tmp.symbol = expelt;
225
226 write_exp_elt (tmp);
227}
228
229void
fba45db2 230write_exp_elt_block (struct block *b)
c906108c
SS
231{
232 union exp_element tmp;
233 tmp.block = b;
234 write_exp_elt (tmp);
235}
236
237void
fba45db2 238write_exp_elt_longcst (LONGEST expelt)
c906108c
SS
239{
240 union exp_element tmp;
241
242 tmp.longconst = expelt;
243
244 write_exp_elt (tmp);
245}
246
247void
fba45db2 248write_exp_elt_dblcst (DOUBLEST expelt)
c906108c
SS
249{
250 union exp_element tmp;
251
252 tmp.doubleconst = expelt;
253
254 write_exp_elt (tmp);
255}
256
257void
fba45db2 258write_exp_elt_type (struct type *expelt)
c906108c
SS
259{
260 union exp_element tmp;
261
262 tmp.type = expelt;
263
264 write_exp_elt (tmp);
265}
266
267void
fba45db2 268write_exp_elt_intern (struct internalvar *expelt)
c906108c
SS
269{
270 union exp_element tmp;
271
272 tmp.internalvar = expelt;
273
274 write_exp_elt (tmp);
275}
276
277/* Add a string constant to the end of the expression.
278
279 String constants are stored by first writing an expression element
280 that contains the length of the string, then stuffing the string
281 constant itself into however many expression elements are needed
282 to hold it, and then writing another expression element that contains
283 the length of the string. I.E. an expression element at each end of
284 the string records the string length, so you can skip over the
285 expression elements containing the actual string bytes from either
286 end of the string. Note that this also allows gdb to handle
287 strings with embedded null bytes, as is required for some languages.
288
289 Don't be fooled by the fact that the string is null byte terminated,
290 this is strictly for the convenience of debugging gdb itself. Gdb
291 Gdb does not depend up the string being null terminated, since the
292 actual length is recorded in expression elements at each end of the
293 string. The null byte is taken into consideration when computing how
294 many expression elements are required to hold the string constant, of
295 course. */
296
297
298void
fba45db2 299write_exp_string (struct stoken str)
c906108c
SS
300{
301 register int len = str.length;
302 register int lenelt;
303 register char *strdata;
304
305 /* Compute the number of expression elements required to hold the string
306 (including a null byte terminator), along with one expression element
307 at each end to record the actual string length (not including the
308 null byte terminator). */
309
310 lenelt = 2 + BYTES_TO_EXP_ELEM (len + 1);
311
312 /* Ensure that we have enough available expression elements to store
313 everything. */
314
315 if ((expout_ptr + lenelt) >= expout_size)
316 {
317 expout_size = max (expout_size * 2, expout_ptr + lenelt + 10);
318 expout = (struct expression *)
319 xrealloc ((char *) expout, (sizeof (struct expression)
320 + EXP_ELEM_TO_BYTES (expout_size)));
321 }
322
323 /* Write the leading length expression element (which advances the current
324 expression element index), then write the string constant followed by a
325 terminating null byte, and then write the trailing length expression
326 element. */
327
328 write_exp_elt_longcst ((LONGEST) len);
329 strdata = (char *) &expout->elts[expout_ptr];
330 memcpy (strdata, str.ptr, len);
331 *(strdata + len) = '\0';
332 expout_ptr += lenelt - 2;
333 write_exp_elt_longcst ((LONGEST) len);
334}
335
336/* Add a bitstring constant to the end of the expression.
337
338 Bitstring constants are stored by first writing an expression element
339 that contains the length of the bitstring (in bits), then stuffing the
340 bitstring constant itself into however many expression elements are
341 needed to hold it, and then writing another expression element that
342 contains the length of the bitstring. I.E. an expression element at
343 each end of the bitstring records the bitstring length, so you can skip
344 over the expression elements containing the actual bitstring bytes from
345 either end of the bitstring. */
346
347void
fba45db2 348write_exp_bitstring (struct stoken str)
c906108c
SS
349{
350 register int bits = str.length; /* length in bits */
351 register int len = (bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
352 register int lenelt;
353 register char *strdata;
354
355 /* Compute the number of expression elements required to hold the bitstring,
356 along with one expression element at each end to record the actual
357 bitstring length in bits. */
358
359 lenelt = 2 + BYTES_TO_EXP_ELEM (len);
360
361 /* Ensure that we have enough available expression elements to store
362 everything. */
363
364 if ((expout_ptr + lenelt) >= expout_size)
365 {
366 expout_size = max (expout_size * 2, expout_ptr + lenelt + 10);
367 expout = (struct expression *)
368 xrealloc ((char *) expout, (sizeof (struct expression)
369 + EXP_ELEM_TO_BYTES (expout_size)));
370 }
371
372 /* Write the leading length expression element (which advances the current
373 expression element index), then write the bitstring constant, and then
374 write the trailing length expression element. */
375
376 write_exp_elt_longcst ((LONGEST) bits);
377 strdata = (char *) &expout->elts[expout_ptr];
378 memcpy (strdata, str.ptr, len);
379 expout_ptr += lenelt - 2;
380 write_exp_elt_longcst ((LONGEST) bits);
381}
382
383/* Add the appropriate elements for a minimal symbol to the end of
384 the expression. The rationale behind passing in text_symbol_type and
385 data_symbol_type was so that Modula-2 could pass in WORD for
386 data_symbol_type. Perhaps it still is useful to have those types vary
387 based on the language, but they no longer have names like "int", so
388 the initial rationale is gone. */
389
390static struct type *msym_text_symbol_type;
391static struct type *msym_data_symbol_type;
392static struct type *msym_unknown_symbol_type;
393
394void
a858089e
MS
395write_exp_msymbol (struct minimal_symbol *msymbol,
396 struct type *text_symbol_type,
397 struct type *data_symbol_type)
c906108c
SS
398{
399 CORE_ADDR addr;
400
401 write_exp_elt_opcode (OP_LONG);
a858089e
MS
402 /* Let's make the type big enough to hold a 64-bit address. */
403 write_exp_elt_type (builtin_type_CORE_ADDR);
c906108c
SS
404
405 addr = SYMBOL_VALUE_ADDRESS (msymbol);
406 if (overlay_debugging)
407 addr = symbol_overlayed_address (addr, SYMBOL_BFD_SECTION (msymbol));
408 write_exp_elt_longcst ((LONGEST) addr);
c5aa993b 409
c906108c
SS
410 write_exp_elt_opcode (OP_LONG);
411
412 write_exp_elt_opcode (UNOP_MEMVAL);
c5aa993b 413 switch (msymbol->type)
c906108c
SS
414 {
415 case mst_text:
416 case mst_file_text:
417 case mst_solib_trampoline:
418 write_exp_elt_type (msym_text_symbol_type);
419 break;
420
421 case mst_data:
422 case mst_file_data:
423 case mst_bss:
424 case mst_file_bss:
425 write_exp_elt_type (msym_data_symbol_type);
426 break;
427
428 default:
429 write_exp_elt_type (msym_unknown_symbol_type);
430 break;
431 }
432 write_exp_elt_opcode (UNOP_MEMVAL);
433}
434\f
435/* Recognize tokens that start with '$'. These include:
436
c5aa993b
JM
437 $regname A native register name or a "standard
438 register name".
c906108c 439
c5aa993b
JM
440 $variable A convenience variable with a name chosen
441 by the user.
c906108c 442
c5aa993b
JM
443 $digits Value history with index <digits>, starting
444 from the first value which has index 1.
c906108c 445
c5aa993b
JM
446 $$digits Value history with index <digits> relative
447 to the last value. I.E. $$0 is the last
448 value, $$1 is the one previous to that, $$2
449 is the one previous to $$1, etc.
c906108c 450
c5aa993b 451 $ | $0 | $$0 The last value in the value history.
c906108c 452
c5aa993b
JM
453 $$ An abbreviation for the second to the last
454 value in the value history, I.E. $$1
c906108c 455
c5aa993b 456 */
c906108c
SS
457
458void
fba45db2 459write_dollar_variable (struct stoken str)
c906108c
SS
460{
461 /* Handle the tokens $digits; also $ (short for $0) and $$ (short for $$1)
462 and $$digits (equivalent to $<-digits> if you could type that). */
463
c906108c
SS
464 int negate = 0;
465 int i = 1;
466 /* Double dollar means negate the number and add -1 as well.
467 Thus $$ alone means -1. */
468 if (str.length >= 2 && str.ptr[1] == '$')
469 {
470 negate = 1;
471 i = 2;
472 }
473 if (i == str.length)
474 {
475 /* Just dollars (one or two) */
c5aa993b 476 i = -negate;
c906108c
SS
477 goto handle_last;
478 }
479 /* Is the rest of the token digits? */
480 for (; i < str.length; i++)
481 if (!(str.ptr[i] >= '0' && str.ptr[i] <= '9'))
482 break;
483 if (i == str.length)
484 {
485 i = atoi (str.ptr + 1 + negate);
486 if (negate)
c5aa993b 487 i = -i;
c906108c
SS
488 goto handle_last;
489 }
c5aa993b 490
c906108c
SS
491 /* Handle tokens that refer to machine registers:
492 $ followed by a register name. */
c5aa993b
JM
493 i = target_map_name_to_register (str.ptr + 1, str.length - 1);
494 if (i >= 0)
c906108c
SS
495 goto handle_register;
496
2df3850c 497 if (SYMBOLS_CAN_START_WITH_DOLLAR)
c906108c 498 {
2df3850c
JM
499 struct symbol *sym = NULL;
500 struct minimal_symbol *msym = NULL;
501
502 /* On HP-UX, certain system routines (millicode) have names beginning
503 with $ or $$, e.g. $$dyncall, which handles inter-space procedure
504 calls on PA-RISC. Check for those, first. */
505
506 /* This code is not enabled on non HP-UX systems, since worst case
507 symbol table lookup performance is awful, to put it mildly. */
508
509 sym = lookup_symbol (copy_name (str), (struct block *) NULL,
510 VAR_NAMESPACE, (int *) NULL, (struct symtab **) NULL);
511 if (sym)
512 {
513 write_exp_elt_opcode (OP_VAR_VALUE);
514 write_exp_elt_block (block_found); /* set by lookup_symbol */
515 write_exp_elt_sym (sym);
516 write_exp_elt_opcode (OP_VAR_VALUE);
517 return;
518 }
519 msym = lookup_minimal_symbol (copy_name (str), NULL, NULL);
520 if (msym)
521 {
522 write_exp_msymbol (msym,
523 lookup_function_type (builtin_type_int),
524 builtin_type_int);
525 return;
526 }
c906108c 527 }
c5aa993b 528
c906108c
SS
529 /* Any other names starting in $ are debugger internal variables. */
530
531 write_exp_elt_opcode (OP_INTERNALVAR);
532 write_exp_elt_intern (lookup_internalvar (copy_name (str) + 1));
c5aa993b 533 write_exp_elt_opcode (OP_INTERNALVAR);
c906108c 534 return;
c5aa993b 535handle_last:
c906108c
SS
536 write_exp_elt_opcode (OP_LAST);
537 write_exp_elt_longcst ((LONGEST) i);
538 write_exp_elt_opcode (OP_LAST);
539 return;
c5aa993b 540handle_register:
c906108c
SS
541 write_exp_elt_opcode (OP_REGISTER);
542 write_exp_elt_longcst (i);
c5aa993b 543 write_exp_elt_opcode (OP_REGISTER);
c906108c
SS
544 return;
545}
546
547
548/* Parse a string that is possibly a namespace / nested class
549 specification, i.e., something of the form A::B::C::x. Input
550 (NAME) is the entire string; LEN is the current valid length; the
551 output is a string, TOKEN, which points to the largest recognized
552 prefix which is a series of namespaces or classes. CLASS_PREFIX is
553 another output, which records whether a nested class spec was
554 recognized (= 1) or a fully qualified variable name was found (=
555 0). ARGPTR is side-effected (if non-NULL) to point to beyond the
556 string recognized and consumed by this routine.
557
558 The return value is a pointer to the symbol for the base class or
559 variable if found, or NULL if not found. Callers must check this
560 first -- if NULL, the outputs may not be correct.
561
562 This function is used c-exp.y. This is used specifically to get
563 around HP aCC (and possibly other compilers), which insists on
564 generating names with embedded colons for namespace or nested class
565 members.
566
567 (Argument LEN is currently unused. 1997-08-27)
568
569 Callers must free memory allocated for the output string TOKEN. */
570
c5aa993b
JM
571static const char coloncolon[2] =
572{':', ':'};
c906108c
SS
573
574struct symbol *
fba45db2
KB
575parse_nested_classes_for_hpacc (char *name, int len, char **token,
576 int *class_prefix, char **argptr)
c906108c 577{
c5aa993b
JM
578 /* Comment below comes from decode_line_1 which has very similar
579 code, which is called for "break" command parsing. */
580
581 /* We have what looks like a class or namespace
c906108c
SS
582 scope specification (A::B), possibly with many
583 levels of namespaces or classes (A::B::C::D).
584
585 Some versions of the HP ANSI C++ compiler (as also possibly
586 other compilers) generate class/function/member names with
587 embedded double-colons if they are inside namespaces. To
588 handle this, we loop a few times, considering larger and
589 larger prefixes of the string as though they were single
590 symbols. So, if the initially supplied string is
591 A::B::C::D::foo, we have to look up "A", then "A::B",
592 then "A::B::C", then "A::B::C::D", and finally
593 "A::B::C::D::foo" as single, monolithic symbols, because
594 A, B, C or D may be namespaces.
595
596 Note that namespaces can nest only inside other
597 namespaces, and not inside classes. So we need only
598 consider *prefixes* of the string; there is no need to look up
599 "B::C" separately as a symbol in the previous example. */
600
c5aa993b
JM
601 register char *p;
602 char *start, *end;
603 char *prefix = NULL;
604 char *tmp;
605 struct symbol *sym_class = NULL;
606 struct symbol *sym_var = NULL;
607 struct type *t;
c906108c
SS
608 int prefix_len = 0;
609 int done = 0;
c5aa993b 610 char *q;
c906108c
SS
611
612 /* Check for HP-compiled executable -- in other cases
613 return NULL, and caller must default to standard GDB
614 behaviour. */
615
616 if (!hp_som_som_object_present)
617 return (struct symbol *) NULL;
618
619 p = name;
620
c5aa993b
JM
621 /* Skip over whitespace and possible global "::" */
622 while (*p && (*p == ' ' || *p == '\t'))
623 p++;
c906108c
SS
624 if (p[0] == ':' && p[1] == ':')
625 p += 2;
c5aa993b
JM
626 while (*p && (*p == ' ' || *p == '\t'))
627 p++;
628
c906108c
SS
629 while (1)
630 {
631 /* Get to the end of the next namespace or class spec. */
632 /* If we're looking at some non-token, fail immediately */
633 start = p;
634 if (!(isalpha (*p) || *p == '$' || *p == '_'))
c5aa993b 635 return (struct symbol *) NULL;
c906108c 636 p++;
c5aa993b
JM
637 while (*p && (isalnum (*p) || *p == '$' || *p == '_'))
638 p++;
639
640 if (*p == '<')
641 {
642 /* If we have the start of a template specification,
643 scan right ahead to its end */
644 q = find_template_name_end (p);
645 if (q)
646 p = q;
647 }
648
c906108c
SS
649 end = p;
650
c5aa993b
JM
651 /* Skip over "::" and whitespace for next time around */
652 while (*p && (*p == ' ' || *p == '\t'))
653 p++;
c906108c 654 if (p[0] == ':' && p[1] == ':')
c5aa993b
JM
655 p += 2;
656 while (*p && (*p == ' ' || *p == '\t'))
657 p++;
c906108c 658
c5aa993b 659 /* Done with tokens? */
c906108c 660 if (!*p || !(isalpha (*p) || *p == '$' || *p == '_'))
c5aa993b 661 done = 1;
c906108c
SS
662
663 tmp = (char *) alloca (prefix_len + end - start + 3);
664 if (prefix)
c5aa993b
JM
665 {
666 memcpy (tmp, prefix, prefix_len);
667 memcpy (tmp + prefix_len, coloncolon, 2);
668 memcpy (tmp + prefix_len + 2, start, end - start);
669 tmp[prefix_len + 2 + end - start] = '\000';
670 }
c906108c 671 else
c5aa993b
JM
672 {
673 memcpy (tmp, start, end - start);
674 tmp[end - start] = '\000';
675 }
676
c906108c
SS
677 prefix = tmp;
678 prefix_len = strlen (prefix);
c5aa993b 679
c906108c
SS
680 /* See if the prefix we have now is something we know about */
681
c5aa993b
JM
682 if (!done)
683 {
684 /* More tokens to process, so this must be a class/namespace */
685 sym_class = lookup_symbol (prefix, 0, STRUCT_NAMESPACE,
686 0, (struct symtab **) NULL);
687 }
c906108c 688 else
c5aa993b
JM
689 {
690 /* No more tokens, so try as a variable first */
691 sym_var = lookup_symbol (prefix, 0, VAR_NAMESPACE,
692 0, (struct symtab **) NULL);
693 /* If failed, try as class/namespace */
694 if (!sym_var)
695 sym_class = lookup_symbol (prefix, 0, STRUCT_NAMESPACE,
696 0, (struct symtab **) NULL);
697 }
c906108c
SS
698
699 if (sym_var ||
c5aa993b
JM
700 (sym_class &&
701 (t = check_typedef (SYMBOL_TYPE (sym_class)),
702 (TYPE_CODE (t) == TYPE_CODE_STRUCT
703 || TYPE_CODE (t) == TYPE_CODE_UNION))))
704 {
705 /* We found a valid token */
706 *token = (char *) xmalloc (prefix_len + 1);
707 memcpy (*token, prefix, prefix_len);
708 (*token)[prefix_len] = '\000';
709 break;
710 }
711
712 /* No variable or class/namespace found, no more tokens */
c906108c 713 if (done)
c5aa993b 714 return (struct symbol *) NULL;
c906108c
SS
715 }
716
717 /* Out of loop, so we must have found a valid token */
718 if (sym_var)
719 *class_prefix = 0;
720 else
721 *class_prefix = 1;
722
723 if (argptr)
724 *argptr = done ? p : end;
725
c5aa993b 726 return sym_var ? sym_var : sym_class; /* found */
c906108c
SS
727}
728
729char *
fba45db2 730find_template_name_end (char *p)
c906108c
SS
731{
732 int depth = 1;
733 int just_seen_right = 0;
734 int just_seen_colon = 0;
735 int just_seen_space = 0;
c5aa993b 736
c906108c
SS
737 if (!p || (*p != '<'))
738 return 0;
739
740 while (*++p)
741 {
742 switch (*p)
c5aa993b
JM
743 {
744 case '\'':
745 case '\"':
746 case '{':
747 case '}':
748 /* In future, may want to allow these?? */
749 return 0;
750 case '<':
751 depth++; /* start nested template */
752 if (just_seen_colon || just_seen_right || just_seen_space)
753 return 0; /* but not after : or :: or > or space */
754 break;
755 case '>':
756 if (just_seen_colon || just_seen_right)
757 return 0; /* end a (nested?) template */
758 just_seen_right = 1; /* but not after : or :: */
759 if (--depth == 0) /* also disallow >>, insist on > > */
760 return ++p; /* if outermost ended, return */
761 break;
762 case ':':
763 if (just_seen_space || (just_seen_colon > 1))
764 return 0; /* nested class spec coming up */
765 just_seen_colon++; /* we allow :: but not :::: */
766 break;
767 case ' ':
768 break;
769 default:
770 if (!((*p >= 'a' && *p <= 'z') || /* allow token chars */
771 (*p >= 'A' && *p <= 'Z') ||
772 (*p >= '0' && *p <= '9') ||
773 (*p == '_') || (*p == ',') || /* commas for template args */
774 (*p == '&') || (*p == '*') || /* pointer and ref types */
775 (*p == '(') || (*p == ')') || /* function types */
776 (*p == '[') || (*p == ']'))) /* array types */
777 return 0;
778 }
c906108c 779 if (*p != ' ')
c5aa993b 780 just_seen_space = 0;
c906108c 781 if (*p != ':')
c5aa993b 782 just_seen_colon = 0;
c906108c 783 if (*p != '>')
c5aa993b 784 just_seen_right = 0;
c906108c
SS
785 }
786 return 0;
787}
c5aa993b 788\f
c906108c
SS
789
790
c906108c
SS
791/* Return a null-terminated temporary copy of the name
792 of a string token. */
793
794char *
fba45db2 795copy_name (struct stoken token)
c906108c
SS
796{
797 memcpy (namecopy, token.ptr, token.length);
798 namecopy[token.length] = 0;
799 return namecopy;
800}
801\f
802/* Reverse an expression from suffix form (in which it is constructed)
803 to prefix form (in which we can conveniently print or execute it). */
804
805static void
fba45db2 806prefixify_expression (register struct expression *expr)
c906108c
SS
807{
808 register int len =
c5aa993b 809 sizeof (struct expression) + EXP_ELEM_TO_BYTES (expr->nelts);
c906108c
SS
810 register struct expression *temp;
811 register int inpos = expr->nelts, outpos = 0;
812
813 temp = (struct expression *) alloca (len);
814
815 /* Copy the original expression into temp. */
816 memcpy (temp, expr, len);
817
818 prefixify_subexp (temp, expr, inpos, outpos);
819}
820
821/* Return the number of exp_elements in the subexpression of EXPR
822 whose last exp_element is at index ENDPOS - 1 in EXPR. */
823
824int
fba45db2 825length_of_subexp (register struct expression *expr, register int endpos)
c906108c
SS
826{
827 register int oplen = 1;
828 register int args = 0;
829 register int i;
830
831 if (endpos < 1)
832 error ("?error in length_of_subexp");
833
834 i = (int) expr->elts[endpos - 1].opcode;
835
836 switch (i)
837 {
838 /* C++ */
839 case OP_SCOPE:
840 oplen = longest_to_int (expr->elts[endpos - 2].longconst);
841 oplen = 5 + BYTES_TO_EXP_ELEM (oplen + 1);
842 break;
843
844 case OP_LONG:
845 case OP_DOUBLE:
846 case OP_VAR_VALUE:
847 oplen = 4;
848 break;
849
850 case OP_TYPE:
851 case OP_BOOL:
852 case OP_LAST:
853 case OP_REGISTER:
854 case OP_INTERNALVAR:
855 oplen = 3;
856 break;
857
858 case OP_COMPLEX:
c5aa993b 859 oplen = 1;
c906108c 860 args = 2;
c5aa993b 861 break;
c906108c
SS
862
863 case OP_FUNCALL:
864 case OP_F77_UNDETERMINED_ARGLIST:
865 oplen = 3;
866 args = 1 + longest_to_int (expr->elts[endpos - 2].longconst);
867 break;
868
869 case UNOP_MAX:
870 case UNOP_MIN:
871 oplen = 3;
872 break;
873
c5aa993b
JM
874 case BINOP_VAL:
875 case UNOP_CAST:
876 case UNOP_MEMVAL:
c906108c
SS
877 oplen = 3;
878 args = 1;
879 break;
880
881 case UNOP_ABS:
882 case UNOP_CAP:
883 case UNOP_CHR:
884 case UNOP_FLOAT:
885 case UNOP_HIGH:
886 case UNOP_ODD:
887 case UNOP_ORD:
888 case UNOP_TRUNC:
889 oplen = 1;
890 args = 1;
891 break;
892
893 case OP_LABELED:
894 case STRUCTOP_STRUCT:
895 case STRUCTOP_PTR:
896 args = 1;
897 /* fall through */
898 case OP_M2_STRING:
899 case OP_STRING:
900 case OP_NAME:
901 case OP_EXPRSTRING:
902 oplen = longest_to_int (expr->elts[endpos - 2].longconst);
903 oplen = 4 + BYTES_TO_EXP_ELEM (oplen + 1);
904 break;
905
906 case OP_BITSTRING:
907 oplen = longest_to_int (expr->elts[endpos - 2].longconst);
908 oplen = (oplen + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
909 oplen = 4 + BYTES_TO_EXP_ELEM (oplen);
910 break;
911
912 case OP_ARRAY:
913 oplen = 4;
914 args = longest_to_int (expr->elts[endpos - 2].longconst);
915 args -= longest_to_int (expr->elts[endpos - 3].longconst);
916 args += 1;
917 break;
918
919 case TERNOP_COND:
920 case TERNOP_SLICE:
921 case TERNOP_SLICE_COUNT:
922 args = 3;
923 break;
924
925 /* Modula-2 */
c5aa993b 926 case MULTI_SUBSCRIPT:
c906108c 927 oplen = 3;
c5aa993b 928 args = 1 + longest_to_int (expr->elts[endpos - 2].longconst);
c906108c
SS
929 break;
930
931 case BINOP_ASSIGN_MODIFY:
932 oplen = 3;
933 args = 2;
934 break;
935
936 /* C++ */
937 case OP_THIS:
938 oplen = 2;
939 break;
940
941 default:
942 args = 1 + (i < (int) BINOP_END);
943 }
944
945 while (args > 0)
946 {
947 oplen += length_of_subexp (expr, endpos - oplen);
948 args--;
949 }
950
951 return oplen;
952}
953
954/* Copy the subexpression ending just before index INEND in INEXPR
955 into OUTEXPR, starting at index OUTBEG.
956 In the process, convert it from suffix to prefix form. */
957
958static void
fba45db2
KB
959prefixify_subexp (register struct expression *inexpr,
960 struct expression *outexpr, register int inend, int outbeg)
c906108c
SS
961{
962 register int oplen = 1;
963 register int args = 0;
964 register int i;
965 int *arglens;
966 enum exp_opcode opcode;
967
968 /* Compute how long the last operation is (in OPLEN),
969 and also how many preceding subexpressions serve as
970 arguments for it (in ARGS). */
971
972 opcode = inexpr->elts[inend - 1].opcode;
973 switch (opcode)
974 {
975 /* C++ */
976 case OP_SCOPE:
977 oplen = longest_to_int (inexpr->elts[inend - 2].longconst);
978 oplen = 5 + BYTES_TO_EXP_ELEM (oplen + 1);
979 break;
980
981 case OP_LONG:
982 case OP_DOUBLE:
983 case OP_VAR_VALUE:
984 oplen = 4;
985 break;
986
987 case OP_TYPE:
988 case OP_BOOL:
989 case OP_LAST:
990 case OP_REGISTER:
991 case OP_INTERNALVAR:
992 oplen = 3;
993 break;
994
995 case OP_COMPLEX:
c5aa993b
JM
996 oplen = 1;
997 args = 2;
998 break;
c906108c
SS
999
1000 case OP_FUNCALL:
1001 case OP_F77_UNDETERMINED_ARGLIST:
1002 oplen = 3;
1003 args = 1 + longest_to_int (inexpr->elts[inend - 2].longconst);
1004 break;
1005
1006 case UNOP_MIN:
1007 case UNOP_MAX:
1008 oplen = 3;
1009 break;
1010
1011 case UNOP_CAST:
1012 case UNOP_MEMVAL:
1013 oplen = 3;
1014 args = 1;
1015 break;
1016
1017 case UNOP_ABS:
1018 case UNOP_CAP:
1019 case UNOP_CHR:
1020 case UNOP_FLOAT:
1021 case UNOP_HIGH:
1022 case UNOP_ODD:
1023 case UNOP_ORD:
1024 case UNOP_TRUNC:
c5aa993b
JM
1025 oplen = 1;
1026 args = 1;
c906108c
SS
1027 break;
1028
1029 case STRUCTOP_STRUCT:
1030 case STRUCTOP_PTR:
1031 case OP_LABELED:
1032 args = 1;
1033 /* fall through */
1034 case OP_M2_STRING:
1035 case OP_STRING:
1036 case OP_NAME:
1037 case OP_EXPRSTRING:
1038 oplen = longest_to_int (inexpr->elts[inend - 2].longconst);
1039 oplen = 4 + BYTES_TO_EXP_ELEM (oplen + 1);
1040 break;
1041
1042 case OP_BITSTRING:
1043 oplen = longest_to_int (inexpr->elts[inend - 2].longconst);
1044 oplen = (oplen + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
1045 oplen = 4 + BYTES_TO_EXP_ELEM (oplen);
1046 break;
1047
1048 case OP_ARRAY:
1049 oplen = 4;
1050 args = longest_to_int (inexpr->elts[inend - 2].longconst);
1051 args -= longest_to_int (inexpr->elts[inend - 3].longconst);
1052 args += 1;
1053 break;
1054
1055 case TERNOP_COND:
1056 case TERNOP_SLICE:
1057 case TERNOP_SLICE_COUNT:
1058 args = 3;
1059 break;
1060
1061 case BINOP_ASSIGN_MODIFY:
1062 oplen = 3;
1063 args = 2;
1064 break;
1065
1066 /* Modula-2 */
c5aa993b 1067 case MULTI_SUBSCRIPT:
c906108c
SS
1068 oplen = 3;
1069 args = 1 + longest_to_int (inexpr->elts[inend - 2].longconst);
1070 break;
1071
1072 /* C++ */
1073 case OP_THIS:
1074 oplen = 2;
1075 break;
1076
1077 default:
1078 args = 1 + ((int) opcode < (int) BINOP_END);
1079 }
1080
1081 /* Copy the final operator itself, from the end of the input
1082 to the beginning of the output. */
1083 inend -= oplen;
1084 memcpy (&outexpr->elts[outbeg], &inexpr->elts[inend],
1085 EXP_ELEM_TO_BYTES (oplen));
1086 outbeg += oplen;
1087
1088 /* Find the lengths of the arg subexpressions. */
1089 arglens = (int *) alloca (args * sizeof (int));
1090 for (i = args - 1; i >= 0; i--)
1091 {
1092 oplen = length_of_subexp (inexpr, inend);
1093 arglens[i] = oplen;
1094 inend -= oplen;
1095 }
1096
1097 /* Now copy each subexpression, preserving the order of
1098 the subexpressions, but prefixifying each one.
1099 In this loop, inend starts at the beginning of
1100 the expression this level is working on
1101 and marches forward over the arguments.
1102 outbeg does similarly in the output. */
1103 for (i = 0; i < args; i++)
1104 {
1105 oplen = arglens[i];
1106 inend += oplen;
1107 prefixify_subexp (inexpr, outexpr, inend, outbeg);
1108 outbeg += oplen;
1109 }
1110}
1111\f
1112/* This page contains the two entry points to this file. */
1113
1114/* Read an expression from the string *STRINGPTR points to,
1115 parse it, and return a pointer to a struct expression that we malloc.
1116 Use block BLOCK as the lexical context for variable names;
1117 if BLOCK is zero, use the block of the selected stack frame.
1118 Meanwhile, advance *STRINGPTR to point after the expression,
1119 at the first nonwhite character that is not part of the expression
1120 (possibly a null character).
1121
1122 If COMMA is nonzero, stop if a comma is reached. */
1123
1124struct expression *
fba45db2 1125parse_exp_1 (char **stringptr, struct block *block, int comma)
c906108c
SS
1126{
1127 struct cleanup *old_chain;
1128
1129 lexptr = *stringptr;
665132f9 1130 prev_lexptr = NULL;
c906108c
SS
1131
1132 paren_depth = 0;
1133 type_stack_depth = 0;
1134
1135 comma_terminates = comma;
1136
1137 if (lexptr == 0 || *lexptr == 0)
1138 error_no_arg ("expression to compute");
1139
74b7792f 1140 old_chain = make_cleanup (free_funcalls, 0 /*ignore*/);
c906108c
SS
1141 funcall_chain = 0;
1142
ae767bfb 1143 expression_context_block = block ? block : get_selected_block (0);
c906108c
SS
1144
1145 namecopy = (char *) alloca (strlen (lexptr) + 1);
1146 expout_size = 10;
1147 expout_ptr = 0;
1148 expout = (struct expression *)
1149 xmalloc (sizeof (struct expression) + EXP_ELEM_TO_BYTES (expout_size));
1150 expout->language_defn = current_language;
c13c43fd 1151 make_cleanup (free_current_contents, &expout);
c906108c
SS
1152
1153 if (current_language->la_parser ())
1154 current_language->la_error (NULL);
1155
1156 discard_cleanups (old_chain);
1157
1158 /* Record the actual number of expression elements, and then
1159 reallocate the expression memory so that we free up any
1160 excess elements. */
1161
1162 expout->nelts = expout_ptr;
1163 expout = (struct expression *)
1164 xrealloc ((char *) expout,
1165 sizeof (struct expression) + EXP_ELEM_TO_BYTES (expout_ptr));;
1166
1167 /* Convert expression from postfix form as generated by yacc
1168 parser, to a prefix form. */
1169
c906108c 1170 if (expressiondebug)
9846de1b 1171 dump_prefix_expression (expout, gdb_stdlog,
c906108c 1172 "before conversion to prefix form");
c906108c
SS
1173
1174 prefixify_expression (expout);
1175
c906108c 1176 if (expressiondebug)
9846de1b 1177 dump_postfix_expression (expout, gdb_stdlog,
c906108c 1178 "after conversion to prefix form");
c906108c
SS
1179
1180 *stringptr = lexptr;
1181 return expout;
1182}
1183
1184/* Parse STRING as an expression, and complain if this fails
1185 to use up all of the contents of STRING. */
1186
1187struct expression *
fba45db2 1188parse_expression (char *string)
c906108c
SS
1189{
1190 register struct expression *exp;
1191 exp = parse_exp_1 (&string, 0, 0);
1192 if (*string)
1193 error ("Junk after end of expression.");
1194 return exp;
1195}
1196\f
1197/* Stuff for maintaining a stack of types. Currently just used by C, but
1198 probably useful for any language which declares its types "backwards". */
1199
47663de5
MS
1200static void
1201check_type_stack_depth (void)
c906108c
SS
1202{
1203 if (type_stack_depth == type_stack_size)
1204 {
1205 type_stack_size *= 2;
1206 type_stack = (union type_stack_elt *)
1207 xrealloc ((char *) type_stack, type_stack_size * sizeof (*type_stack));
1208 }
47663de5
MS
1209}
1210
1211void
1212push_type (enum type_pieces tp)
1213{
1214 check_type_stack_depth ();
c906108c
SS
1215 type_stack[type_stack_depth++].piece = tp;
1216}
1217
1218void
fba45db2 1219push_type_int (int n)
c906108c 1220{
47663de5 1221 check_type_stack_depth ();
c906108c
SS
1222 type_stack[type_stack_depth++].int_val = n;
1223}
1224
47663de5
MS
1225void
1226push_type_address_space (char *string)
1227{
1228 push_type_int (address_space_name_to_int (string));
1229}
1230
c5aa993b 1231enum type_pieces
fba45db2 1232pop_type (void)
c906108c
SS
1233{
1234 if (type_stack_depth)
1235 return type_stack[--type_stack_depth].piece;
1236 return tp_end;
1237}
1238
1239int
fba45db2 1240pop_type_int (void)
c906108c
SS
1241{
1242 if (type_stack_depth)
1243 return type_stack[--type_stack_depth].int_val;
1244 /* "Can't happen". */
1245 return 0;
1246}
1247
1248/* Pop the type stack and return the type which corresponds to FOLLOW_TYPE
1249 as modified by all the stuff on the stack. */
1250struct type *
fba45db2 1251follow_types (struct type *follow_type)
c906108c
SS
1252{
1253 int done = 0;
2e2394a0
MS
1254 int make_const = 0;
1255 int make_volatile = 0;
47663de5 1256 int make_addr_space = 0;
c906108c
SS
1257 int array_size;
1258 struct type *range_type;
1259
1260 while (!done)
1261 switch (pop_type ())
1262 {
1263 case tp_end:
1264 done = 1;
2e2394a0
MS
1265 if (make_const)
1266 follow_type = make_cv_type (make_const,
1267 TYPE_VOLATILE (follow_type),
1268 follow_type, 0);
1269 if (make_volatile)
1270 follow_type = make_cv_type (TYPE_CONST (follow_type),
1271 make_volatile,
1272 follow_type, 0);
47663de5
MS
1273 if (make_addr_space)
1274 follow_type = make_type_with_address_space (follow_type,
1275 make_addr_space);
1276 make_const = make_volatile = 0;
1277 make_addr_space = 0;
2e2394a0
MS
1278 break;
1279 case tp_const:
1280 make_const = 1;
1281 break;
1282 case tp_volatile:
1283 make_volatile = 1;
c906108c 1284 break;
47663de5
MS
1285 case tp_space_identifier:
1286 make_addr_space = pop_type_int ();
1287 break;
c906108c
SS
1288 case tp_pointer:
1289 follow_type = lookup_pointer_type (follow_type);
2e2394a0
MS
1290 if (make_const)
1291 follow_type = make_cv_type (make_const,
1292 TYPE_VOLATILE (follow_type),
1293 follow_type, 0);
1294 if (make_volatile)
1295 follow_type = make_cv_type (TYPE_CONST (follow_type),
1296 make_volatile,
1297 follow_type, 0);
47663de5
MS
1298 if (make_addr_space)
1299 follow_type = make_type_with_address_space (follow_type,
1300 make_addr_space);
2e2394a0 1301 make_const = make_volatile = 0;
47663de5 1302 make_addr_space = 0;
c906108c
SS
1303 break;
1304 case tp_reference:
1305 follow_type = lookup_reference_type (follow_type);
2e2394a0 1306 if (make_const)
47663de5
MS
1307 follow_type = make_cv_type (make_const,
1308 TYPE_VOLATILE (follow_type),
1309 follow_type, 0);
2e2394a0 1310 if (make_volatile)
47663de5
MS
1311 follow_type = make_cv_type (TYPE_CONST (follow_type),
1312 make_volatile,
1313 follow_type, 0);
1314 if (make_addr_space)
1315 follow_type = make_type_with_address_space (follow_type,
1316 make_addr_space);
2e2394a0 1317 make_const = make_volatile = 0;
47663de5 1318 make_addr_space = 0;
c906108c
SS
1319 break;
1320 case tp_array:
1321 array_size = pop_type_int ();
1322 /* FIXME-type-allocation: need a way to free this type when we are
1323 done with it. */
1324 range_type =
1325 create_range_type ((struct type *) NULL,
1326 builtin_type_int, 0,
1327 array_size >= 0 ? array_size - 1 : 0);
1328 follow_type =
1329 create_array_type ((struct type *) NULL,
1330 follow_type, range_type);
1331 if (array_size < 0)
c5aa993b 1332 TYPE_ARRAY_UPPER_BOUND_TYPE (follow_type)
c906108c
SS
1333 = BOUND_CANNOT_BE_DETERMINED;
1334 break;
1335 case tp_function:
1336 /* FIXME-type-allocation: need a way to free this type when we are
1337 done with it. */
1338 follow_type = lookup_function_type (follow_type);
1339 break;
1340 }
1341 return follow_type;
1342}
1343\f
a14ed312 1344static void build_parse (void);
ac9a91a7 1345static void
fba45db2 1346build_parse (void)
c906108c 1347{
cce74817
JM
1348 int i;
1349
c906108c
SS
1350 msym_text_symbol_type =
1351 init_type (TYPE_CODE_FUNC, 1, 0, "<text variable, no debug info>", NULL);
1352 TYPE_TARGET_TYPE (msym_text_symbol_type) = builtin_type_int;
1353 msym_data_symbol_type =
1354 init_type (TYPE_CODE_INT, TARGET_INT_BIT / HOST_CHAR_BIT, 0,
1355 "<data variable, no debug info>", NULL);
1356 msym_unknown_symbol_type =
1357 init_type (TYPE_CODE_INT, 1, 0,
1358 "<variable (not text or data), no debug info>",
1359 NULL);
ac9a91a7
JM
1360}
1361
1362void
fba45db2 1363_initialize_parse (void)
ac9a91a7
JM
1364{
1365 type_stack_size = 80;
1366 type_stack_depth = 0;
1367 type_stack = (union type_stack_elt *)
1368 xmalloc (type_stack_size * sizeof (*type_stack));
1369
1370 build_parse ();
c906108c 1371
0f71a2f6
JM
1372 /* FIXME - For the moment, handle types by swapping them in and out.
1373 Should be using the per-architecture data-pointer and a large
1374 struct. */
1375 register_gdbarch_swap (&msym_text_symbol_type, sizeof (msym_text_symbol_type), NULL);
1376 register_gdbarch_swap (&msym_data_symbol_type, sizeof (msym_data_symbol_type), NULL);
1377 register_gdbarch_swap (&msym_unknown_symbol_type, sizeof (msym_unknown_symbol_type), NULL);
1378
0f71a2f6
JM
1379 register_gdbarch_swap (NULL, 0, build_parse);
1380
c906108c 1381 add_show_from_set (
5d161b24 1382 add_set_cmd ("expression", class_maintenance, var_zinteger,
c5aa993b
JM
1383 (char *) &expressiondebug,
1384 "Set expression debugging.\n\
c906108c 1385When non-zero, the internal representation of expressions will be printed.",
5d161b24
DB
1386 &setdebuglist),
1387 &showdebuglist);
c906108c 1388}
This page took 0.274544 seconds and 4 git commands to generate.