mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-12 03:43:33 +08:00
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:
parent
e661ef01e5
commit
fe01123efb
@ -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
|
||||
|
@ -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"));
|
||||
|
||||
|
@ -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 ();
|
||||
}
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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 ())
|
||||
|
Loading…
Reference in New Issue
Block a user