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