This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH v2 2/3] Use gdbarch for probe::get_argument_count
- From: Alan Hayward <Alan dot Hayward at arm dot com>
- To: "gdb-patches at sourceware dot org" <gdb-patches at sourceware dot org>
- Cc: nd <nd at arm dot com>, Alan Hayward <Alan dot Hayward at arm dot com>
- Date: Wed, 21 Aug 2019 15:58:21 +0000
- Subject: [PATCH v2 2/3] Use gdbarch for probe::get_argument_count
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=V9+GmjDCiwza0xPjkR0Op8lwZ4pWHxxy5OGLBgKh4FU=; b=SBH5lxstWDvOoTAZ8xap/liYQEiLXZ/glvq/VlQVbzd1rkjqCLynQ6u22xv4932rbPOHRnmwA55nKHLMrq/AxoodHnfYisxLuLaQpJ3ljSH8/d0cNmaRnC1pEPafc1xZUftedLyY5M/RJUSeXM+pxeLoIpgiEJoBNVyC7jIc0p86aKFZugEflnh7i+epxsg9RZOMh5meIz7CnzDFsvIFKS4047sBvB8Es8SwrqopWpPPjp+7kFCDIRDWmp85HDX6yFOljehSbMSH48CsIE7JzuGzcuFUBEN2uq2GOFvxL8uqNo/voxbwzzLJ68mtSmp1SqhrMS80nMUgIXfIfEKIyg==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YJbGE1gndbI1CscAiFgS6rNjUbbeDtNo6Jg5BrVOpHQGviiTs5le1btgdzTSWjwxLDZSlYbPs3tU4Nj/qow8BmmVUFWucZ9fgQ7iOyVnNMdWb2pU6d3wIi0RrSg61kxTagpoEWVzwu8z1DkUzqOz/8nYoxFKZOJ7x/+WTtiK7B3EZLUov2YirxqM6lOYi1Sl2baoWVTvU2voqErU32t84InuWzIZchtTHRYCyGKh6AaUF+n9uuyxCt7MgW3KzEIUF3uwDecJuB5pXyDfazpMIb4rAr4CKMAsPZzVD/tnvZ+Q8z/fvxN4KN2lC1BZW71UgEMYTwuHrLXDCwRw6OVlQQ==
- Original-authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alan dot Hayward at arm dot com;
- References: <20190821155816.45504-1-alan.hayward@arm.com>
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:
2019-08-21 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.
---
gdb/break-catch-throw.c | 2 +-
gdb/dtrace-probe.c | 4 ++--
gdb/probe.c | 7 +++----
gdb/probe.h | 2 +-
gdb/solib-svr4.c | 2 +-
gdb/stap-probe.c | 6 ++----
6 files changed, 10 insertions(+), 13 deletions(-)
diff --git a/gdb/break-catch-throw.c b/gdb/break-catch-throw.c
index 0677a55ee5..2c2a3b7d72 100644
--- a/gdb/break-catch-throw.c
+++ b/gdb/break-catch-throw.c
@@ -113,7 +113,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"));
diff --git a/gdb/dtrace-probe.c b/gdb/dtrace-probe.c
index 2d92edb11c..e9e71fd4c9 100644
--- a/gdb/dtrace-probe.c
+++ b/gdb/dtrace-probe.c
@@ -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 ();
}
diff --git a/gdb/probe.c b/gdb/probe.c
index cdc6e021d2..8b108d6b02 100644
--- a/gdb/probe.c
+++ b/gdb/probe.c
@@ -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)
{
diff --git a/gdb/probe.h b/gdb/probe.h
index 8abf69e354..7410c5aadf 100644
--- a/gdb/probe.h
+++ b/gdb/probe.h
@@ -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
diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
index b21eacb68f..2a44dd6985 100644
--- a/gdb/solib-svr4.c
+++ b/gdb/solib-svr4.c
@@ -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)
{
diff --git a/gdb/stap-probe.c b/gdb/stap-probe.c
index b6de873d2c..700b657967 100644
--- a/gdb/stap-probe.c
+++ b/gdb/stap-probe.c
@@ -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 ())
--
2.20.1 (Apple Git-117)