From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 39938 invoked by alias); 4 Sep 2019 17:58:47 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 39929 invoked by uid 89); 4 Sep 2019 17:58:46 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-16.0 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_HELO_PASS autolearn=ham version=3.3.1 spammy=msgid, 8407, 8187 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 04 Sep 2019 17:58:45 +0000 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A2045878E43; Wed, 4 Sep 2019 17:58:43 +0000 (UTC) Received: from localhost (unused-10-15-17-196.yyz.redhat.com [10.15.17.196]) by smtp.corp.redhat.com (Postfix) with ESMTP id 756496092F; Wed, 4 Sep 2019 17:58:43 +0000 (UTC) From: Sergio Durigan Junior To: Alan Hayward Cc: "gdb-patches\@sourceware.org" , nd Subject: Re: [PATCH v2 2/3] Use gdbarch for probe::get_argument_count References: <20190821155816.45504-1-alan.hayward@arm.com> <20190821155816.45504-3-alan.hayward@arm.com> Date: Wed, 04 Sep 2019 17:58:00 -0000 In-Reply-To: <20190821155816.45504-3-alan.hayward@arm.com> (Alan Hayward's message of "Wed, 21 Aug 2019 15:58:21 +0000") Message-ID: <87blw0t031.fsf@redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes X-SW-Source: 2019-09/txt/msg00031.txt.bz2 On Wednesday, August 21 2019, Alan Hayward wrote: > 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. The patch looks good at first glance, but I'd like to apply it before approving. Unfortunately, it seems like your MUA has mangled the message (which is strange, because apparently you're using git-send-email): Can you resend it, please? > gdb/ChangeLog: > > 2019-08-21 Alan Hayward > > * 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) -- Sergio GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36 Please send encrypted e-mail if possible http://sergiodj.net/