118 const struct block *,
int,
121 const struct block *,
int,
158 : expout_size (initial_size),
164 expout->language_defn = lang;
180 return std::move (
expout);
194 if (
ps->expout_ptr >=
ps->expout_size)
196 ps->expout_size *= 2;
201 ps->expout->elts[
ps->expout_ptr++] = *expelt;
270 for (index = 0; index < 16; index++)
339 strdata = (
char *) &
ps->expout->elts[
ps->expout_ptr];
340 memcpy (strdata, str.
ptr, len);
341 *(strdata + len) =
'\0';
342 ps->expout_ptr += lenelt - 2;
369 for (i = 0; i < vec->
len; ++i)
389 for (i = 0; i < vec->
len; ++i)
392 memcpy (&
ps->expout->elts[
ps->expout_ptr], vec->
tokens[i].
ptr,
433 strdata = (
char *) &
ps->expout->elts[
ps->expout_ptr];
434 memcpy (strdata, str.
ptr, len);
435 ps->expout_ptr += lenelt - 2;
454 bool is_tls = (section != NULL
473 if (ifunc_msym.
minsym != NULL
495 if (address_p != NULL)
500 if (address_p != NULL)
607 if (str.
length >= 2 && str.
ptr[1] ==
'$')
619 for (; i < str.
length; i++)
620 if (!(str.
ptr[i] >=
'0' && str.
ptr[i] <=
'9'))
624 i = atoi (str.
ptr + 1 + negate);
635 goto handle_register;
693 int just_seen_right = 0;
694 int just_seen_colon = 0;
695 int just_seen_space = 0;
697 if (!p || (*p !=
'<'))
712 if (just_seen_colon || just_seen_right || just_seen_space)
716 if (just_seen_colon || just_seen_right)
723 if (just_seen_space || (just_seen_colon > 1))
730 if (!((*p >=
'a' && *p <=
'z') ||
731 (*p >=
'A' && *p <=
'Z') ||
732 (*p >=
'0' && *p <=
'9') ||
733 (*p ==
'_') || (*p ==
',') ||
734 (*p ==
'&') || (*p ==
'*') ||
735 (*p ==
'(') || (*p ==
')') ||
736 (*p ==
'[') || (*p ==
']')))
769 static char *namecopy;
770 static size_t namecopy_size;
773 if (namecopy_size <
token.length + 1)
775 namecopy_size =
token.length + 1;
780 namecopy[
token.length] = 0;
793 int inpos = expr->
nelts, outpos = 0;
798 memcpy (temp, expr, len);
838 int *oplenp,
int *argsp)
846 error (
_(
"?error in operator_length_standard"));
861 case OP_VAR_MSYM_VALUE:
865 case OP_FUNC_STATIC_VAR:
875 case OP_VAR_ENTRY_VALUE:
885 case OP_F77_UNDETERMINED_ARGLIST:
895 case OP_OBJC_MSGCALL:
906 case UNOP_DYNAMIC_CAST:
907 case UNOP_REINTERPRET_CAST:
908 case UNOP_MEMVAL_TYPE:
942 case STRUCTOP_STRUCT:
949 case OP_OBJC_NSSTRING:
951 case OP_OBJC_SELECTOR:
970 case MULTI_SUBSCRIPT:
975 case BINOP_ASSIGN_MODIFY:
1007 args = 1 + (i < (int) BINOP_END);
1023 struct expression *outexpr,
int inend,
int outbeg)
1036 memcpy (&outexpr->
elts[outbeg], &inexpr->
elts[inend],
1041 result = outbeg - oplen;
1044 arglens = (
int *) alloca (args *
sizeof (
int));
1045 for (i = args - 1; i >= 0; i--)
1058 for (i = 0; i < args; i++)
1098 int comma,
int void_context_p,
int *out_subexp)
1101 void_context_p, out_subexp);
1114 int comma,
int void_context_p,
int *out_subexp)
1134 std::vector<int> funcalls;
1218 "before conversion to prefix form");
1222 *out_subexp = subexp;
1241 error (
_(
"Junk after end of expression."));
1348 if (
stack->size < howmuch)
1349 stack->size = howmuch;
1558 type_instance_flags
flags = 0;
1584 int make_volatile = 0;
1585 int make_addr_space = 0;
1601 if (make_addr_space)
1604 make_const = make_volatile = 0;
1605 make_addr_space = 0;
1626 if (make_addr_space)
1629 make_const = make_volatile = 0;
1630 make_addr_space = 0;
1646 if (make_addr_space)
1649 make_const = make_volatile = 0;
1650 make_addr_space = 0;
1658 0, array_size >= 0 ? array_size - 1 : 0);
1734 gdb_assert (elts[pos].opcode < OP_EXTENDED0);
1738 switch (elts[pos].opcode)
1757 for (arg = 0; arg < nargs; arg++)
1784 case OP_VAR_MSYM_VALUE:
1814 for (endpos = exp->
nelts; endpos > 0; )
1816 int pos, args, oplen = 0;
1821 pos = endpos - oplen;
1823 objfile_func, data))
1842 return exp_objfile ==
objfile;
1862 if ((
ps->expout_ptr + lenelt) >=
ps->expout_size)
1864 ps->expout_size = std::max (
ps->expout_size * 2,
1865 ps->expout_ptr + lenelt + 10);
1867 ps->expout.release (),
1882 _(
"Set expression debugging."),
1883 _(
"Show expression debugging."),
1884 _(
"When non-zero, the internal representation " 1885 "of expressions will be printed."),
1891 _(
"Set parser debugging."),
1892 _(
"Show parser debugging."),
1893 _(
"When non-zero, expression parser " 1894 "tracing will be enabled."),
void error_no_arg(const char *why)
#define TYPE_HIGH_BOUND_KIND(range_type)
int(* operator_check)(struct expression *exp, int pos, int(*objfile_func)(struct objfile *objfile, void *data), void *data)
union exp_element elts[1]
type_instance_flags follow_type_instance_flags()
int address_space_name_to_int(struct gdbarch *gdbarch, char *space_identifier)
struct type * lookup_array_range_type(struct type *element_type, LONGEST low_bound, LONGEST high_bound)
struct internalvar * create_internalvar(const char *name)
struct value * evaluate_subexpression_type(struct expression *exp, int subexp)
int exp_uses_objfile(struct expression *exp, struct objfile *objfile)
void write_exp_elt_sym(struct parser_state *ps, struct symbol *expelt)
const struct block * innermost_block
void push_type_stack(struct type_stack *stack)
#define parse_gdbarch(ps)
bool parse_float(const char *p, int len, const struct type *type, gdb_byte *data)
void type_stack_cleanup(void *arg)
static expression_up parse_exp_in_context_1(const char **, CORE_ADDR, const struct block *, int, int, int *)
enum type_pieces pop_type(void)
gdb::unique_xmalloc_ptr< expression > expression_up
struct objfile * separate_debug_objfile_backlink
CORE_ADDR expression_context_pc
static int process_reference(const char **string)
static void show_parserdebug(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
struct bfd_section * the_bfd_section
#define BMSYMBOL_VALUE_ADDRESS(symbol)
struct type_stack * stack_val
static void write_exp_elt(struct parser_state *ps, const union exp_element *expelt)
struct internalvar * lookup_only_internalvar(const char *name)
expression_up parse_expression(const char *string)
enum language set_language(enum language lang)
void(* la_error)(const char *)
parser_state(size_t initial_size, const struct language_defn *lang, struct gdbarch *gdbarch)
struct symtab_and_line get_current_source_symtab_and_line(void)
static std::vector< int > * funcall_chain
static int exp_uses_objfile_iter(struct objfile *exp_objfile, void *objfile_voidp)
const struct objfile_type * objfile_type(struct objfile *objfile)
void * memset(T *s, int c, size_t n)=delete
static struct type_stack * pop_type_stack(void)
const struct language_defn * language_defn
const struct language_defn * language_def(enum language lang)
struct type * parse_expression_for_completion(const char *string, char **name, enum type_code *code)
int operator_check_standard(struct expression *exp, int pos, int(*objfile_func)(struct objfile *objfile, void *data), void *data)
struct symbol * block_linkage_function(const struct block *bl)
enum language la_language
struct type * nodebug_data_symbol
#define BLOCKVECTOR_BLOCK(blocklist, n)
struct block_symbol lookup_symbol(const char *name, const struct block *block, domain_enum domain, struct field_of_this_result *is_a_field_of_this)
void push_type(enum type_pieces tp)
static int length_of_subexp(struct expression *expr, int endpos)
static int expout_last_struct
expression_up parse_expression_with_language(const char *string, enum language lang)
#define bits(obj, st, fn)
#define BYTES_TO_EXP_ELEM(bytes)
struct objfile * symbol_objfile(const struct symbol *symbol)
int longest_to_int(LONGEST)
struct internalvar * internalvar
struct type * nodebug_text_gnu_ifunc_symbol
scoped_restore_tmpl< T > make_scoped_restore(T *var)
void push_type_int(int n)
#define MSYMBOL_OBJ_SECTION(objfile, symbol)
void add_setshow_zuinteger_cmd(const char *name, enum command_class theclass, unsigned int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
mach_port_t kern_return_t mach_port_t msgports mach_port_t kern_return_t pid_t pid mach_port_t kern_return_t mach_port_t task mach_port_t kern_return_t int flags
const struct block * block
#define MSYMBOL_VALUE_RAW_ADDRESS(symbol)
void write_exp_elt_block(struct parser_state *ps, const struct block *b)
#define SYMTAB_BLOCKVECTOR(symtab)
const struct exp_descriptor * la_exp_desc
void write_exp_elt_longcst(struct parser_state *ps, LONGEST expelt)
void dump_raw_expression(struct expression *exp, struct ui_file *stream, const char *note)
static unsigned int expressiondebug
union type_stack_elt * elements
void insert_type(enum type_pieces tp)
#define CATCH(EXCEPTION, MASK)
struct type * lookup_rvalue_reference_type(struct type *type)
void increase_expout_size(struct parser_state *ps, size_t lenelt)
static char * expout_completion_name
struct target_ops current_target
struct type * follow_types(struct type *follow_type)
static struct parser_state * pstate
void dump_prefix_expression(struct expression *exp, struct ui_file *stream)
objfile(bfd *, const char *, objfile_flags)
int prefixify_expression(struct expression *expr)
void fprintf_filtered(struct ui_file *stream, const char *format,...)
const struct block * block
void push_typelist(VEC(type_ptr) *list)
CORE_ADDR gdbarch_convert_from_func_ptr_addr(struct gdbarch *gdbarch, CORE_ADDR addr, struct target_ops *targ)
void fprintf_unfiltered(struct ui_file *stream, const char *format,...)
void vfprintf_unfiltered(struct ui_file *stream, const char *format, va_list args)
#define gdb_assert_not_reached(message)
struct type * nodebug_tls_symbol
struct gdbarch * get_objfile_arch(const struct objfile *objfile)
expression_up parse_exp_1(const char **stringptr, CORE_ADDR pc, const struct block *block, int comma)
bool target_float_from_string(gdb_byte *addr, const struct type *type, const std::string &string)
CORE_ADDR symbol_overlayed_address(CORE_ADDR address, struct obj_section *section)
void write_dollar_variable(struct parser_state *ps, struct stoken str)
struct gdbarch * get_current_arch(void)
const char * find_template_name_end(const char *p)
int dump_subexp_body_standard(struct expression *exp, struct ui_file *stream, int elt)
void mark_struct_expression(struct parser_state *ps)
void null_post_parser(expression_up *exp, int void_context_p)
struct type_stack * get_type_stack(void)
struct type * nodebug_got_plt_symbol
int(* la_parser)(struct parser_state *)
type * find_minsym_type_and_address(minimal_symbol *msymbol, struct objfile *objfile, CORE_ADDR *address_p)
struct cmd_list_element * setdebuglist
int user_reg_map_name_to_regnum(struct gdbarch *gdbarch, const char *name, int len)
#define XRESIZEVEC(T, P, N)
static void type_stack_reserve(struct type_stack *stack, int howmuch)
#define EXP_ELEM_TO_BYTES(elements)
void write_exp_msymbol(struct parser_state *ps, struct bound_minimal_symbol bound_msym)
static struct type_stack type_stack
static int prefixify_subexp(struct expression *, struct expression *, int, int)
char * extract_field_op(struct expression *exp, int *subexp)
struct minimal_symbol * msymbol
PTR xrealloc(PTR ptr, size_t size)
struct type * nodebug_unknown_symbol
void write_exp_elt_opcode(struct parser_state *ps, enum exp_opcode expelt)
void throw_exception(struct gdb_exception exception)
void write_exp_elt_objfile(struct parser_state *ps, struct objfile *objfile)
void insert_type_address_space(struct parser_state *pstate, char *string)
#define MSYMBOL_TYPE(msymbol)
struct type * make_cv_type(int cnst, int voltl, struct type *type, struct type **typeptr)
T & emplace(Args &&... args)
const struct language_defn * current_language
struct bound_minimal_symbol lookup_minimal_symbol_by_pc(CORE_ADDR pc)
void operator_length(const struct expression *expr, int endpos, int *oplenp, int *argsp)
static void insert_into_type_stack(int slot, union type_stack_elt element)
void print_subexp_standard(struct expression *exp, int *pos, struct ui_file *stream, enum precedence prec)
CORE_ADDR target_translate_tls_address(struct objfile *objfile, CORE_ADDR offset)
static void check_type_stack_depth(void)
static int exp_iterate(struct expression *exp, int(*objfile_func)(struct objfile *objfile, void *data), void *data)
void(* operator_length)(const struct expression *, int, int *, int *)
#define TYPE_INDEX_TYPE(type)
struct minimal_symbol * minsym
void parser_fprintf(FILE *x, const char *y,...)
const struct exp_descriptor exp_descriptor_standard
static enum type_code expout_tag_completion_type
void add_setshow_boolean_cmd(const char *name, enum command_class theclass, int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
struct bound_minimal_symbol lookup_bound_minimal_symbol(const char *name)
#define XRESIZEVAR(T, P, S)
struct type * make_type_with_address_space(struct type *type, int space_flag)
#define SYMBOL_LANGUAGE(symbol)
static expression_up parse_exp_in_context(const char **, CORE_ADDR, const struct block *, int, int, int *)
#define VEC_address(T, V)
struct type_stack * append_type_stack(struct type_stack *to, struct type_stack *from)
struct value * evaluate_subexp_standard(struct type *expect_type, struct expression *exp, int *pos, enum noside noside)
struct type * nodebug_text_symbol
void write_exp_elt_msym(struct parser_state *ps, minimal_symbol *expelt)
void operator_length_standard(const struct expression *expr, int endpos, int *oplenp, int *argsp)
const char * op_name_standard(enum exp_opcode opcode)
const struct block * get_selected_block(CORE_ADDR *addr_in_block)
const struct block * expression_context_block
enum overlay_debugging_state overlay_debugging
struct typed_stoken * tokens
static void show_expressiondebug(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
struct objfile * lookup_objfile_from_block(const struct block *block)
struct type * lookup_function_type_with_arguments(struct type *type, int nparams, struct type **param_types)
struct type * value_type(const struct value *value)
#define SYMBOL_TYPE(symbol)
struct cmd_list_element * showdebuglist
void mark_completion_tag(enum type_code tag, const char *ptr, int length)
void _initialize_parse(void)
void write_exp_elt_intern(struct parser_state *ps, struct internalvar *expelt)
void write_exp_elt_floatcst(struct parser_state *ps, const gdb_byte expelt[16])
void write_exp_string(struct parser_state *ps, struct stoken str)
void write_exp_elt_type(struct parser_state *ps, struct type *expelt)
struct type * lookup_lvalue_reference_type(struct type *type)
void write_exp_bitstring(struct parser_state *ps, struct stoken str)
void error(const char *fmt,...)
void write_exp_string_vector(struct parser_state *ps, int type, struct stoken_vector *vec)
struct type * lookup_pointer_type(struct type *type)
void(* la_post_parser)(expression_up *expp, int void_context_p)
struct type * lookup_function_type(struct type *type)
char * copy_name(struct stoken token)