ax-gdb: Remove unnecessary gdbarch parameters

In multiple places, we pass the gdbarch as an argument to some
functions, even though it's available in the agent_expr structure also
passed to the same functions.  Remove these arguments and replace their
usage with accesses to agent_expr::gdbarch.

gdb/ChangeLog:

	* dwarf2loc.h (dwarf2_compile_expr_to_ax): Remove gdbarch
	parameter.
	* symtab.h (struct symbol_computed_ops::tracepoint_var_ref):
	Likewise.
	* dwarf2loc.c (dwarf2_compile_expr_to_ax): Remove gdbarch
	parameter, use agent_expr::gdbarch instead, update function
	calls.
	(locexpr_tracepoint_var_ref): Likewise.
	(loclist_tracepoint_var_ref): Likewise.
	* ax-gdb.c (gen_trace_static_fields): Likewise.
	(gen_traced_pop): Likewise.
	(gen_frame_args_address): Likewise.
	(gen_frame_locals_address): Likewise.
	(gen_var_ref): Likewise.
	(gen_struct_ref_recursive): Likewise.
	(gen_static_field): Likewise.
	(gen_maybe_namespace_elt): Likewise.
	(gen_expr): Likewise.
	(gen_trace_for_var): Likewise.
	(gen_trace_for_expr): Likewise.
	(gen_trace_for_return_address): Likewise.
This commit is contained in:
Simon Marchi 2017-07-14 12:47:40 +02:00
parent 053f805718
commit 40f4af2873
5 changed files with 78 additions and 60 deletions

View File

@ -1,3 +1,27 @@
2017-07-14 Simon Marchi <simon.marchi@ericsson.com>
* dwarf2loc.h (dwarf2_compile_expr_to_ax): Remove gdbarch
parameter.
* symtab.h (struct symbol_computed_ops::tracepoint_var_ref):
Likewise.
* dwarf2loc.c (dwarf2_compile_expr_to_ax): Remove gdbarch
parameter, use agent_expr::gdbarch instead, update function
calls.
(locexpr_tracepoint_var_ref): Likewise.
(loclist_tracepoint_var_ref): Likewise.
* ax-gdb.c (gen_trace_static_fields): Likewise.
(gen_traced_pop): Likewise.
(gen_frame_args_address): Likewise.
(gen_frame_locals_address): Likewise.
(gen_var_ref): Likewise.
(gen_struct_ref_recursive): Likewise.
(gen_static_field): Likewise.
(gen_maybe_namespace_elt): Likewise.
(gen_expr): Likewise.
(gen_trace_for_var): Likewise.
(gen_trace_for_expr): Likewise.
(gen_trace_for_return_address): Likewise.
2017-07-14 Simon Marchi <simon.marchi@ericsson.com> 2017-07-14 Simon Marchi <simon.marchi@ericsson.com>
* ax-gdb.c (gen_deref, gen_address_of): Remove unused ax * ax-gdb.c (gen_deref, gen_address_of): Remove unused ax

View File

