Use gdbarch for probe::get_argument_count

The probe function get_argument_count does not need a frame, only
the current gdbarch.  Switch the code to pass gdbarch instead.
No functional changes.

gdb/ChangeLog:

	* break-catch-throw.c (fetch_probe_arguments): Use gdbarch.
	* dtrace-probe.c (dtrace_probe::get_argument_count): Likewise.
	* probe.c (probe_safe_evaluate_at_pc) (compute_probe_arg)
	(compile_probe_arg): Likewise.
	* probe.h (get_argument_count): Likewise.
	* solib-svr4.c (solib_event_probe_action): Likewise.
	* stap-probe.c (stap_probe::get_argument_count): Likewise.
This commit is contained in:
Alan Hayward 2019-08-21 15:24:02 +01:00
parent e661ef01e5
commit fe01123efb
7 changed files with 20 additions and 13 deletions

View File

@ -1,3 +1,13 @@
2019-09-02 Alan Hayward <alan.hayward@arm.com>
* break-catch-throw.c (fetch_probe_arguments): Use gdbarch.
* dtrace-probe.c (dtrace_probe::get_argument_count): Likewise.
* probe.c (probe_safe_evaluate_at_pc) (compute_probe_arg)
(compile_probe_arg): Likewise.
* probe.h (get_argument_count): Likewise.
* solib-svr4.c (solib_event_probe_action): Likewise.
* stap-probe.c (stap_probe::get_argument_count): Likewise.
2019-09-02 Alan Hayward <alan.hayward@arm.com>
* solib-svr4.c (svr4_find_and_create_probe_breakpoints): Move

View File

@ -115,7 +115,7 @@ fetch_probe_arguments (struct value **arg0, struct value **arg1)
&& pc_probe.prob->get_name () != "rethrow"))
error (_("not stopped at a C++ exception catchpoint"));
n_args = pc_probe.prob->get_argument_count (frame);
n_args = pc_probe.prob->get_argument_count (get_frame_arch (frame));
if (n_args < 2)
error (_("C++ exception catchpoint has too few arguments"));

View File

@ -122,7 +122,7 @@ public:
CORE_ADDR get_relocated_address (struct objfile *objfile) override;
/* See probe.h. */
unsigned get_argument_count (struct frame_info *frame) override;
unsigned get_argument_count (struct gdbarch *gdbarch) override;
/* See probe.h. */
bool can_evaluate_arguments () const override;
@ -693,7 +693,7 @@ dtrace_probe::get_relocated_address (struct objfile *objfile)
/* Implementation of the get_argument_count method. */
unsigned
dtrace_probe::get_argument_count (struct frame_info *frame)
dtrace_probe::get_argument_count (struct gdbarch *gdbarch)
{
return m_args.size ();
}

View File

@ -695,7 +695,7 @@ probe_safe_evaluate_at_pc (struct frame_info *frame, unsigned n)
if (!probe.prob)
return NULL;
n_args = probe.prob->get_argument_count (frame);
n_args = probe.prob->get_argument_count (get_frame_arch (frame));
if (n >= n_args)
return NULL;
@ -818,7 +818,7 @@ compute_probe_arg (struct gdbarch *arch, struct internalvar *ivar,
if (pc_probe.prob == NULL)
error (_("No probe at PC %s"), core_addr_to_string (pc));
n_args = pc_probe.prob->get_argument_count (frame);
n_args = pc_probe.prob->get_argument_count (arch);
if (sel == -1)
return value_from_longest (builtin_type (arch)->builtin_int, n_args);
@ -840,7 +840,6 @@ compile_probe_arg (struct internalvar *ivar, struct agent_expr *expr,
int sel = (int) (uintptr_t) data;
struct bound_probe pc_probe;
int n_args;
struct frame_info *frame = get_selected_frame (NULL);
/* SEL == -1 means "_probe_argc". */
gdb_assert (sel >= -1);
@ -849,7 +848,7 @@ compile_probe_arg (struct internalvar *ivar, struct agent_expr *expr,
if (pc_probe.prob == NULL)
error (_("No probe at PC %s"), core_addr_to_string (pc));
n_args = pc_probe.prob->get_argument_count (frame);
n_args = pc_probe.prob->get_argument_count (expr->gdbarch);
if (sel == -1)
{

View File

@ -131,7 +131,7 @@ public:
/* Return the number of arguments of the probe. This function can
throw an exception. */
virtual unsigned get_argument_count (struct frame_info *frame) = 0;
virtual unsigned get_argument_count (struct gdbarch *gdbarch) = 0;
/* Return 1 if the probe interface can evaluate the arguments of
probe, zero otherwise. See the comments on

View File

@ -1756,7 +1756,7 @@ solib_event_probe_action (struct probe_and_action *pa)
arg2: struct link_map *new (optional, for incremental updates) */
try
{
probe_argc = pa->prob->get_argument_count (frame);
probe_argc = pa->prob->get_argument_count (get_frame_arch (frame));
}
catch (const gdb_exception_error &ex)
{

View File

@ -136,7 +136,7 @@ public:
CORE_ADDR get_relocated_address (struct objfile *objfile) override;
/* See probe.h. */
unsigned get_argument_count (struct frame_info *frame) override;
unsigned get_argument_count (struct gdbarch *gdbarch) override;
/* See probe.h. */
bool can_evaluate_arguments () const override;
@ -1301,10 +1301,8 @@ stap_probe::get_relocated_address (struct objfile *objfile)
argument string. */
unsigned
stap_probe::get_argument_count (struct frame_info *frame)
stap_probe::get_argument_count (struct gdbarch *gdbarch)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
if (!m_have_parsed_args)
{
if (this->can_evaluate_arguments ())