mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-04 15:54:25 +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>
|
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
|
||||||
|
@ -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"));
|
||||||
|
|
||||||
|
@ -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 ();
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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 ())
|
||||||
|
Loading…
Reference in New Issue
Block a user