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