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