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