@ -77,8 +77,7 @@ static struct value *const_var_ref (struct symbol *var);
static struct value *const_expr (union exp_element **pc); static struct value *const_expr (union exp_element **pc);
static struct value *maybe_const_expr (union exp_element **pc); static struct value *maybe_const_expr (union exp_element **pc);
static void gen_traced_pop (struct gdbarch *, struct agent_expr *, static void gen_traced_pop (struct agent_expr *, struct axs_value *);
struct axs_value *);
static void gen_sign_extend (struct agent_expr *, struct type *); static void gen_sign_extend (struct agent_expr *, struct type *);
static void gen_extend (struct agent_expr *, struct type *); static void gen_extend (struct agent_expr *, struct type *);
@ -86,12 +85,12 @@ static void gen_fetch (struct agent_expr *, struct type *);
static void gen_left_shift (struct agent_expr *, int); static void gen_left_shift (struct agent_expr *, int);
static void gen_frame_args_address (struct gdbarch *, struct agent_expr *); static void gen_frame_args_address (struct agent_expr *);
static void gen_frame_locals_address (struct gdbarch *, struct agent_expr *); static void gen_frame_locals_address (struct agent_expr *);
static void gen_offset (struct agent_expr *ax, int offset); static void gen_offset (struct agent_expr *ax, int offset);
static void gen_sym_offset (struct agent_expr *, struct symbol *); static void gen_sym_offset (struct agent_expr *, struct symbol *);
static void gen_var_ref (struct gdbarch *, struct agent_expr *ax, static void gen_var_ref (struct agent_expr *ax, struct axs_value *value,
struct axs_value *value, struct symbol *var); struct symbol *var);
static void gen_int_literal (struct agent_expr *ax, static void gen_int_literal (struct agent_expr *ax,
@ -146,8 +145,7 @@ static void gen_struct_ref (struct agent_expr *ax,
const char *field, const char *field,
const char *operator_name, const char *operator_name,
const char *operand_name); const char *operand_name);
static void gen_static_field (struct gdbarch *gdbarch, static void gen_static_field (struct agent_expr *ax, struct axs_value *value,
struct agent_expr *ax, struct axs_value *value,
struct type *type, int fieldno); struct type *type, int fieldno);
static void gen_repeat (struct expression *exp, union exp_element **pc, static void gen_repeat (struct expression *exp, union exp_element **pc,
struct agent_expr *ax, struct axs_value *value); struct agent_expr *ax, struct axs_value *value);
@ -312,8 +310,7 @@ maybe_const_expr (union exp_element **pc)
classes, and generate tracing bytecodes for each. */ classes, and generate tracing bytecodes for each. */
static void static void
gen_trace_static_fields (struct gdbarch *gdbarch, gen_trace_static_fields (struct agent_expr *ax,
struct agent_expr *ax,
struct type *type) struct type *type)
{ {
int i, nbases = TYPE_N_BASECLASSES (type); int i, nbases = TYPE_N_BASECLASSES (type);
@ -325,7 +322,7 @@ gen_trace_static_fields (struct gdbarch *gdbarch,
{ {
if (field_is_static (&TYPE_FIELD (type, i))) if (field_is_static (&TYPE_FIELD (type, i)))
{ {
gen_static_field (gdbarch, ax, &value, type, i); gen_static_field (ax, &value, type, i);
if (value.optimized_out) if (value.optimized_out)
continue; continue;
switch (value.kind) switch (value.kind)
@ -355,7 +352,7 @@ gen_trace_static_fields (struct gdbarch *gdbarch,
{ {
struct type *basetype = check_typedef (TYPE_BASECLASS (type, i)); struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
gen_trace_static_fields (gdbarch, ax, basetype); gen_trace_static_fields (ax, basetype);
} }
} }
@ -363,8 +360,7 @@ gen_trace_static_fields (struct gdbarch *gdbarch,
the value. Useful on the left side of a comma, and at the end of the value. Useful on the left side of a comma, and at the end of
an expression being used for tracing. */ an expression being used for tracing. */
static void static void
gen_traced_pop (struct gdbarch *gdbarch, gen_traced_pop (struct agent_expr *ax, struct axs_value *value)
struct agent_expr *ax, struct axs_value *value)
{ {
int string_trace = 0; int string_trace = 0;
if (ax->trace_string if (ax->trace_string
@ -437,7 +433,7 @@ gen_traced_pop (struct gdbarch *gdbarch,
if (ax->tracing if (ax->tracing
&& (TYPE_CODE (value->type) == TYPE_CODE_STRUCT && (TYPE_CODE (value->type) == TYPE_CODE_STRUCT
|| TYPE_CODE (value->type) == TYPE_CODE_UNION)) || TYPE_CODE (value->type) == TYPE_CODE_UNION))
gen_trace_static_fields (gdbarch, ax, value->type); gen_trace_static_fields (ax, value->type);
} }
@ -556,12 +552,12 @@ gen_left_shift (struct agent_expr *ax, int distance)
/* Generate code to push the base address of the argument portion of /* Generate code to push the base address of the argument portion of
the top stack frame. */ the top stack frame. */
static void static void
gen_frame_args_address (struct gdbarch *gdbarch, struct agent_expr *ax) gen_frame_args_address (struct agent_expr *ax)
{ {
int frame_reg; int frame_reg;
LONGEST frame_offset; LONGEST frame_offset;
gdbarch_virtual_frame_pointer (gdbarch, gdbarch_virtual_frame_pointer (ax->gdbarch,
ax->scope, &frame_reg, &frame_offset); ax->scope, &frame_reg, &frame_offset);
ax_reg (ax, frame_reg); ax_reg (ax, frame_reg);
gen_offset (ax, frame_offset); gen_offset (ax, frame_offset);
@ -571,12 +567,12 @@ gen_frame_args_address (struct gdbarch *gdbarch, struct agent_expr *ax)
/* Generate code to push the base address of the locals portion of the /* Generate code to push the base address of the locals portion of the
top stack frame. */ top stack frame. */
static void static void
gen_frame_locals_address (struct gdbarch *gdbarch, struct agent_expr *ax) gen_frame_locals_address (struct agent_expr *ax)
{ {
int frame_reg; int frame_reg;
LONGEST frame_offset; LONGEST frame_offset;
gdbarch_virtual_frame_pointer (gdbarch, gdbarch_virtual_frame_pointer (ax->gdbarch,
ax->scope, &frame_reg, &frame_offset); ax->scope, &frame_reg, &frame_offset);
ax_reg (ax, frame_reg); ax_reg (ax, frame_reg);
gen_offset (ax, frame_offset); gen_offset (ax, frame_offset);
@ -621,8 +617,7 @@ gen_sym_offset (struct agent_expr *ax, struct symbol *var)
symbol VAR. Set VALUE to describe the result. */ symbol VAR. Set VALUE to describe the result. */
static void static void
gen_var_ref (struct gdbarch *gdbarch, struct agent_expr *ax, gen_var_ref (struct agent_expr *ax, struct axs_value *value, struct symbol *var)
struct axs_value *value, struct symbol *var)
{ {
/* Dereference any typedefs. */ /* Dereference any typedefs. */
value->type = check_typedef (SYMBOL_TYPE (var)); value->type = check_typedef (SYMBOL_TYPE (var));
@ -630,7 +625,7 @@ gen_var_ref (struct gdbarch *gdbarch, struct agent_expr *ax,
if (SYMBOL_COMPUTED_OPS (var) != NULL) if (SYMBOL_COMPUTED_OPS (var) != NULL)
{ {
SYMBOL_COMPUTED_OPS (var)->tracepoint_var_ref (var, gdbarch, ax, value); SYMBOL_COMPUTED_OPS (var)->tracepoint_var_ref (var, ax, value);
return; return;
} }
@ -660,22 +655,22 @@ gen_var_ref (struct gdbarch *gdbarch, struct agent_expr *ax,
break; break;
case LOC_ARG: /* var lives in argument area of frame */ case LOC_ARG: /* var lives in argument area of frame */
gen_frame_args_address (gdbarch, ax); gen_frame_args_address (ax);
gen_sym_offset (ax, var); gen_sym_offset (ax, var);
value->kind = axs_lvalue_memory; value->kind = axs_lvalue_memory;
break; break;
case LOC_REF_ARG: /* As above, but the frame slot really case LOC_REF_ARG: /* As above, but the frame slot really
holds the address of the variable. */ holds the address of the variable. */
gen_frame_args_address (gdbarch, ax); gen_frame_args_address (ax);
gen_sym_offset (ax, var); gen_sym_offset (ax, var);
/* Don't assume any particular pointer size. */ /* Don't assume any particular pointer size. */
gen_fetch (ax, builtin_type (gdbarch)->builtin_data_ptr); gen_fetch (ax, builtin_type (ax->gdbarch)->builtin_data_ptr);
value->kind = axs_lvalue_memory; value->kind = axs_lvalue_memory;
break; break;
case LOC_LOCAL: /* var lives in locals area of frame */ case LOC_LOCAL: /* var lives in locals area of frame */
gen_frame_locals_address (gdbarch, ax); gen_frame_locals_address (ax);
gen_sym_offset (ax, var); gen_sym_offset (ax, var);
value->kind = axs_lvalue_memory; value->kind = axs_lvalue_memory;
break; break;
@ -695,7 +690,8 @@ gen_var_ref (struct gdbarch *gdbarch, struct agent_expr *ax,
this as an lvalue or rvalue, the caller will generate the this as an lvalue or rvalue, the caller will generate the
right code. */ right code. */
value->kind = axs_lvalue_register; value->kind = axs_lvalue_register;
value->u.reg = SYMBOL_REGISTER_OPS (var)->register_number (var, gdbarch); value->u.reg
= SYMBOL_REGISTER_OPS (var)->register_number (var, ax->gdbarch);
break; break;
/* A lot like LOC_REF_ARG, but the pointer lives directly in a /* A lot like LOC_REF_ARG, but the pointer lives directly in a
@ -703,7 +699,8 @@ gen_var_ref (struct gdbarch *gdbarch, struct agent_expr *ax,
because it's just like any other case where the thing because it's just like any other case where the thing
has a real address. */ has a real address. */
case LOC_REGPARM_ADDR: case LOC_REGPARM_ADDR:
ax_reg (ax, SYMBOL_REGISTER_OPS (var)->register_number (var, gdbarch)); ax_reg (ax,
SYMBOL_REGISTER_OPS (var)->register_number (var, ax->gdbarch));
value->kind = axs_lvalue_memory; value->kind = axs_lvalue_memory;
break; break;
@ -1446,7 +1443,7 @@ gen_struct_ref_recursive (struct agent_expr *ax, struct axs_value *value,
being handled as a global. */ being handled as a global. */
if (field_is_static (&TYPE_FIELD (type, i))) if (field_is_static (&TYPE_FIELD (type, i)))
{ {
gen_static_field (ax->gdbarch, ax, value, type, i); gen_static_field (ax, value, type, i);
if (value->optimized_out) if (value->optimized_out)
error (_("static field `%s' has been " error (_("static field `%s' has been "
"optimized out, cannot use"), "optimized out, cannot use"),
@ -1532,8 +1529,7 @@ gen_maybe_namespace_elt (struct agent_expr *ax, struct axs_value *value,
const struct type *curtype, char *name); const struct type *curtype, char *name);
static void static void
gen_static_field (struct gdbarch *gdbarch, gen_static_field (struct agent_expr *ax, struct axs_value *value,
struct agent_expr *ax, struct axs_value *value,
struct type *type, int fieldno) struct type *type, int fieldno)
{ {
if (TYPE_FIELD_LOC_KIND (type, fieldno) == FIELD_LOC_KIND_PHYSADDR) if (TYPE_FIELD_LOC_KIND (type, fieldno) == FIELD_LOC_KIND_PHYSADDR)
@ -1550,7 +1546,7 @@ gen_static_field (struct gdbarch *gdbarch,
if (sym) if (sym)
{ {
gen_var_ref (gdbarch, ax, value, sym); gen_var_ref (ax, value, sym);
/* Don't error if the value was optimized out, we may be /* Don't error if the value was optimized out, we may be
scanning all static fields and just want to pass over this scanning all static fields and just want to pass over this
@ -1585,7 +1581,7 @@ gen_struct_elt_for_reference (struct agent_expr *ax, struct axs_value *value,
{ {
if (field_is_static (&TYPE_FIELD (t, i))) if (field_is_static (&TYPE_FIELD (t, i)))
{ {
gen_static_field (ax->gdbarch, ax, value, t, i); gen_static_field (ax, value, t, i);
if (value->optimized_out) if (value->optimized_out)
error (_("static field `%s' has been " error (_("static field `%s' has been "
"optimized out, cannot use"), "optimized out, cannot use"),
@ -1643,7 +1639,7 @@ gen_maybe_namespace_elt (struct agent_expr *ax, struct axs_value *value,
if (sym.symbol == NULL) if (sym.symbol == NULL)
return 0; return 0;
gen_var_ref (ax->gdbarch, ax, value, sym.symbol); gen_var_ref (ax, value, sym.symbol);
if (value->optimized_out) if (value->optimized_out)
error (_("`%s' has been optimized out, cannot use"), error (_("`%s' has been optimized out, cannot use"),
@ -1945,7 +1941,7 @@ gen_expr (struct expression *exp, union exp_element **pc,
/* Don't just dispose of the left operand. We might be tracing, /* Don't just dispose of the left operand. We might be tracing,
in which case we want to emit code to trace it if it's an in which case we want to emit code to trace it if it's an
lvalue. */ lvalue. */
gen_traced_pop (ax->gdbarch, ax, &value1); gen_traced_pop (ax, &value1);
gen_expr (exp, pc, ax, value); gen_expr (exp, pc, ax, value);
/* It's the consumer's responsibility to trace the right operand. */ /* It's the consumer's responsibility to trace the right operand. */
break; break;
@ -1961,7 +1957,7 @@ gen_expr (struct expression *exp, union exp_element **pc,
break; break;
case OP_VAR_VALUE: case OP_VAR_VALUE:
gen_var_ref (ax->gdbarch, ax, value, (*pc)[2].symbol); gen_var_ref (ax, value, (*pc)[2].symbol);
if (value->optimized_out) if (value->optimized_out)
error (_("`%s' has been optimized out, cannot use"), error (_("`%s' has been optimized out, cannot use"),
@ -2185,7 +2181,7 @@ gen_expr (struct expression *exp, union exp_element **pc,
if (!sym) if (!sym)
error (_("no `%s' found"), lang->la_name_of_this); error (_("no `%s' found"), lang->la_name_of_this);
gen_var_ref (ax->gdbarch, ax, value, sym); gen_var_ref (ax, value, sym);
if (value->optimized_out) if (value->optimized_out)
error (_("`%s' has been optimized out, cannot use"), error (_("`%s' has been optimized out, cannot use"),
@ -2386,7 +2382,7 @@ gen_trace_for_var (CORE_ADDR scope, struct gdbarch *gdbarch,
ax->tracing = 1; ax->tracing = 1;
ax->trace_string = trace_string; ax->trace_string = trace_string;
gen_var_ref (gdbarch, ax.get (), &value, var); gen_var_ref (ax.get (), &value, var);
/* If there is no actual variable to trace, flag it by returning /* If there is no actual variable to trace, flag it by returning
an empty agent expression. */ an empty agent expression. */
@ -2394,7 +2390,7 @@ gen_trace_for_var (CORE_ADDR scope, struct gdbarch *gdbarch,
return agent_expr_up (); return agent_expr_up ();
/* Make sure we record the final object, and get rid of it. */ /* Make sure we record the final object, and get rid of it. */
gen_traced_pop (gdbarch, ax.get (), &value); gen_traced_pop (ax.get (), &value);
/* Oh, and terminate. */ /* Oh, and terminate. */
ax_simple (ax.get (), aop_end); ax_simple (ax.get (), aop_end);
@ -2425,7 +2421,7 @@ gen_trace_for_expr (CORE_ADDR scope, struct expression *expr,
gen_expr (expr, &pc, ax.get (), &value); gen_expr (expr, &pc, ax.get (), &value);
/* Make sure we record the final object, and get rid of it. */ /* Make sure we record the final object, and get rid of it. */
gen_traced_pop (expr->gdbarch, ax.get (), &value); gen_traced_pop (ax.get (), &value);
/* Oh, and terminate. */ /* Oh, and terminate. */
ax_simple (ax.get (), aop_end); ax_simple (ax.get (), aop_end);
@ -2473,7 +2469,7 @@ gen_trace_for_return_address (CORE_ADDR scope, struct gdbarch *gdbarch,
gdbarch_gen_return_address (gdbarch, ax.get (), &value, scope); gdbarch_gen_return_address (gdbarch, ax.get (), &value, scope);
/* Make sure we record the final object, and get rid of it. */ /* Make sure we record the final object, and get rid of it. */
gen_traced_pop (gdbarch, ax.get (), &value); gen_traced_pop (ax.get (), &value);
/* Oh, and terminate. */ /* Oh, and terminate. */
ax_simple (ax.get (), aop_end); ax_simple (ax.get (), aop_end);

View File

@ -3018,10 +3018,11 @@ get_ax_pc (void *baton)
void void
dwarf2_compile_expr_to_ax (struct agent_expr *expr, struct axs_value *loc, dwarf2_compile_expr_to_ax (struct agent_expr *expr, struct axs_value *loc,
struct gdbarch *arch, unsigned int addr_size, unsigned int addr_size, const gdb_byte *op_ptr,
const gdb_byte *op_ptr, const gdb_byte *op_end, const gdb_byte *op_end,
struct dwarf2_per_cu_data *per_cu) struct dwarf2_per_cu_data *per_cu)
{ {
gdbarch *arch = expr->gdbarch;
int i; int i;
std::vector<int> dw_labels, patches; std::vector<int> dw_labels, patches;
const gdb_byte * const base = op_ptr; const gdb_byte * const base = op_ptr;
@ -3297,7 +3298,7 @@ dwarf2_compile_expr_to_ax (struct agent_expr *expr, struct axs_value *loc,
&datastart, &datalen); &datastart, &datalen);
op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset); op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
dwarf2_compile_expr_to_ax (expr, loc, arch, addr_size, datastart, dwarf2_compile_expr_to_ax (expr, loc, addr_size, datastart,
datastart + datalen, per_cu); datastart + datalen, per_cu);
if (loc->kind == axs_lvalue_register) if (loc->kind == axs_lvalue_register)
require_rvalue (expr, loc); require_rvalue (expr, loc);
@ -3523,8 +3524,8 @@ dwarf2_compile_expr_to_ax (struct agent_expr *expr, struct axs_value *loc,
{ {
/* Another expression. */ /* Another expression. */
ax_const_l (expr, text_offset); ax_const_l (expr, text_offset);
dwarf2_compile_expr_to_ax (expr, loc, arch, addr_size, dwarf2_compile_expr_to_ax (expr, loc, addr_size, cfa_start,
cfa_start, cfa_end, per_cu); cfa_end, per_cu);
} }
loc->kind = axs_lvalue_memory; loc->kind = axs_lvalue_memory;
@ -3648,9 +3649,8 @@ dwarf2_compile_expr_to_ax (struct agent_expr *expr, struct axs_value *loc,
/* DW_OP_call_ref is currently not supported. */ /* DW_OP_call_ref is currently not supported. */
gdb_assert (block.per_cu == per_cu); gdb_assert (block.per_cu == per_cu);
dwarf2_compile_expr_to_ax (expr, loc, arch, addr_size, dwarf2_compile_expr_to_ax (expr, loc, addr_size, block.data,
block.data, block.data + block.size, block.data + block.size, per_cu);
per_cu);
} }
break; break;
@ -4407,8 +4407,8 @@ locexpr_describe_location (struct symbol *symbol, CORE_ADDR addr,
any necessary bytecode in AX. */ any necessary bytecode in AX. */
static void static void
locexpr_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch, locexpr_tracepoint_var_ref (struct symbol *symbol, struct agent_expr *ax,
struct agent_expr *ax, struct axs_value *value) struct axs_value *value)
{ {
struct dwarf2_locexpr_baton *dlbaton struct dwarf2_locexpr_baton *dlbaton
= (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (symbol); = (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (symbol);
@ -4417,9 +4417,8 @@ locexpr_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch,
if (dlbaton->size == 0) if (dlbaton->size == 0)
value->optimized_out = 1; value->optimized_out = 1;
else else
dwarf2_compile_expr_to_ax (ax, value, gdbarch, addr_size, dwarf2_compile_expr_to_ax (ax, value, addr_size, dlbaton->data,
dlbaton->data, dlbaton->data + dlbaton->size, dlbaton->data + dlbaton->size, dlbaton->per_cu);
dlbaton->per_cu);
} }
/* symbol_computed_ops 'generate_c_location' method. */ /* symbol_computed_ops 'generate_c_location' method. */
@ -4615,8 +4614,8 @@ loclist_describe_location (struct symbol *symbol, CORE_ADDR addr,
/* Describe the location of SYMBOL as an agent value in VALUE, generating /* Describe the location of SYMBOL as an agent value in VALUE, generating
any necessary bytecode in AX. */ any necessary bytecode in AX. */
static void static void
loclist_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch, loclist_tracepoint_var_ref (struct symbol *symbol, struct agent_expr *ax,
struct agent_expr *ax, struct axs_value *value) struct axs_value *value)
{ {
struct dwarf2_loclist_baton *dlbaton struct dwarf2_loclist_baton *dlbaton
= (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (symbol); = (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (symbol);
@ -4628,7 +4627,7 @@ loclist_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch,
if (size == 0) if (size == 0)
value->optimized_out = 1; value->optimized_out = 1;
else else
dwarf2_compile_expr_to_ax (ax, value, gdbarch, addr_size, data, data + size, dwarf2_compile_expr_to_ax (ax, value, addr_size, data, data + size,
dlbaton->per_cu); dlbaton->per_cu);
} }

View File

@ -270,7 +270,6 @@ extern const struct symbol_block_ops dwarf2_block_frame_base_loclist_funcs;
extern void dwarf2_compile_expr_to_ax (struct agent_expr *expr, extern void dwarf2_compile_expr_to_ax (struct agent_expr *expr,
struct axs_value *loc, struct axs_value *loc,
struct gdbarch *arch,
unsigned int addr_size, unsigned int addr_size,
const gdb_byte *op_ptr, const gdb_byte *op_ptr,
const gdb_byte *op_end, const gdb_byte *op_end,

View File

@ -663,8 +663,8 @@ struct symbol_computed_ops
the caller will generate the right code in the process of the caller will generate the right code in the process of
treating this as an lvalue or rvalue. */ treating this as an lvalue or rvalue. */
void (*tracepoint_var_ref) (struct symbol *symbol, struct gdbarch *gdbarch, void (*tracepoint_var_ref) (struct symbol *symbol, struct agent_expr *ax,
struct agent_expr *ax, struct axs_value *value); struct axs_value *value);
/* Generate C code to compute the location of SYMBOL. The C code is /* Generate C code to compute the location of SYMBOL. The C code is
emitted to STREAM. GDBARCH is the current architecture and PC is emitted to STREAM. GDBARCH is the current architecture and PC is