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> 2019-09-02 Alan Hayward <alan.hayward@arm.com>
* solib-svr4.c (svr4_find_and_create_probe_breakpoints): Move * 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")) && pc_probe.prob->get_name () != "rethrow"))
error (_("not stopped at a C++ exception catchpoint")); 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) if (n_args < 2)
error (_("C++ exception catchpoint has too few arguments")); error (_("C++ exception catchpoint has too few arguments"));

View File

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

View File

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

View File

@ -131,7 +131,7 @@ public:
/* Return the number of arguments of the probe. This function can /* Return the number of arguments of the probe. This function can
throw an exception. */ 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 /* Return 1 if the probe interface can evaluate the arguments of
probe, zero otherwise. See the comments on 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) */ arg2: struct link_map *new (optional, for incremental updates) */
try 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) catch (const gdb_exception_error &ex)
{ {

View File

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