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